text zeilenweise und zeichenweisen auslesen...



  • hallo,

    ich versuchte... einen text der vom user eingegeben wurde zeilen- und zeichenweise einzulesen und auszuwerten.

    es gelang mir nicht 😞

    hier mal der wichtigste code:

    vorsicht! die variablen wurden aus verzweiflung 🙄 leicht lang gewählt..

    HINSTANCE hInstGlb;
    HWND hedit1,hbut1;
    
    LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
    {
    int text_laenge;
    int zeilen_laenge;
    char *all_text;
    char *zeile_text;
    char text_ausgabe[200];
    
    int zeilen_anzahl;
    int lenge_aller_zeilen;
    
    switch (iMsg)
    {
    case WM_CREATE:
        hedit1 = CreateWindowEx(WS_EX_CLIENTEDGE,"edit","",WS_VSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOVSCROLL | ES_LEFT | ES_LOWERCASE,0,0,400,300,hwnd,(HMENU)1000,hInstGlb,NULL);
        hbut1 = CreateWindow("button","auslesen",WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,0,310,100,20,hwnd,(HMENU)2000,hInstGlb,NULL);
        SendMessage(hedit1,WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
        SendMessage(hbut1,WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
        return 0;
    
    case WM_COMMAND:
        switch(HIWORD(wParam))
        {
        case BN_CLICKED:
            switch(LOWORD(wParam))
            {
            case 2000:
                zeilen_anzahl = 0;
                text_laenge = SendMessage(hedit1,WM_GETTEXTLENGTH,0,0);
                all_text = new char[text_laenge+1];
                SendMessage(hedit1,WM_GETTEXT,text_laenge+1,(long)all_text);
    
                lenge_aller_zeilen = SendMessage(hedit1,EM_GETLINECOUNT,0,0);
    
                while (zeilen_anzahl <= lenge_aller_zeilen)
                {
                zeilen_laenge = SendMessage(hedit1,EM_LINELENGTH,zeilen_anzahl,0);
                zeile_text = new char[zeilen_laenge+1];
                zeile_text[zeilen_laenge] = '\0';
                SendMessage(hedit1,EM_GETLINE,zeilen_anzahl,(long)zeile_text);
    
                zeilen_laenge--;
                while ((zeilen_laenge) >= 0)
                {
                sprintf(text_ausgabe,("inhalt der aktuellen zeile: %s\n"
                               "aktuelles zeichen: %c\n"
                               "nummer der aktuellen zeile: %d\n"
                               "nummer des aktuellen zeichen: %d")
    
                               ,zeile_text,zeile_text[zeilen_laenge],zeilen_anzahl,zeilen_laenge+1);
    
                MessageBox(0,text_ausgabe,"",0);
                --zeilen_laenge;
                }       
                ++zeilen_anzahl;
                delete[] zeile_text;
                }
                delete[] all_text;
                break;
            }
            break;
        }
        return 0;
    
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
     return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
    }
    

    ich hoffe trotzdem das sich jemand findet und dieses "etwas" mal durch zugucken 🙂



  • oops hab ganz vergessen mein problem zu sagen 🙄 :

    es geht schon ganz gut nur wenn z.b. in der ersten zeile 4 zeichen sind dann "denkt" er dass in allen zeilen 4 zeichen sind und sagt dann immer in zeile sowieso ist das zeichen lala ein 'j' mit '´' ...


Anmelden zum Antworten