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 '´' ...