Autor Beitrag
Hendi48
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 271



BeitragVerfasst: Di 10.07.07 20:09 
Hi,
also ich hab das in meinem Programm:
ausblenden Delphi-Quelltext
1:
2:
3:
reconnect; //procedure die eine bat ausführt
sleep(strtoint(form2.Edit1.text)); //hier soll er eigentlich 2000ms (=20s), macht er aber nich
sammeln; //procedure wird ausgeführt die verschiedene buttons in einer anderen form drückt

Wie schon in den Kommentaren steht, funktioniert das Sleep nicht. Wenn ich mir den Wert mal in einem Label anzeigen lasse (strtoint dann wieder inttostr), zeigt er 2000. Kann es sein das die Zahl in Integer anders ist oder so?


Zuletzt bearbeitet von Hendi48 am Di 10.07.07 20:47, insgesamt 1-mal bearbeitet
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Di 10.07.07 20:23 
Hast du dich hier verschrieben, oder liegt der Fehler einfach an einer fehlenden 0? 20 Sekunden sind 20.000ms, nicht 2000ms.

_________________
We are, we were and will not be.
Hendi48 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 271



BeitragVerfasst: Di 10.07.07 20:41 
ohw ja da hab ich was verdreht..ich dachte immer 100ms = 1s :shock:
Danke für die Hilfe

Edit:
Hm, das geht aber trotzdem macht er etwas was erst nach dem sleep kommt zuerst O_o
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure tform3.formsammel;
var
int: integer;
begin
sammeln;
label1.Caption:='1';
sammeln;
label1.Caption:='2';
sammeln;
label1.Caption:='3';
reconnect;
sleep(strtoint(form2.Edit1.text));
sammeln;
int:=strtoint(label1.Caption);
int:=int+1;
label1.caption:=inttostr(int);
end;

nach jedem sammel soll label1 ein hoch gehn, aber es geht auf 4 und dann sleept er erst


Zuletzt bearbeitet von Hendi48 am Di 10.07.07 20:49, insgesamt 1-mal bearbeitet
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Di 10.07.07 20:49 
Kein Mathe in der Schule gehabt. :wink:
de.wikipedia.org/wik...Cr_Ma%C3%9Feinheiten

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
Hendi48 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 271



BeitragVerfasst: Di 10.07.07 20:58 
Ich komm erst in die 8. jetz und da hatten wir sowas noch nich, aber warum wir ms noch nich hatten weiß ich auch nich.. :?:
Oben hab ich editiert!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 10.07.07 22:06 
Moin!

user profile iconHendi48 hat folgendes geschrieben:
Hm, das geht aber trotzdem macht er etwas was erst nach dem sleep kommt zuerst O_o
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure tform3.formsammel;
var
int: integer;
begin
sammeln;
label1.Caption:='1';
sammeln;
label1.Caption:='2';
sammeln;
label1.Caption:='3';
reconnect;
sleep(strtoint(form2.Edit1.text));
sammeln;
int:=strtoint(label1.Caption);
int:=int+1;
label1.caption:=inttostr(int);
end;

nach jedem sammel soll label1 ein hoch gehn, aber es geht auf 4 und dann sleept er erst

Du hast da zwei Sachen drin, die ich anders machen würde:
1. Du solltest besser Suche in: Delphi-Forum, Delphi-Library GETTICKCOUNT und eine repeat-Schleife mit Timeout nehmen, statt Sleep! :mahn:
2. Der Code da oben ist nicht ereignisorientiert - aber das Programm schon (weil jedes TApplication-basierte Programm ereignisorientiert ist)! Hier gibt´s was aus der FAQ dazu. :les: ;)

Konkret zu dem aktuellen "Fehlverhalten" (was übrigens keines ist, wenn man den Hintergrund verstanden hat): Mach mal nach dem Ändern der Label-Caption ein Application.ProcessMessages;dann haste auch die Ausgabe. :?

PS: Wenn man Code einrückt, muss man nicht sofort sterben... :roll:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Hendi48 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 271



BeitragVerfasst: Di 10.07.07 22:27 
ok danke ich habs jetz so gemacht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm3.SammelManager;
var
  int: integer;
begin
  sammeln;
   label1.Caption:='1';
  sammeln;
   label1.Caption:='2';
  sammeln;
   label1.Caption:='3';
  reconnect;
   Delay(22000);
  Application.Processmessages;
  sammeln;
   int:=strtoint(label1.Caption);
   int:=int+1;
   label1.caption:=inttostr(int);
end;

Ich mach noch ein 5. und 6. dazu und kuck ob es geht..
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1335
Erhaltene Danke: 118

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Mi 11.07.07 00:36 
Wenn man den Code so wie du einrückt kann man aber sehr schwehr Krank werden. Zwei Zeichen pro Ebene, nicht mehr und nicht weniger sind voll ok.
Die Verwendung von Delay sollte verboten werden. Frage mich eh wozu man das braucht.
Ich mache mal das was man eigentlich nicht machen sollte, ich schreibe Code: (in schönschrift)
ausblenden Delphi-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:
procedure TForm3.SammelManager;
var
  int, l: integer;

begin
  for l := 1 to 3 do
  begin
    sammeln;
    label1.Caption := IntToStr(l);
    Application.Processmessages; // falls in >sammeln< nix drinne ist was appl. procmess. aufruft sieht du sonst keine 
  end;                           // änderung von label1.Caption
  
  reconnect;
  for l := 1 to 22 do // 22 sekunden warten
  begin
    Sleep(1000); // "programm schläft" -> CPU Zeit wird anderen Programmen gegeben
    Application.Processmessages; // programm arbeitet windows botschaften ab -> Es zeigt Windows das es noch lebt
  end;

  sammeln;
  int := StrToInt(label1.Caption);
  Inc(int); // "schöner" als int := int + 1;
  label1.caption := IntToStr(int);
end;

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 11.07.07 00:46 
Moin!

@user profile iconSinspin: Dein Code ist zwar besser strukturiert, als der von user profile iconHendi48, aber auch nicht ereignisorientiert und deshalb konzeptionell nicht besser. :? :| :nixweiss:

Das Ganze gehört in einen Timer mit z.B. 1000ms Intervall und über einen Zustand gesteuert. :mahn:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Hendi48 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 271



BeitragVerfasst: Mi 11.07.07 00:52 
egal, mein code funktioniert gut und da muss ich auch nix mehr ändern
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1335
Erhaltene Danke: 118

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Mi 11.07.07 16:02 
user profile iconNarses hat folgendes geschrieben:
Moin!

@user profile iconSinspin: Dein Code ist zwar besser strukturiert, als der von user profile iconHendi48, aber auch nicht ereignisorientiert und deshalb konzeptionell nicht besser. :? :| :nixweiss:

Das Ganze gehört in einen Timer mit z.B. 1000ms Intervall und über einen Zustand gesteuert. :mahn:

cu
Narses


Bei einem so kleinen stückchen Quelltext, von dem ich absolut nicht weis in welchem Zusammenhang es eingesetzt wird, mache ich mir nicht so den Kopf was davon am besten in einen Timer kommt. Ich habe nur redundanzen beseitigt und einen schönen Programmierstiel demonstriert. Alles weitere überlasse ich der Lern- und Probierbereitschaft des Autors.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?