Hallo,
(wahrscheinlich trivial, aber ich finde nichts)
Ich schreibe einiges in ein Logfile, möchte aber etwas davon beim Programmlauf auf das Terminal ausgeben. Dabei möchte ich den Quelltext - z.B. eine Prozedur "Anzeige_Variablen" mit der Ausgabe von eingestellten Variablen - nicht mehrfach schreiben
Kann an das Teriminal über eine Dateivariable ansprechen?
Beispiel:
Anzeige_Variablen(LogFile);
Anzeige_Variablen(Terminal);
mfg Friedrich
Ausgabe in Datei und auf Terminal
Re: Ausgabe in Datei und auf Terminal
Ist das nicht das, was write, bzw. writeln macht, oder verstehe ich dich falsch?
https://www.freepascal.org/docs-html/rt ... write.html
https://www.freepascal.org/docs-html/rt ... write.html
-
fht
- Beiträge: 3
- Registriert: Mi 22. Jul 2020, 18:06
- OS, Lazarus, FPC: Debian GNU/Linux 10 (buster) / FPC 3.0.4+dfsg-22
- CPU-Target: 64Bit
- Wohnort: 58791 Werdohl (Germany)
- Kontaktdaten:
Re: Ausgabe in Datei und auf Terminal
Wahrscheinlich war meine Frage viel zu knapp formuliert.
Ich denke mir in etwa folgendes
Es gibt eine Prozedur
Im Hauptprogramm steht dann
Aufgerufen würde dann später :
Anzeige_Variablen(f_log);
Bislang fällt mir nur ein, die Prozedur Kontrolle_Parameter zweimal zu schreiben, das wäre aber sehr unschön
Ich denke mir in etwa folgendes
Es gibt eine Prozedur
Code: Alles auswählen
PROCEDURE Anzeige_Variablen(f_log:text);
write(f_log, "Eingabedatei); writeln(f_log,f_ein_name);
write(f_log, "Ausgabedatei); writeln(f_log,f_aus_name);
.....
END; {Kontrolle_Parameter}Code: Alles auswählen
BEGIN
IF f_log_name ='log' then
BEGIN
assign(f_log,'log.txt);
reset(f_log);
END
ELSE
[i]<entsprechendes für die Ausgabe auf das Terminal>
<wie, weiss ich nicht> [/i]
ENDAufgerufen würde dann später :
Anzeige_Variablen(f_log);
Bislang fällt mir nur ein, die Prozedur Kontrolle_Parameter zweimal zu schreiben, das wäre aber sehr unschön
-
jammernich
- Beiträge: 42
- Registriert: Di 5. Nov 2024, 22:36
- OS, Lazarus, FPC: Win11, Lazarus 4.5, fpc 3.2.3
Re: Ausgabe in Datei und auf Terminal
@fht
es gibt viele Wege: deklariere doch einen Art Schalter (globale Variable) oder geh über einen weiteren Parameter für die Procedure
es gibt viele Wege: deklariere doch einen Art Schalter (globale Variable) oder geh über einen weiteren Parameter für die Procedure
Code: Alles auswählen
// var ConsoleEnabled : Boolean = True;
procedure Log(AMsg : String; AOnConsole: boolean = False);
begin
//alternativ: über ConsoleEnabled
if AOnConsole then Writeln(AMsg) else //AUSGABE Console
writeln(textfile, AMsg); //AUSGABE DATEI
end; -
Warf
- Beiträge: 2310
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Ausgabe in Datei und auf Terminal
Ja, es gibt zum einen die Handles: StdOutputHandle, StdInputHandle und StdErrorHandle
Zusätzlich gibt es noch die File Variablen: Input, Output und ErrOutput
Ich arbeite lieber mit den Handles als mit den Textfiles weil Textfiles als "magic" type einige Eigenheiten haben über die ich nicht nachdenken will. Aber das kann zu inkosistenzen im interen TextRec der File Variablen führen, also mischen davon ist gefährlich. Entweder das eine oder das andere
Zusätzlich gibt es noch die File Variablen: Input, Output und ErrOutput
Ich arbeite lieber mit den Handles als mit den Textfiles weil Textfiles als "magic" type einige Eigenheiten haben über die ich nicht nachdenken will. Aber das kann zu inkosistenzen im interen TextRec der File Variablen führen, also mischen davon ist gefährlich. Entweder das eine oder das andere