Edit Feld auf Leerzeichen durchsuchen



  • Beispielprogramm:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
    	string str = "String mit den Leerzeichen.";
    
    	for(int i=0, n=(int)str.length(); i < n; ++i)
    		if(str.at(i) == ' ')
    			str[i] = '\n';
    
    	cout << str << endl;
    
    	return 0;
    }
    


  • markoj schrieb:

    hat jmd. evtl. nen beispiel quellcode?

    Zeig doch lieber mal deinen bisherigen Versuch.



  • die bisherigen versuche waren nur schnippsel aus anderen beiträgen aber der quellcode oben bringt mich auch nicht wirklich weiter.



  • markoj schrieb:

    die bisherigen versuche waren nur schnippsel aus anderen beiträgen aber der quellcode oben bringt mich auch nicht wirklich weiter.

    Na ja, es wäre schon hilfreich, wenn du diese Schnipsel mal zeigen und beschreiben würdest, was genau da nicht funktioniert hat. JustSomeCoder's Beispiel zeigt dir doch genau, wie du Leerzeichen durch Newlines ersetzen kannst. Klappt bei dir das Lesen/Setzen bei den Controls nicht oder was ist jetzt noch das Problem?



  • Hallo miteinander,
    ich hab ne kurze Frage: Wie kann ich den eingegebenen Text im Editfeld parsen.
    Hab mit strstr(Text,Such); versucht, hat aber nicht hingehauen. Gibt ne Fehlermeldung aus ("strstr from incompatible pointer type")

    MfG

    Max



  • -Max- schrieb:

    Hallo miteinander,
    ich hab ne kurze Frage: Wie kann ich den eingegebenen Text im Editfeld parsen.
    Hab mit strstr(Text,Such); versucht, hat aber nicht hingehauen. Gibt ne Fehlermeldung aus ("strstr from incompatible pointer type")

    MfG

    Max

    Welche Typen haben Text und Such denn? Zeig mal Code.



  • hallo _matze die fehlermeldung hab ich weggebracht.
    aus irgen einem grund hab ich die suchvariable als static int und nicht als char deklariert. wahr wohl mit den gedanken irgen wo anders. 🙂
    aber funktioniern tut es trotzdem noch nicht.

    case 1: GetWindowText(hwndEdit2, szText, sizeof(szText));

    char *ergebnis = strstr(szText,text);

    SetWindowText(hwndEdit3,ergebnis);
    SendMessage(hwndEdit3, EM_SETREADONLY, TRUE, 0);

    break;

    der schreibt mir das selbe in das Edit3 wie in Edit 2, und nicht den Inhalt von "text" das ich an "ergebnis eigenlich übergeben will.



  • Hallo,

    strstr gibt einen Zeiger auf die erste Position in szText zurück, an der die Zeichenkette in test beginnt, und damit kann ab dieser Position auch mehr als nur der Inhalt von test erfasst werden. Wenn du den Inhalt (und nur den) von test in Edit3 schreiben willst, dann mach' das doch direkt:

    SetWindowText(hwndEdit3,test);
    

    MfG,

    Probe-Nutzer



  • hallo matze,
    die idee ist ja schön und gut, jedoch muss ich mehrere variable in edit3 zeichnen.
    ich mach eine art tabellenparser. ich gib in Edit2 etwas ein und in Edit3 sollen die einzelnen variablen wo dieser etwas findet eine kleine tabelle einblenden. auf der konsole hat es hingehauen, ich wil aber ne saubere maske haben. 🙂

    hast da ne idee?

    MfG

    Max



  • sry ich mein natürlich Probe-Nutzer 🙂



  • Also wenn du mehrere Variablen/Strings in Edit3 schreiben willst, dann setze sie doch einfach vorher zusammen. Nimm am besten einen std::string dafür, dann sparst du dir das 'Rumhantieren mit strcat, memcpy o.ä. Je nachdem, wie deine 'Tabelle' in Edit3 aussehen soll, ist vielleicht auch eine ListBox die bessere Wahl.

    Übrigens solltest du deine Controls besser benennen (sprechende Namen). Wächst die Zahl, wird's unübersichtlich. Oder weißt du dann auf Anhieb, wofür Edit23 da ist?



  • Wir reden uns da n bisschen aneinander vorbei. 🙂

    Ich hab es eigentlich so gemeint:
    char var1={"Tabelle1"}; Da schreib ich meine Tabelle rein wie du es auch schon gesagt hast .

    char var2={"Tabelle2"}; Nächste tabelle
    char var3={"Tabelle3"}; Nächste tabelle
    char var4={"Tabelle4"}; usw

    dann schreib ich n text in Edit2 rein, nimm mir den text, such diese variablen (Tabellen) und gib die jenige in Edit3 aus, wo es übereinstimmt.



  • und wie gesagt haut des halt mit strstr(); nicht so hin



  • Ok hier mal kurz ein Code zum Parsen des Leerzeichens, gilt für einen '\0' terminierten buffer:

    void ParseBuffer(char *buffer){
    
    	char		*search;
    
    	search = strtok(buffer,"\x32");
    	while(search != NULL){
    /*
    	hier machste dein persönliches Zeugs mit "search"
    */
    		search = strtok(NULL, "\x32");
    	}
    }
    


  • Hallo,
    danke für die schnelle Antwort habs folgendermaßen gemacht:

    char text[] = {'H','a','l','l','o','\0'};
    char *buffer;
    char *search;

    case WM_COMMAND:

    {
    switch(LOWORD(wParam))
    {

    case 1: GetWindowText(hwndEdit2, buffer, sizeof(buffer));

    void ParseBuffer(char *buffer){

    search = strtok(buffer,text);

    while(search!=NULL)
    {
    SetWindowText(hwndEdit3,search);
    SendMessage(hwndEdit3, EM_SETREADONLY, TRUE, 0);

    search= strtok(NULL, text);

    }
    }
    break;

    was mach ich da falsch auser dass ich den buffer pointer 2x deklariert habe.
    anders bring er mit die meldung buffer undeklaret wegen GetWindowsTex();
    also fuktionieren tut es noch nicht. 😕

    Gruß
    Max


Anmelden zum Antworten