Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Delphi-Programmierung

lutz20 / 6 Antworten / Baumansicht Nickles

Hallo,
ich hab mal für einen Delphiprogrammierer ne sicher einfache Frage :
Ich möchte mit einem Delphi-Programm in einem Verzeichnis ähnlich einer Batch-Datei mehrere Dateien der Reihe nach bearbeiten. Hierbei möchte ich aber in dieser "Programmschleife" die jeweilige Datei mit ihrem Namen sofort anzeigen. Mir gelingt es nur, erst am Ende eine Liste aller bearbeiteten Datein anzuzeigen, erst wenn ich zum Startpunkt des Programms zurückkehre. Mit welcher Komponente kann ich eine sofortige Anzeige bewirken?
Lutz20

bei Antwort benachrichtigen
Tommy22 lutz20 „Delphi-Programmierung“
Optionen

Mit welchem Kommando lässt du dir denn die Dateien anzeigen? (genauer Quelltext bitte)

Hey Dr. Kleiner - Ja Gordon? - Guck mal! Ist das nicht ne schöne Brechstange!? Fass sie mal an!
bei Antwort benachrichtigen
lutz20 Nachtrag zu: „Delphi-Programmierung“
Optionen

Hallo Tommy22,
hier ein Auszug aus dem Programm /ich mußte stark kürzen, war zum Senden zu lang

procedure TForm1.anzeige;
begin
ListBox1.Items.Add(DateiName); //TListBox Versuch mit 2 Komponenten - keiner paßt
Liste.text:=DateiName; //TMaskEdit
end;


procedure FolgeDatei(var DateiName:string);
begin
while findnext(REC) = 0 do
begin
DateiName:=REC.Name;
end;
exit;
end;

procedure TForm1.StartClick(Sender: TObject);
var x : Integer;
begin
ErsteDatei(DateiName);
ListBox1.Items.Add(DateiName); // Sicher doppelgemoppelt
Liste.text:=DateiName; // Sicher doppelgemoppelt
Anzeige;
FolgeDatei(Dateiname);
Liste.text:=DateiName;
ListBox1.Items.Add(DateiName);
Anzeige; // sicher doppelgemoppelt
end;
end;

bei Antwort benachrichtigen
Borlander lutz20 „Delphi-Programmierung“
Optionen

Wenn ich mich recht erinnere dann werden GUI-Elemente u.U. erst mit Zeitverzögerung aktualisiert. Schon mal mit Control.update() probiert?

Abgesehen davon: Sehr wirre Programmstruktur. Du setzt globale Variablen ein und warum in aller Welt gibst Du in FolgeDatei(..) (warum ziehst Du sowas überhaupt ein eine Funktion raus??) den Dateinamen nicht als Rückgabewert eine Funktion zurück?


Gruß
Borlander

bei Antwort benachrichtigen
lutz20 Nachtrag zu: „Delphi-Programmierung“
Optionen

das Stück Programm mag wirr aussehen, aber es ist dem Platzmangel im Forum geschuldet. Ich habe alle für das Problem nicht relevanten Zeilen entfernt. Die Procedur Folgedatei wird in einer Schleife aufgerufen bis alle Dateien des entsprechenden Dateityps abgearbeitet sind.
Ich bin kein großer Programmierer, habe früher mal in Turbo-Pascal programmiert und will mal das eine oder andere Programm in ein Windowsprogramm umsehen oder auch neu entwickeln, nur kleine Sachen.
Mit Control.update() oder den GUI- Anweisungen kann ich nichts anfangen (die berühmten 7 Siegel).
Lutz20

bei Antwort benachrichtigen
Borlander lutz20 „das Stück Programm mag wirr aussehen, aber es ist dem Platzmangel im Forum...“
Optionen
Mit Control.update() oder den GUI- Anweisungen kann ich nichts anfangen (die berühmten 7 Siegel).
Da empfehle ich zunächst mal einen Blick in die sehr gute Referenz im Windows-Hilfe-Format. Schau dort einfach mal unter TControl (wenn ich mich recht erinnere ist das die Basisklasse aller Bedienelemente) nach und dort nach der Methode update().

Zur genannten Funktion bzw. in deinem (für mich nicht nachcollziehbarem) Fall Prozedur. Warum machst Du das ganze nicht so:



Wobei ich mir beim ObjectPascal-Syntax und der benennung des Rückgabewertes nicht sicher bin. Kann auch leicht abweichen...


Gruß
Borlander
bei Antwort benachrichtigen
Mdl lutz20 „Delphi-Programmierung“
Optionen

Hi Lutz20,

wenn Du ein WinControl, z.B. ein MemoFeld mit Text updatest wird es - soweit ich es noch weiß - nicht sofort angezeigt, sondern erst wenn die Kontrolle wieder an Windows zurückgeht.

Wenn Du aber den Fkt.aufruf
Application.ProcessMessages();
nach dem Updaten des Feldes ausführst, geschieht das gleich...

Hoffe es hat geholfen...

bei Antwort benachrichtigen