ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
342
342
EMPFEHLEN
-
Hallo..
ich würde gerne wissen, wieso mein Code nicht das tut, was er soll. Ich möchte wissen, ob in dem char Array ein "Good" drinsteht, aber er spruckt mir ganz komische sachen aus.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
BOOL EnumWindowsProc(HWND hWnd, long lParam){ char Buff[255]; GetWindowText(hWnd, Buff, 254); int i; for (i = 0; i < 254; i++){ if ((Buff[i] == 'G') && (Buff[i+1] == 'o') && (Buff[i+2] == 'o') && (Buff[i+3] == 'd') ) { printf("%d ",(int)hWnd); break; } } return TRUE; }
Bedeutung: Ich möchte, dass alle handles durchgelaufen werden, und die Handles ausgegeben werden, in deren TitleBar ein "Good" drinsteht... und zwar NUR diese. Er gibt mir immoment diese aus, dazu aber manchmal auch noch ganz andere und manchmal nur zum Teil alle mit "Good" ...
Oder gibts vielleicht eine bessere Möglichkeit, dies zu machen?
danke für die hilfe
alex
-
Hi,
dein Code sollte eigentlich garnicht funktionieren sondern zu einem
Speicherzugriffsgfehler führen. Wenn dein i 253 ist greifst du auf die
Stelle [ i + 3 ] also 256 zu. Auserdem schaust du dir das ganze Feld
an obwohl du nur bis zum \0 Zeichen laufen brauchst.Was danacht
steht ist undefiniert solange du es nicht anderst initialisiert hast. Könnte
zum Beispiel sein das da irgendwo ein Good steht.
Gruß BennyTheorie ist Wissen, das nicht funktioniert.
Praxis ist, wenn alles funktioniert und man weiß nicht warum
-
Hallo,
wie mein Vorgänger schon sagte: Immer nur die tatsächliche Stringlänge überprüfen (strlen) und nicht über das Ende des Buffers hinausschießen.
Für den Stringvergleich ist es effizienter, die entsprechenden Vergleichsfunktionen zu verwenden. Außerdem ist man damit flexibler, wenn mal ein anderer String gesucht werden soll.
GrußCode cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14
char cBuffer[] = "12345blabla--good--6789blabla"; const char cFind[] = "good"; int nMaxPos = strlen(cBuffer) - strlen(cFind); bool bFound = false; for( int nPos = 0; nPos < nMaxPos; nPos++ ) { if( strncmp(cBuffer + nPos, cFind, strlen(cFind)) == 0 ) { bFound = true; // Gefunden break; } }
MCoderGeändert von MCoder (29.07.07 um 10:55 Uhr)
"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
ok super mit dem Code funktioniert es wunderbar

danke
Ähnliche Themen
-
Dumme Frage
Von igfas im Forum Visual Basic 6.0Antworten: 3Letzter Beitrag: 28.03.03, 11:43 -
ganz dumme Frage :)
Von schorschi im Forum Flash PlattformAntworten: 5Letzter Beitrag: 07.07.02, 11:03 -
dumme frage ;)
Von NiKeMaN im Forum PhotoshopAntworten: 4Letzter Beitrag: 21.03.02, 13:57 -
Mal ne ganz dumme Frage
Von Mojohunter im Forum PHPAntworten: 6Letzter Beitrag: 26.12.01, 21:04 -
mal ne dumme frage....
Von Jack tha Ripper im Forum Flash PlattformAntworten: 3Letzter Beitrag: 28.05.01, 15:02





Zitieren
Login






