Autor Beitrag
gonzo_16
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 21



BeitragVerfasst: Fr 14.01.05 10:29 
Hallo...

Ich Kann ja mit Libc.System('blabla') tolle Sachen starten. Aber: Wie kann ich kontinuierlich die Ausgabe des Programmes abfragen?

Moderiert von user profile iconAXMD: Tippfehler im Titel korrigiert.
patrick
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: Fr 14.01.05 10:33 
was verstehst du unter "ausgabe" :?:
datei, meldungen....

_________________
Patrick
im zweifelsfall immer das richtige tun!!!
gonzo_16 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 21



BeitragVerfasst: Fr 14.01.05 20:43 
Mit Ausgabe, meine ich z.B. wenn ich seti@home starte, dsa ich die Ausgabe des Clients in einem Memofeld darstellen kann. Oder bei ls, das ich alle dateinen die es listet in einem memofeld sehe. Oder eine Manpage in einem Memofels sehe...
WEnn es dir weiterhilft...das was man unter C mit einer pipe realisieren kann.
thx GonZo
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Fr 14.01.05 21:08 
gonzo_16 hat folgendes geschrieben:
das was man unter C mit einer pipe realisieren kann.
Das müsste man in Pascal auch mit einer Pipe realisieren können. Frag' mich nicht wie's unter Linux geht, aber du scheinst es ja zu wissen ;-)
Ansonsten weiß ich, daß man (zumindest über die Kommandozeile, mit System() habe ich es noch nicht ausprobiert) die Ausgabe des Programmes in eine Datei umleiten kann. Die könntest du in deinem Programm alle x Sekunden neu auslesen. Das wäre allerdings die unschöne Lösung, die zudem noch eine anschließende Löschung der temporären Datei erfordert, die Lösung mit einer Pipe ist also schon die bessere.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
gonzo_16 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 21



BeitragVerfasst: Sa 15.01.05 03:57 
Ja nur habe ich mit der pipe (bei C) das Problem, das wenn ich ein Prgramm wie SETI starte, die Pipe übereinen seperaten Thread auslesen müsste, da sie für lange zeit nicht leer wird. Nur ist threadprogrammierung sehr kompliziert...das mit der DAtei wäre ne idee...zwar unschön aber effizient
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Sa 15.01.05 11:19 
gonzo_16 hat folgendes geschrieben:
Nur ist threadprogrammierung sehr kompliziert...
TThread gibt's AFAIR auch von der Kylix-RTL.
Ansonsten weiß ich nur, daß Thread-Programmierung unter Windows ohne die VCL noch das einfachste ist, was ich je mit der API gemacht habe, ich weiß aber natürlich nicht, wie es unter Linux damit aussieht, kann mir aber nicht vorstellen, daß es großartig anders sein kann.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
gonzo_16 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 21



BeitragVerfasst: So 16.01.05 20:04 
jo..bei kylix habe iuch keine ahnng wie das geht...bei C isses jedenfalls nicht so einfach...
opfer.der.genauigkeit
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754
Erhaltene Danke: 1



BeitragVerfasst: Do 20.01.05 11:44 
Also mir ist nur teilweise klar, was du machen möchtest.
Bzw. für die Formulierung gibt es unter Linux sicherlich tausend Lösungen.

Der Client, von dem du die Nachrichten lesen willst schickt die Nachrichten wohin?
Von wo willst du sie lesen? Vom Standart - Output? Denn | bzw. >> in C macht nix anderes als in den std- output schreiben, solange der Prameter nicht geändert wurde.
D.h. dein Client, wenn er Nachrichten schickt, muß ein Ausgabeziel haben.
Entweder eine Datei oder eine Console wte.
In beiden Fällen kannst du die Ausgabe wie eine Datei einlesen.

Nen Thread müßtest du auch nicht schreiben, wenn du da nicht so die Erfahrung hast. N Timer reicht doch :shock: .. oder etwa nicht :?:

_________________
Stellen Sie sich bitte Zirkusmusik vor.
gonzo_16 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 21



BeitragVerfasst: Mo 07.02.05 18:06 
um es dir einfacher zu mache und lange umschreibunge zu sparen (bin noch neu be Kylix, und kann meine Probleme schlecht beschreiben)
Ich möchte diesen C-Code in Kylix umsetzen:
Jetzt mal ganz einfach dargestellt:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
#include <stdio.h>

int main()
{
   char buffer[2048];
   FILE* pipe = popen("/bin/sh -c ls", "r");
   while (!feof(pipe))
   {
        fgets(bufer, 2048, pipe);
        printf("%s", buffer);
   }
}


Zuletzt bearbeitet von gonzo_16 am Di 08.02.05 13:56, insgesamt 1-mal bearbeitet
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mo 07.02.05 18:23 
www.swissdelphicente.../showcode.php?id=990 <- so ginge es bei windoze =)
opfer.der.genauigkeit
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754
Erhaltene Danke: 1



BeitragVerfasst: Di 08.02.05 22:35 
Weiß nicht ob dir das weiterhilft, wenn ja, bitte um Rückmeldung, dann merk ich mir den Link.
Hab mal rumgeschnüffelt.

mailman.fastxs.net/p...002-July/000811.html

Scheint sich dabei um ne Drittkomponente zu handeln.

_________________
Stellen Sie sich bitte Zirkusmusik vor.
gonzo_16 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 21



BeitragVerfasst: Do 10.02.05 01:38 
genau das habe ich gebraucht...nun weiss ich wie das mit der Pipe funktioniert...
Nur Leider hat das mit den Uses die er benutzt hat in meinem Kylix nicht hin...er SAgt er wisse nicht was TPipe ist...hm

schon mal Vielen Dank
gonzo_16 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 21



BeitragVerfasst: Do 10.02.05 02:15 
hqab von nem Freund gesagtr bekommen wie es geht: hier ein Beispiel um ls auszuführen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var pioF: PIOFile;
 l: Integer;
 cmd: pChar;
begin
  GetMem(cmd,10000) ;
  pioF:=LibC.pOpen('ls','r');
  Libc.fread(cmd,1,10000,pioF);
  LibC.pclose(pioF);
  memo1.Lines.Add(cmd);
  FreeMem(cmd,10000);


Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.