Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Wie muss eine korrekte Schleife aussehen
delphidepp - Mo 03.11.03 16:47
Titel: Wie muss eine korrekte Schleife aussehen
sorry ich bin ein newbe!
ich habe eine schleife gebastelt die aber scheinbar nicht richtig funktioniert zumindestens nicht so wie ich das gern hätte oder ich habe ein knick in meiner logik.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject); var i: integer;
begin for i:=0 to 2 do begin label1.Caption:=(inttostr(i)); sleep(1000); end; end; |
wenn meine logik richtig ist dann sollte die schleife beim 1 durchlauf
eine 0 in das label feld schreiben und danach 1 sekunde warten.
beim 2 durchlauf kommt eine 1 ins labelfeld
und bei 3 durchlauf eine 2 ins labelfeld
und danch sollte die schleife beendet sein.
wenn ich aber auf den button drücke dann leit mein proggi für 3 sekunden hängen (also "schläft er diese zeit) und dann sehe ich sofort eine 2 dort stehen.
ich möchte aber dass gerne so haben dass ich sehe wie eine 0 erschein dann nach 1 sekunde eine 1 und wieder nach einer sekunde eine 2 erscheint.
wie sollte ich denn dann die schleife aufbauen?
danke
Delete - Mo 03.11.03 16:50
Vor das sleep ein Application.ProcessMessages oder ein Label1.Refresh. Du musst deiner anwendung auch die Zeit geben das Label zu aktualisieren.
delphidepp - Mo 03.11.03 17:00
ok danke für die super schnelle antwort!
es hat schon mal funktioniert, aber nun das proggi das ich gerade versuche zu machen:
ich lese das telefonbuch von meinem handy aus, und nutze folgendes dazu:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.Button4Click(Sender: TObject); var s: integer; check: String; begin
for s:=1 to 100 do begin SerialPortNG1.SendString('AT+CPBR='+inttostr(s)+ #13+#10); memo1.Refresh; sleep(75); memo1.Refresh; check:=serialportng1.ReadNextClusterAsString; memo1.Lines.Add(check);
check:=serialportng1.ReadNextClusterAsString; memo1.Lines.Add(check);
end; end; |
nun habe ich das prolem dass die einträge aus dem telefonbuch nicht der anzahl der schleife entsprechen meine schleif ehört bei 60 auf.
und ich nicht verfolgen kann wie er eintrag für einntrag ausliest
wo steckt nun hier der wurm?
sorry nochmal aber ich peil das irgendwie nicht!
danke
Delete - Mo 03.11.03 17:27
entweder liest du vorher die Anzahl der Einträge aus oder du nutzt eienb while Schleife, die so lange läuft, bis eine Abbruchbedingung greift. Wie diese aussieht, musst du wissen. Leerstinmg oder was weiß ich.
delphidepp - Di 04.11.03 16:01
ok danke für die schnellen antworten. soweit habe ich fast alles gecheckt ABER ein Problemchen habe ich noch und das macht mich bald wahnsinnig. Ich muss echt ein knick in der meiner Logik haben.
Also mal grundlegendes zu meinem Proggi
ich habe einen Timer der alle 10 ms am ComPort4 nachsieht was, dieser zurückgibt und schreibt alles in ein Memofeld rein.
Mit einem Button lasse ich eine Serie Befehle an diesen ComPort senden.
der Quelltext sieht wie folgt aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.Button4Click(Sender: TObject); var i, s: integer; begin i:=1; while I >= 1 do begin SerialPortNG1.SendString('AT+CPBR='+inttostr(i)+ #13+#10); gauge1.Progress:=i; gauge1.Refresh; sleep(75); i:=i+1; if i=101 then break; end;
end; |
Nun wenn ich den Button drücke sehe ich wie der Statusbalken auf 100% rauszählt. Dabei erscheint nichts im Memofeld. Erst wenn der Gauge1 Balken auf 100 % ist, dann sehe ich wie die Antworten auf meine Befehle im Memofeld1 einlaufen. Das zweite Problem ist auch, dass mit der Schleife der Befehl 100 Mal ausgeführt werden sollte. Im Memofeld bekomme ich aber nicht 100 Mal eine Antwort zurück, sondern (ist unterschiedlich mal mehr mal weniger) so ca. 60 Antworten.
Was mache ich bloß falsch?
Danke @All
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!