Writeln-Ausgabe umleiten??

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
c-bob
Beiträge: 30
Registriert: Mo 15. Jun 2009, 11:11

Writeln-Ausgabe umleiten??

Beitrag von c-bob »

Hallo!

Wieder so eine wahrscheinlich triviale Frage: kann man mit 'writeln' auch in LCL-Programmen arbeiten?
Grund der Denke ist, ich muss ein console-Programm schreiben, welches sich bekanntlich ja nicht gut aus der IDE heraus debuggen läßt. Wenn ich es nun schaffen könnte, "einfach" eine Art Wrapper drumherum bastele, das also irgendwie in ein Form einbetten kann, wäre das ja wiederum lauffähig und debug-fähig, wenn man nicht auf Eingaben angewiesen ist.
Oder stelle ich mir das zu einfach vor?

Gruß
_c_

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: Writeln-Ausgabe umleiten??

Beitrag von Hitman »

Zu debug zwecken gibt es debugln oder die MultiLog library (letztere kann ich sehr empfehlen).

df.id
Beiträge: 20
Registriert: Fr 23. Mai 2008, 00:29
OS, Lazarus, FPC: Windows|Linux (L 3.8.0 FPC 3.2.2)
CPU-Target: Intel
Wohnort: Münster
Kontaktdaten:

Re: Writeln-Ausgabe umleiten??

Beitrag von df.id »

ein console-Programm schreiben, welches sich bekanntlich ja nicht gut aus der IDE heraus debuggen läßt.
Die Lazarus-IDE ist gut in der Lage ein Consolenprogramm zu debuggen. {$APPTYPE CONSOLE}
Ich mache das für Windows, Linux und Mac. Warum sollte das nicht klappen?
Der Debugger GDB ist sogar selbst ein Consolenprogramm.

Um die Frage zu beantworten:

Das native Writeln verwendet implizit die Textdatei Output für alle Ausgaben.
Diese kann man Assign/Rewrite auch in eine Datei umleiten:

Code: Alles auswählen

begin
  assign(output,'debug.tmp');
  rewrite(output);
  writeln('Mein Debugtext ...');
  close(output);
end.
Man kann auch - mit etwas mehr Aufwand - die Writeln-Ausgaben an eine eigene Prozedur umlenken, um den Text wohin auch immer weiterzugeben.
Auf Wunsch kann ich den Code raussuchen.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Writeln-Ausgabe umleiten??

Beitrag von mse »

df.id hat geschrieben: Die Lazarus-IDE ist gut in der Lage ein Consolenprogramm zu debuggen. {$APPTYPE CONSOLE}
Ich mache das für Windows, Linux und Mac. Warum sollte das nicht klappen?
Der Debugger GDB ist sogar selbst ein Consolenprogramm.
Letzhin haben wir gerätselt, wie das unter Linux zu machen wäre und haben ausser der Verwendung von MSEide mit der eingebauten Target-Konsole lediglich eine schrecklich komplizierte Methode gefunden:
http://www.lazarusforum.de/viewtopic.php?f=9&t=3080

Wie kommst du an die stdout und strderr Ausgaben, wie machst du stdinp Eingaben?

Martin

c-bob
Beiträge: 30
Registriert: Mo 15. Jun 2009, 11:11

Re: Writeln-Ausgabe umleiten??

Beitrag von c-bob »

Richtig! Schliess mich der Frage voll an!
Wie kann man ein console programm aus der IDE heraus debuggen, so mit Breakpoints usw.?

Konnte da selbst von einem der Devs nicht wirklich eine Antwort erhalten, ausser dass es mit nem nicht freigegebenen Patch irgendwie machbar sein sollte, wobei der Patch aber nicht wirklich gefällt : http://forum.lazarus.freepascal.org/ind ... 773.0.html

Antworten