Mein Lazarus kennt TProcess.Output.NumBytesAvailable nicht
-
- Beiträge: 88
- Registriert: Sa 3. Mär 2007, 13:46
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Langenbrettach
Mein Lazarus kennt TProcess.Output.NumBytesAvailable nicht
Hi,
laut dieser Seite kann man mit NumBytesAvailable herausfinden, wieviele Bytes im Stream sind. Mein Lazarus kennt aber die Eigenschaft nicht. Habe Lazarus 0.9.22 und FP 2.0.4. Muss ich etwas updaten oder habe ich etwas übersehen?
Bzw. Kann ich beim Output-Stream eines TProcess anders herausfinden, wieviele Bytes drin sind? Wenn ich zuviele Bytes lesen möchte ist der Stream blockiert bis die Daten da sind.
Gruß
Thomas
laut dieser Seite kann man mit NumBytesAvailable herausfinden, wieviele Bytes im Stream sind. Mein Lazarus kennt aber die Eigenschaft nicht. Habe Lazarus 0.9.22 und FP 2.0.4. Muss ich etwas updaten oder habe ich etwas übersehen?
Bzw. Kann ich beim Output-Stream eines TProcess anders herausfinden, wieviele Bytes drin sind? Wenn ich zuviele Bytes lesen möchte ist der Stream blockiert bis die Daten da sind.
Gruß
Thomas
-
- Beiträge: 88
- Registriert: Sa 3. Mär 2007, 13:46
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Langenbrettach
In Size steht seltsamerweise immer "-1".
Ich brauche die Information, weil sonst der Process blockiert ist:
"If this number is nonzero, then reading NumBytesAvailable bytes from the stream will not block the process. Reading more than NumBytesAvailable bytes will block the process, while it waits for the requested number of bytes to become available."
Ich muss jedoch währendessen den StdErr-Kanal vom TProcess überwachen.
Ich brauche die Information, weil sonst der Process blockiert ist:
"If this number is nonzero, then reading NumBytesAvailable bytes from the stream will not block the process. Reading more than NumBytesAvailable bytes will block the process, while it waits for the requested number of bytes to become available."
Ich muss jedoch währendessen den StdErr-Kanal vom TProcess überwachen.
-
- Beiträge: 88
- Registriert: Sa 3. Mär 2007, 13:46
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Langenbrettach
Der Prozess läuft schon in 'nem eigenen Thread (siehe Projekte->easyMP3Gain). Es geht darum, dass die gestartete Anwendung im Kanal Stderr fortlaufend den Status in Prozent zurückgibt und immer wenn er bei 100% angelangt ist, dann kommt beim Output-Kanal die Zusammenfassung (dann kommt die nächste Aufgabe wieder bei 0%). Wenn ich jedoch beim Lesen vom Output-Kanal mehr Bytes lese als drinsteht, dann ich danach den Stderr-Kanal nicht mehr überwachen. Und Thread im Thread ist auch nicht unbedingt die richtige Methode.Christian hat geschrieben:Ja das macht man ja eigentlich auch in nem seperaten Thread, ist doch super wenn der blockiert wird und man nicht pollen muss...
Das muss laut Freepascal-Dokumentation ja auch einfacher gehen. Nur leider gibts bei mir die angesprochene Eigenschaft nicht.
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Frag halt mal nach auf der Mailingliste warum die Property fehlt, sauberer find ichs aber Prozesse in nem sepraten thread abzufragen. In deinem Fall müsstest dann wenn was angekommen ist mit Synchronize eine procedure in deiner Hauptanwendung aufrufen die den Status ausgibt. Wenn du das unbedingt in dem Thread machen willst halt n 2. Thread.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Seit wann verträgt sich lazarus nicht mir fpc 2.2 ? Quatsch wenn du es nicht packst den compiler richtig zu installieren dann nimm z.b. einen Daily Snapshot. oder warte bis der 2.2 in der Offiziellen Lazarusversion gelandet ist. Aber vertragen tun sich die beiden wunderbar.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 88
- Registriert: Sa 3. Mär 2007, 13:46
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Langenbrettach
Vertragen tun sie sich bestimmt, wenn man es schafft alles korrekt einzurichtenChristian hat geschrieben:Seit wann verträgt sich lazarus nicht mir fpc 2.2 ? Quatsch wenn du es nicht packst den compiler richtig zu installieren dann nimm z.b. einen Daily Snapshot. oder warte bis der 2.2 in der Offiziellen Lazarusversion gelandet ist. Aber vertragen tun sich die beiden wunderbar.

Ich hab die debs von FPC2.2 installiert. Dann meinte mein Lazarus, dass er die Interfaces.pp nicht finden kann beim Kompilieren. Nach einiger Zeit Recherche im Netz lief das dann zwar, aber dafür hat er jedesmal, wenn ich im Oberflächendesigner auf ein Event einer Komponente doppelgeklickt habe, einen Fehler gebracht (weiß nimmer wie der hieß) statt die Funktion im Quellcode zu erstellen (auch bei neuen leeren Projekten).
Jetz is wieder die alte Version drauf und da funktioniert es einwandfrei.
Bis Lazarus 9.23 kann ich die entsprechende Unit auch manuell erweitern.