Hallo!
Sitze schon längere Zeit an einem Problem zu dem ich keine Lösung finde.
Ich programmiere in Delphi 7 nur gelegentlich, bin also kein Profi!
Hier mein Problem:
Habe ein Programm, welches nacheinander verschiedene Windows-Consolenbefehle zur Datensicherung im Netzwerk aufruft. Also prinzipiell eine Batch-Datei, aber optisch ansprechender und für "normale" User leichter bedienbar.
Die Befehle werden mit einer Funktion für Prozessaufrufe gestartet. Die funktioniert ohne Probleme.
Vor dem Prozessaufruf wird ein Label im Formular mit den jeweiligen aktuellen Information aktualisiert.
Sehr oft erscheint der Text im Formular aber nicht, er wird nicht aktualisiert und sofort der nächte Befehl abgearbeitet.
Das Formular ist FormStyle:=fsStayOnTop gesetzt. Wenn man es zB bei fsNormal während der Laufzeit hervorholt, ist es komplett weiß, arbeitet aber die Befehle korrekt ab.
Meine vergeblichen Versuche:
Delphi-Quellcode:
procedure DOSBefehl(Befehl:string;MSG:string;Warten:Boolean);
var
ProcID: Plongword;
begin
Form1.Meldung.Caption := MSG; // zB: MSG := 'Netzlaufwerk F: wird verbunden...'
Form1.Meldung.Repaint; // Versuch den Text vor dem Prozessaufruf neu zu zeichnen - funktioniert nicht!
sleep(1000); // bringt auch nichts
ProcID := nil;
RunProcess(Befehl, // das ist der Aufruf für externe Programme
SW_NORMAL,
Warten, // Warten bis ext. Prog. beendet ist oder nicht warten
ProcID);
end;
Auch habe ich es mit
Form1.Refresh;
probiert - erfolglos.
Vielleicht könnt Ihr mir einen Tip geben, wie man ganz "normal" sequenziell Befehle abarbeiten kann:
1. Text im Formular schreiben
1. Befehl ausführen
2. Text im Formular schreiben
2. Befehl ausführen
usw.
Danke für Eure Hilfe!
joschidiver
[edit=Matze][delphi]-Tags eingefügt. Zukünftig bitte selbst daran denken. MfG, Matze[/edit]