strtoint klappt nicht

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
felix96
Beiträge: 287
Registriert: So 29. Nov 2009, 17:44
CPU-Target: 32BitWin+64bitUbunt

strtoint klappt nicht

Beitrag von felix96 »

Hab ich grade einen Blackout, oder ist das hier ein Bug?

Code: Alles auswählen

ListBox1: TListBox;
    ListBox2: TListBox;
    ListBox3: TListBox;
    StringGrid1: TStringGrid;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 
 
var
  Form1: TForm1; 
 
implementation
uses windows;
 
procedure waith(l: byte);
var i,j,k: integer;
begin
  if l=0then exit;
  for j:=0 to l do for k:=0 to 60 do begin
  sleep(1000*60);
  application.ProcessMessages;
  end;
end;
 
procedure waitm(m: byte);
var i: byte;
begin  if m=0 then exit;
 for i:=0 to m do begin
 sleep(1000*60);
 application.ProcessMessages;
 end;
end;
 
procedure putetin(x,y: string);
begin
  with form1 do
  begin
    stringgrid1.RowCount:=stringgrid1.RowCount+1;
    stringgrid1.Cells[0,1]:=x;
    stringgrid1.Cells[1,1]:=y;
  end;
end;
 
procedure klick(sx,sy: string);
var p: tpoint;
begin
 p.x:=strtoint(sx); p.y:=strtoint(sy);
 mouse.CursorPos:=p;
mouse_event(MOUSEEVENTF_LEFTDOWN, p.x, p.y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, p.x, p.y, 0,0);
end;
 
 
procedure TForm1.Timer1Timer(Sender: TObject);
var p: tpoint;
begin
  p:=mouse.CursorPos;
  edit1.text:=inttostr(p.x);
  edit2.text:=inttostr(p.y);
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
   stringgrid1.Cells[0,0]:='X';
   stringgrid1.Cells[1,0]:='Y';
   stringgrid1.Cells[2,0]:='n. Aktion(s)';
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  putetin(edit1.text,edit2.text);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var i,j: integer; p:point; s,s1: string;
begin
  for i:=0 to strtoint(edit6.text) do
  begin
  for j:=1 to stringgrid1.RowCount-1 do begin
  s:=stringgrid1.cells[0,j];s1:=stringgrid1.cells[1,j];
  klick(s,s1);
  s:=stringgrid1.Cells[2,j];
  sleep(strtoint(s)*1000);
  application.ProcessMessages;
  end;
 
  waith(strtoint(edit3.text));
  waitm(strtoint(edit4.text));
  sleep(strtoint(edit5.text))
  end;
end;
Das ganze dient dazu die Maus Bewegen\Klicken zu lassen.

Wenn ich es kompilire, kommt keine Fehlermeldung, aber wenn ich auf button2 klicke kommt:
"" Is an Invailed Integer
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!

hendy
Beiträge: 80
Registriert: Sa 11. Apr 2009, 17:01
OS, Lazarus, FPC: Windoof (L 0.9.26 FPC 2.2.2)
CPU-Target: 32Bit

Re: strtoint klappt nicht

Beitrag von hendy »

Code: Alles auswählen

strtoint(edit6.text)
ein leerzeichen ist nun halt keine Zahl...
Aber theorhetisch währe es ja möglich ein string in eine Zahl umzuwandeln
Dankt monta !!

felix96
Beiträge: 287
Registriert: So 29. Nov 2009, 17:44
CPU-Target: 32BitWin+64bitUbunt

Re: strtoint klappt nicht

Beitrag von felix96 »

Wo?
Bei Button2Click in der ersten For-Schleife ist kein Leerzeichen
Zuletzt geändert von felix96 am Mi 21. Apr 2010, 07:26, insgesamt 1-mal geändert.
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: strtoint klappt nicht

Beitrag von Teekeks »

was steht denn in deinem Edit6 für ein Text?
Oder edit3 oder 4 oder 5 ?
Oder was steht in s und s2?
Einfach mal Debuggen oder per Showmessage ausgeben lassen.
Gruß Teekeks

ps.: deine Wartemethode ist extrem ungenau, das weist du ja?

felix96
Beiträge: 287
Registriert: So 29. Nov 2009, 17:44
CPU-Target: 32BitWin+64bitUbunt

Re: strtoint klappt nicht

Beitrag von felix96 »

Edit6: Wie oft Wiederholen;
Edit5: Warten bis zum ächsten Durchgang in s.
Edit4: Warten bis zum ächsten Durchgang in m.
Edit3: Warten bis zum ächsten Durchgang in h.
Edit2, Edit1: Aktuelle Mauskoordinaten, diese werden ins Stringgrid eingefügt.
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!

felix96
Beiträge: 287
Registriert: So 29. Nov 2009, 17:44
CPU-Target: 32BitWin+64bitUbunt

Re: strtoint klappt nicht

Beitrag von felix96 »

Der Fehler entsteht erst beim 2. Durchgang.
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6771
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: strtoint klappt nicht

Beitrag von af0815 »

felix96 hat geschrieben:Der Fehler entsteht erst beim 2. Durchgang.
Mal in 2 Schritte aufteilen, damit der Fehler sichtbar wird

Code: Alles auswählen

...........
var i,j,ih: integer; p:point; s,s1: string;
begin  
  ih := strtoint(edit6.text);
  for i:=0 to ih do  
  begin  
     for j:=1 to stringgrid1.RowCount-1 do begin
.........
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: strtoint klappt nicht

Beitrag von Teekeks »

Hmmm, geh mal mit dem Debugger schrittweise durch und guck was du an welcher Stelle für Werte hast und an welcher der Fehler genau auftritt.

Antworten