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.
    DANKE

    wNw


Anmelden zum Antworten