Entwickler-Ecke

Sonstiges (Delphi) - Ablauf einer Listboxschleife funzt nicht


F.Art - Sa 29.03.03 21:02
Titel: Ablauf einer Listboxschleife funzt nicht

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
procedure TForm1.Timer2Timer(Sender: TObject);
var x:integer;
    i : word; 
    y : word;
    zuschicken,y2:string;
    WHandle: THandle;
begin
For i := 0 To Liste.Items.Count-1 Do
begin
  if Wechseln.Checked=false then zuschicken:= Text.text;
  if Wechseln.Checked=true then zuschicken:= Liste.Items.Strings[i];
     WHandle := getforegroundwindow;
     BringWindowToTop(WHandle);
     for x := 1 to length(zuschicken) do
          begin
          y2:=zuschicken;
          delete(y2,x+1,length(y2));
          while length(y2) > 1 do delete(y2,1,1);
          y:= strtoword(y2);
          keybd_event(VkKeyScan(chr(y)),0,0,keyeventf_keyup);
     end;
keybd_event(VkKeyScan(chr(vk_return)),0,0,keyeventf_keyup);
timer1.Enabled:=false;
end;
end;



Er soll nach jedem mal einen anderen text aus der liste nehmen aber in dieser variante nimmt er immer den selben text.


Tino - Mo 31.03.03 11:29

Kannst Du mal erklären was der Code genau machen soll? Ich glaube nämlich das Dein Sourcecode falsch zusammen gebaut ist.

Gruß
Tino


F.Art - Mo 31.03.03 12:00

Er soll nach einer eingegebenen Zeit einen Text in ein anderes Programm kopieren und nach jedem mal einen anderen Text verwenden.


Delete - Mo 31.03.03 12:26

So ganz blicke ich da nicht durch, aber mal soviel:
Lokale Variablen verlieren ihr Gültigkeit nach verlassen der Prozedur / Funktion. Desweiteren sollte man sie initialisieren, da sie nicht, wie globale Variablen, mit einem neutralen Wert vorbelegt werden.
Bei dir würde das bedeuten, dass alle Variable, die du in der Timer-Prozedur deklariert hast, bei jedem Aufruf zurück gesetzt werden.

Mehr kann ich dir auch nicht helfen, da ich den Code absolute nicht verstehen. Entweder ist er einfach zu genial für mich oder Schrott - such dir was aus. :wink: