Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Befehle werden einfach übersprungen (https://www.delphipraxis.net/37087-befehle-werden-einfach-uebersprungen.html)

Äfan 30. Dez 2004 20:53


Befehle werden einfach übersprungen
 
Hi,

Ich habe ein Problem mit meinem Prog.

Delphi-Quellcode:
procedure TMain.ToolButton2Click(Sender: TObject);
begin
 StatusBar1.Panels[1].Text := 'Bitte warten...';

 ToolButton2.Enabled := False;
 ToolButton3.Enabled := False;
 ToolButton5.Enabled := False:

 Memo1.Lines.Text := StringReplace(Memo1.Lines.Text, '111', 'in ', [rfReplaceAll]);
 ProgressBar1.StepIt;
 Memo1.Lines.Text := StringReplace(Memo1.Lines.Text, '222', 'das', [rfReplaceAll]);
 ProgressBar1.StepIt;
 Memo1.Lines.Text := StringReplace(Memo1.Lines.Text, '333', 'von', [rfReplaceAll]);
 ProgressBar1.StepIt;
 ...
end;
Wenn ich jetzt auf den ToolButton2 klicke, startet es, aber erst ab Memo1.Lines... Also alles davor wird einfach übersprungen ! Wenn ich jetzt aber zwischen ToolButton5... und Memo1..., ShowMessage('Hallo'); setze, werden die oberen befehle nicht übersprungen. Warum is das so und wie kann ich alles ausführen, ohne das ich ne meldung anzeigen muss ?

MFG

PierreB 30. Dez 2004 20:56

Re: Befehle werden einfach übersprungen
 
hmm... :gruebel: weiß net obs damit zu tun hat aber:

Code:
ToolButton5.Enabled := False:
<- da is ein Doppelpunkt, kein Senikolon ;)

Äfan 30. Dez 2004 20:58

Re: Befehle werden einfach übersprungen
 
:-D Oh, kleiner Tipfehler. Aber nein, daran liegts nicht. Es funktioniert immer noch nicht :cry:

PierreB 30. Dez 2004 21:00

Re: Befehle werden einfach übersprungen
 
Code:
StatusBar1.Panels[1].Text := 'Bitte warten...';
hmm... wie hast du denn das l deklariert, oder welchen Wert hat es?

Dax 30. Dez 2004 21:01

Re: Befehle werden einfach übersprungen
 
Hast du es mal so probiert?
Delphi-Quellcode:
procedure TMain.ToolButton2Click(Sender: TObject);
begin
StatusBar1.Panels[1].Text := 'Bitte warten...';

ToolButton2.Enabled := False;
ToolButton3.Enabled := False;
ToolButton5.Enabled := False;

Application.ProcessMessages; // <---

Memo1.Lines.Text := StringReplace(Memo1.Lines.Text, '111', 'in ', [rfReplaceAll]);
ProgressBar1.StepIt;
Memo1.Lines.Text := StringReplace(Memo1.Lines.Text, '222', 'das', [rfReplaceAll]);
ProgressBar1.StepIt;
Memo1.Lines.Text := StringReplace(Memo1.Lines.Text, '333', 'von', [rfReplaceAll]);
ProgressBar1.StepIt;
...
end;

generic 3. Jan 2005 06:51

Re: Befehle werden einfach übersprungen
 
die befehle werde nicht übersprungen.
nur die vcl hat keine zeit mehr die buttons und labels neuzuzeichnen.

im post vor meinen ist die lösung.
wenn du programmteile hast die länger laufen solltest du processmessages aufrufen damit die form nicht einfriert.
du kannst den prozess der lange dauert auch einfach in einen thread verbannen.

Matze 3. Jan 2005 08:11

Re: Befehle werden einfach übersprungen
 
Du siehst beim Kompilieren auch schon, ob zeilen übersprungen werden, oder nicht.

Die, die ausgeführt werden, sind links mit einem blauen Punkt gekennzeichnet.

Christian Seehase 3. Jan 2005 11:53

Re: Befehle werden einfach übersprungen
 
Moin Äfan,

es ist übrigens keine gute Idee immer direkt Memo1.Lines.Text anzusprechen.
Speichere Dir lieber Memo1.Lines.Text zu Beginn in einem String, verarbeite den, und schreibe ihn zum Schluss wieder zurück.

Jedesmal, wenn Du die Eigenschaft Text ausliest, wird sie aus den Lines zusammengebaut, und beim Schreiben dann natürlich umgekehrt.
Das drückt erheblich auf die Performance.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz