Funktion wird NUR im Timer-Event aufgerufen
-
Hallo
Ich habe folgenden Code:void __fastcall TForm1::Timer1Timer(TObject *Sender) { AnsiString Teilstring=GetName(802,623); for(int i;i<ListBox1->Items->Count;i++){ if (Teilstring.Pos(ListBox1->Items->Strings[i])>0){ PlaySound("C:\\WINDOWS\\Media\\ringin.wav",NULL,SND_ASYNC+SND_FILENAME); Caption="Teilstring "+IntToStr(i); } } }
Das klappt auch.
Wenn ich den GLEICHEN Code aber im OnClick-Ereignis eines SpeedButtons aufrufe,
tut sich nichts:void __fastcall TForm1::SpBt_GoClick(TObject *Sender) { AnsiString Teilstring=GetName(802,623); for(int i;i<ListBox1->Items->Count;i++){ if (Teilstring.Pos(ListBox1->Items->Strings[i])>0){ PlaySound("C:\\WINDOWS\\Media\\ringin.wav",NULL,SND_ASYNC+SND_FILENAME); Caption="Teilstring "+IntToStr(i); } } }
Die GetName-Funktion sieht so aus:
AnsiString TForm1::GetName(int x,int y) { Punkt= new TPoint; //Cursorposition merken GetCursorPos(Punkt); int xAlt=Punkt->x,yAlt=Punkt->y; delete Punkt; SetCursorPos(x,y); //ins Clipboard kopieren mouse_event(MOUSEEVENTF_LEFTDOWN, x,y, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, x,y, 0, 0); Sleep(50); keybd_event(VK_LCONTROL, 0, 0, NULL); //Alles markieren keybd_event('A', 0, 0, NULL); keybd_event('A', 0, 0x02, NULL); keybd_event(VK_LCONTROL, 0, 0x02, NULL); Sleep(50); keybd_event(VK_LCONTROL, 0, 0, NULL); //Markiertes kopieren keybd_event('C', 0, 0, NULL); keybd_event('C', 0, 0x02, NULL); keybd_event(VK_LCONTROL, 0, 0x02, NULL); Sleep(50); mouse_event(MOUSEEVENTF_LEFTDOWN, x,y, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, x,y, 0, 0); Sleep(50); SetCursorPos(xAlt,yAlt); //alte Cursorposition wiederherstellen return Clipboard()->AsText; }
GetName wird auch brav aufgerufen.
Ins Clipboard wird der richtige Text übergeben.
Aber er springt nicht in die Schleife. Nur im Timer-Event.
Ich bin ratlos...Danke
-
for(int i;i<ListBox1->Items->Count;i++){
Ich vermute i ist nicht initialisiert (gibts da nicht eigentlich sogar ne Compilerwarnung?). Ich kenn den Standard zwar nicht genau, aber in i kann jetzt irgendein Wert stehen, der aktuell an der Speicherstelle steht.
for(int i = 0; i < ListBox1->Items->Count; i++){
mfg
xXx
-
Hallo
Herzlichen Dank, das wars.
Hatte ich übersehen.
DANKEwNw