<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Filter in der Edit Box]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe in kleines Programm geschrieben wo ich mit Slidern Werte veränder, die in einer Edit Box angezeigt werden. Wenn ich einen Wert in die Edit Box schreibe, ändert sich natürlich auch die Position des Sliders. Es ist zwar alles &quot;idiotensicher&quot; aber schön wäre es wenn man in der Edit Box nur bestimmt Werte zulässt.<br />
Zum Beispiel wär es nicht schlecht, wenn er auf Buchstabentasten gar nicht erst reagiert. Er sollte nur Eingaben zwischen 0 und 9 zulassen. Und wenn wir schonmal dabei sind: wenn der Slider als max. Wert beispielsweise 200 hat, wär es doch sicher gut wenn ich die 300 eingebe dann automatisch 200 da steht.</p>
<p>bin für alle Tips dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/179669/filter-in-der-edit-box</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 03:47:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/179669.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Apr 2007 11:20:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Filter in der Edit Box on Tue, 24 Apr 2007 11:20:07 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe in kleines Programm geschrieben wo ich mit Slidern Werte veränder, die in einer Edit Box angezeigt werden. Wenn ich einen Wert in die Edit Box schreibe, ändert sich natürlich auch die Position des Sliders. Es ist zwar alles &quot;idiotensicher&quot; aber schön wäre es wenn man in der Edit Box nur bestimmt Werte zulässt.<br />
Zum Beispiel wär es nicht schlecht, wenn er auf Buchstabentasten gar nicht erst reagiert. Er sollte nur Eingaben zwischen 0 und 9 zulassen. Und wenn wir schonmal dabei sind: wenn der Slider als max. Wert beispielsweise 200 hat, wär es doch sicher gut wenn ich die 300 eingebe dann automatisch 200 da steht.</p>
<p>bin für alle Tips dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272317</guid><dc:creator><![CDATA[McFanatic]]></dc:creator><pubDate>Tue, 24 Apr 2007 11:20:07 GMT</pubDate></item><item><title><![CDATA[Reply to Filter in der Edit Box on Tue, 24 Apr 2007 11:43:28 GMT]]></title><description><![CDATA[<p>am besten du faengst die OnEnChange ab, und dort erfaehrst du dann immer sobald das gedrueckt wurde - mach es doch einfach so das du jedes zeichen direkt nach der eingabe holst und dann fals noetig editierst, bei einen buchstaben zb loeschst du diesen sofort wieder usw</p>
<p>aber es gab da noch ein WS style fuer die edit box beim create, die glaub ich auch nur zahlen zuliess, bin da aber grad nicht sicher</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272335</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Tue, 24 Apr 2007 11:43:28 GMT</pubDate></item><item><title><![CDATA[Reply to Filter in der Edit Box on Tue, 24 Apr 2007 12:25:47 GMT]]></title><description><![CDATA[<p>Hier wieder mein Lieblingstipp: <a href="http://www.codeproject.com/editctrl/validatingedit.asp" rel="nofollow">http://www.codeproject.com/editctrl/validatingedit.asp</a><br />
Da kann man sich was abgucken. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Für das 0-9 kannst du aber auch einfach die Maximallänge auf 1 festsetzen und nur Zahlen zulassen. Das ist einfacher. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272392</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Tue, 24 Apr 2007 12:25:47 GMT</pubDate></item><item><title><![CDATA[Reply to Filter in der Edit Box on Wed, 25 Apr 2007 07:36:58 GMT]]></title><description><![CDATA[<p>Danke für den Link, schau ich mir gleich mal an.</p>
<p>Das mit der Maximallänge klingt ganz gut. allerdings will ich von 0-200 die werte eingeben können. wenn ich 2-0-1 eintrage soll er anstatt der 1 die 0 eintragen.</p>
<p>ich dachte da an einen unkomplizierten weg per if - schleife. (komme aus der ansi - c welt und kenn mich in visual so fast gar nicht aus - noch nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> )<br />
nur zahlen zulassen ist schonmal nicht verkehrt und dann wollte ich sowas wie:</p>
<p>if(wert &gt; 200)<br />
wert = 200;</p>
<p>und gut ist.<br />
geht das so? und kann mir einer kurz erklären wie ich nur zahlen als eingabe zulasse?</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272950</guid><dc:creator><![CDATA[McFanatic]]></dc:creator><pubDate>Wed, 25 Apr 2007 07:36:58 GMT</pubDate></item><item><title><![CDATA[Reply to Filter in der Edit Box on Wed, 25 Apr 2007 08:19:53 GMT]]></title><description><![CDATA[<p>McFanatic schrieb:</p>
<blockquote>
<p>Das mit der Maximallänge klingt ganz gut. allerdings will ich von 0-200 die werte eingeben können. wenn ich 2-0-1 eintrage soll er anstatt der 1 die 0 eintragen.</p>
</blockquote>
<p>Das würde ich erst machen wenn das Control verlassen wird.</p>
<p>McFanatic schrieb:</p>
<blockquote>
<p>und kann mir einer kurz erklären wie ich nur zahlen als eingabe zulasse?</p>
</blockquote>
<p>Den Stil ES_NUMBER für das Edit Control setzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272978</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 25 Apr 2007 08:19:53 GMT</pubDate></item><item><title><![CDATA[Reply to Filter in der Edit Box on Wed, 25 Apr 2007 08:27:08 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>das mit den nummern war denkbar einfach. hätte ich durch probieren aber auch selber drauf kommen müssen.</p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272980</guid><dc:creator><![CDATA[McFanatic]]></dc:creator><pubDate>Wed, 25 Apr 2007 08:27:08 GMT</pubDate></item><item><title><![CDATA[Reply to Filter in der Edit Box on Tue, 31 Jul 2007 14:31:26 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich möchte das Thema gerne wieder warm machen und ein wenig erweitern.<br />
Wir sprechen über folgenden Code:</p>
<pre><code class="language-cpp">void CComCentralOneView::OnRead() 
{
	CSerial serialSend;										// sendes des Identifiers
	serialSend.Open(1,19200,8,NOPARITY,ONESTOPBIT);			// Port öffnen
	serialSend.SendData(&quot;#&quot;, 1);							// ID = &quot;#&quot;
	serialSend.Close();										// Port schließen

	CSerial serialRead;										// emfangen der Daten
    if (serialRead.Open(1,19200,8,NOPARITY,ONESTOPBIT))		// Port öffnen
    {
		int receivedData = 0; 
		char* lpBuffer = new char[8];						// Größe des Puffers festlegen

		receivedData = serialRead.ReadData(lpBuffer, 16);	// int = anzahl der max. einzulesenen Werte
		cout &lt;&lt; lpBuffer; 

		char EEPROM_Inhalt[8];							// Ausgabe ...
		strcpy(EEPROM_Inhalt, lpBuffer);						// der ...
//	if ((EEPROM_Inhalt == &quot;F&quot;) || (EEPROM_Inhalt == &quot;1&quot;) || (EEPROM_Inhalt == &quot;3&quot;)){
		m_strEEPROM = EEPROM_Inhalt;							// Daten

		m_strStatusMsg = &quot;Daten wurden erfolgreich ausgelesen!&quot;;
//		}
	}
	serialRead.Close();										// Port schließen	
}
</code></pre>
<p>Nun Übertrage ich Daten per Serielle Schnittstelle und geben, diese im Editfentser aus. Nun kommt es leider zum Rauschen auf der Leitung oder ähnlichen, jedenfalls kommen mehr Daten an, als ich eigentlich haben will. Ich würde daher gernen einen Filter einbauen, der nur folgende Zeichen zulässt: (F, -, , 1, 2, 3, 4, 5, 6, 7, 8, 9, 0). Der erste Versuch mit einer einfachen if-Schleife schlug leider fehl. Könnt ihr mit Tipps geben, wie ich das am besten anstelle?</p>
<p>Vielen Dank</p>
<p>PS: Wenns am Code selber noch verbesserungswünsch gibt, immer raus damit. Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1335861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1335861</guid><dc:creator><![CDATA[McFanatic]]></dc:creator><pubDate>Tue, 31 Jul 2007 14:31:26 GMT</pubDate></item><item><title><![CDATA[Reply to Filter in der Edit Box on Tue, 31 Jul 2007 16:57:23 GMT]]></title><description><![CDATA[<p>wie Martin Richter schon sagte, kann ein Edit-Eingabefeld auf nummerische<br />
Eingabe begrenzt werden, denn Wertebereich, kannst Du über einen Dialog oder<br />
Messagebox dem User mitteilen, wenn er diesen überschreitet.</p>
<p>z.B</p>
<p>In diesem Feld sind nur Werte zwischen 1 und 200 zulässig, bitte korrektieren<br />
sie den eingebenen Wert auf den entsprechenden Wertebereich.</p>
<p>Turmfalke64</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1335998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1335998</guid><dc:creator><![CDATA[Turmfalke64]]></dc:creator><pubDate>Tue, 31 Jul 2007 16:57:23 GMT</pubDate></item><item><title><![CDATA[Reply to Filter in der Edit Box on Wed, 01 Aug 2007 06:23:10 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>nee also das edit fenster ist nicht beschreibbar (read only). Ich hab das mit den Nummern schon versucht, aber das geht wie du auch sagtest nur für die Eingabe. Ausgeben tut er trotzdem mehr.</p>
<p>Des Weiteren darf ich mich nicht nur auf Zahlen beschränken. Super wäre wenn man einzelne Buchstaben und Zeichen zulassen könnte, bei der Ausgabe.</p>
<p>Ich dachte mir da irgendwie den Inhalt des Array´s vor der Übergabe an m_strEEPROM zu überprüfen und dort zu filtern.</p>
<p>Noch weitere Ideen?</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1336244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1336244</guid><dc:creator><![CDATA[McFanatic]]></dc:creator><pubDate>Wed, 01 Aug 2007 06:23:10 GMT</pubDate></item><item><title><![CDATA[Reply to Filter in der Edit Box on Wed, 01 Aug 2007 09:01:45 GMT]]></title><description><![CDATA[<p>Vielleicht in PreTranslateMessage() die WM_KEYDOWN Nachrichten des Controls abfangen und &quot;falsche&quot; Zeichen ignorieren. Ggfs. reicht evtl. auch das überschreiben von OnChar(). Ob es das &quot;richtige&quot; Fenster ist, kannst Du mit GetFocus()-&gt;GetDlgCtrlID() == IDC_BLABLA feststellen. Alle Angaben aber einfach so aus dem Gedächtnis ohne Garantie auf Korrektheit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1336330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1336330</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Wed, 01 Aug 2007 09:01:45 GMT</pubDate></item><item><title><![CDATA[Reply to Filter in der Edit Box on Wed, 01 Aug 2007 10:34:44 GMT]]></title><description><![CDATA[<p>McFanatic schrieb:</p>
<blockquote>
<p>Nun kommt es leider zum Rauschen auf der Leitung oder ähnlichen, jedenfalls kommen mehr Daten an, als ich eigentlich haben will. Ich würde daher gernen einen Filter einbauen, der nur folgende Zeichen zulässt: (F, -, , 1, 2, 3, 4, 5, 6, 7, 8, 9, 0). Der erste Versuch mit einer einfachen if-Schleife schlug leider fehl. Könnt ihr mit Tipps geben, wie ich das am besten anstelle?</p>
</blockquote>
<p>Du solltest mal deine Schnittstellenleitung überprüfen. Einfach Daten durchlassen die vermeindlich eine Zahl sein könnten ist der falsche Ansatz. Was ist wenn die Störpegel so groß sind das du durchs was auch immer am Eingang meinst eine Zahl zu erkennen, die dort gar nicht hingesendet wurde?<br />
Du verwendest sicher die Klasse CSerial von <a href="http://www.codeproject.com" rel="nofollow">www.codeproject.com</a><br />
Warum nimmst du nicht die MFC-Variante (CSerialMFC)? Da kannst du gleich in dem char-Array der Klasse aussieben (wenn du das wirklich so machen willst).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1336403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1336403</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Wed, 01 Aug 2007 10:34:44 GMT</pubDate></item><item><title><![CDATA[Reply to Filter in der Edit Box on Thu, 02 Aug 2007 06:40:57 GMT]]></title><description><![CDATA[<p>Hallo und danke für die Hinweise</p>
<p>Es stimmt, ich benutze die Klasse CSerial, weiss jetzt aber auch nicht mehr warum ich damals nicht die MFC Variante genommen habe. Wenn diese besser ein soll, werd ich aber mal schaun ob ich die nicht schnell tauschen kann.</p>
<p>Bei den Störpegeln hast du sicherlich auch recht, aber ich übertrage so immernoch mehr daten als eigentlich nötig und das ist an sich nicht verkehrt, da nichts verloren geht. Ich sehe aber in den unzähligen Versuchen, das die Störsignale eigentlich meist Zeichen und Symbole sind, die ich nichtmal auf meiner Tastatur habe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> . Ich dachte mir das die Chance das eine Zahl zu viel übertragen und angenommen wird da sehr gering ist.</p>
<p>Fakt ist, ich brauchen einen Filter. Kann ich denn mit meiner Klasse nicht auch das Array vorher auf Inhalt überprüfen und nur gewünschtes Material durchlassen? Was genau ist es da an der MFC CSerial anders?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9007">@jencas</a>: ich bin nicht so fit was vc++ angeht, aber bist du dir sicher das wir von der gleichen Sache reden? WM_KEYDOWN klingt irgendwie nach Tastatureingabe und das mache ich nicht. Ich empfange Daten über die serielle Schnittstelle und stell sie in einem read-only edit fenster dar.</p>
<p>danke und gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1337002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1337002</guid><dc:creator><![CDATA[McFanatic]]></dc:creator><pubDate>Thu, 02 Aug 2007 06:40:57 GMT</pubDate></item><item><title><![CDATA[Reply to Filter in der Edit Box on Thu, 02 Aug 2007 08:26:27 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">LRESULT CDeinView::OnSerialMsg(WPARAM wParam, LPARAM lParam)
{

	const CSerialMFC::EEvent eEvent = CSerialMFC::EEvent(LOWORD(wParam));
	const CSerialMFC::EError eError = CSerialMFC::EError(HIWORD(wParam));

	if (eError)
		AfxMessageBox(&quot;Es ist ein interner Fehler aufgetreten!&quot;,MB_OK);

	//weitere Fehlerbehandlung siehe Doku

	if (eEvent &amp; CSerial::EEventRecv)
	{
		DWORD dwBytesRead = 0;
		BYTE  abBuffer[100];
		do
		{
			// Read data from the COM-port
			m_serial.Read(abBuffer,sizeof(abBuffer),&amp;dwBytesRead);
			abBuffer[dwBytesRead] = '\0';
		} while (dwBytesRead == sizeof(abBuffer));

		//ab hier steht dir abBuffer zur freien Verfügung
		// hier kannst du weiter Manupulationen durchführen

	}

	return 0;
}
</code></pre>
<p>Du musst nur aufpassen: es kommt nach jeder Übertragung glaub ich noch ein &lt;CR&gt; &lt;LF&gt;, was als neue Message OnSerialMsg angesehen wird. In diesem Fall ist abBuffer leer. Ich hab das abgefangen indem ich abBuffer in einen CString kopiere und diesen zur weiteren Verwendung freigebe, wenn dessen Länge &gt;0 ist.<br />
Was deine Störpegel angeht: nach der Signaltheorie ist die Störquellenvermeidung immer besser wie eine Filterung. Solltest du mal deine Software validieren müssen (damit schlag ich mich grad rum) geht so was nicht so leicht durch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1337077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1337077</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Thu, 02 Aug 2007 08:26:27 GMT</pubDate></item></channel></rss>