Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by dkoehler,
31. Jan 2009
Der Fehler in meinem Code war einer jener kleinen Bugs, wie man sie gerne übersieht, weil eine Änderung an einer einen Nebeneffekt an anderer Stelle mit sich führt: Ich hatte vergessen, den ersten Parameter von MsgWaitForMultipleObjects() von 2 auf 3 zu erhöhen. Statt einen expliziten Wert anzugeben, schreibe ich darum jetzt lieber Length(HandleArray).
Jedenfalls funktioniert nun auch das...
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by dkoehler,
31. Jan 2009
Danke für die Erläuterung! Ich hatte etwas in der Richtung mit zwei Overlapped-Events schon versucht, aber dann trat dabei Datenverlust auf. Jedenfalls weiß ich nun, daß ich grundsätzlich auf der richtigen Spur war und jetzt "nur" noch nach dem Bug suchen muß.
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by dkoehler,
30. Jan 2009
Ich bin nun dabei, den AppLauncher noch etwas komfortabler zu gestalten, das heißt ich möchte Standard-Output und Standard-Error separat auswerten. Dazu verwende ich zwei Pipes. Wenn ich richtig sehe, muß ich dazu einen Hauptthread starten, der zwei Kind-Threads erzeugt, einen um die Standard-Output-Pipe und einen um Standard-Error-Pipe abzuhören. Der Hauptthread terminiert und liefert die...
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by dkoehler,
29. Jan 2009
Deinen Vorschlag 1 und 3 habe ich direkt übernommen. Bei Vorschlag 2 gibt es Probleme: Der zweite Parameter von MsgWaitForMultipleObjects() ist in Delphi 2009 als var deklariert. Ich habe darum Folgendes gemacht:
var
PHandleArray: Pointer;
...
PHandleArray := @HandleArray;
while not Application.Terminated do
begin
WaitResult := MsgWaitForMultipleObjects(2, PHandleArray, False,...
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by dkoehler,
29. Jan 2009
Ich habe Apollonius' Code in eine Komponente umgeschrieben. Die CreateNoWindow Flag gibt an, ob das externe Programm in einem eigenen Fenster gestartet werden soll oder nicht. Über das OnProgress Ereignis kann man beim Einlesen der Were den Stand des internen Streams auswerten, wobei man über die ProcessInfo Variable erfährt, mit welchem Prozeß man es zu tun hat. Zum Starten und Einlesen der...
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by dkoehler,
28. Jan 2009
Entschuldigung, ich war gerade beim Lesen der MS-Doku ganz auf englisch eingestellt. Also: Es ist nicht möglich beim letzten Beispiel eine anonyme Pipe zu verwenden, oder doch?
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by dkoehler,
28. Jan 2009
It is not possible to use an anonymous pipe with the last code example, or?
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by dkoehler,
28. Jan 2009
Sind die Aufrufe von ZeroMemory hier wirklich notwendig?