Ausgabe und Protokollierung

Konsolenausgabe

Write / WriteLn

Um Zeichenketten in Pascal auszugeben, verwenden Sie die integrierten Prozeduren Write oder WriteLn; WriteLn hängt automatisch einen Zeilenumbruch an das Ende an.

Dies ist eine sehr flexible eingebaute Prozedur in Pascal: Sie akzeptiert beliebig viele Parameter beliebiger Datentypen, wandelt Werte bei der Ausgabe automatisch in Zeichenketten um und unterstützt spezielle Formatierungssyntax zur Steuerung der Zahlenbreite und Gleitkommapräzision.

WriteLn('Hello world!');

// Ganzzahlausdruck ausgeben
WriteLn('You can output an integer: ', 3 * 4);

// Ganzzahl rechtsbündig mit Gesamtbreite 10 Zeichen
WriteLn('You can pad an integer: ', 666:10);

// Gleitkommaformat: Gesamtbreite 1, 4 Nachkommastellen
WriteLn('You can output a float: ', Pi:1:4);Code-Sprache: JavaScript (javascript)

Manuelle Zeilenumbrüche

Konstante LineEnding

Wenn Sie manuell einen Zeilenumbruch innerhalb einer Zeichenkette einfügen möchten, nutzen Sie die Konstante LineEnding aus der Free Pascal-Standardbibliothek. Die Castle Game Engine bietet zudem die kürzere Alias-Konstante NL.

Pascal-Zeichenketten verarbeiten keine Backslash-Escape-Sequenzen (\n hat keine Wirkung). Folgende Schreibweise ist fehlerhaft:

// Fehler: \n wird nicht als Zeilenumbruch erkannt
WriteLn('One line.\nSecond line.');Code-Sprache: JavaScript (javascript)

Zwei gültige Schreibweisen:

// Zeilenumbruchkonstante verketten
WriteLn('One line.' + LineEnding + 'Second line.');

// Zwei separate WriteLn-Aufrufe (übersichtlicher und empfohlen)
WriteLn('One line.');
WriteLn('Second line.');Code-Sprache: JavaScript (javascript)

Wichtige Hinweise

WriteLn funktioniert nur bei Konsolenprogrammen

Write/WriteLn funktionieren nur bei Konsolenanwendungen. Am Anfang der Hauptdatei muss eine Compiler-Direktive angegeben werden:

{$apptype CONSOLE}Code-Sprache: PHP (php)

Verwenden Sie nicht den GUI-Modus:

{$apptype GUI} // Direkter Aufruf von WriteLn in GUI-Programmen verursacht FehlerCode-Sprache: PHP (php)
  • Unix/Linux/macOS: Bei GUI-Programmen tritt teilweise kein Absturz auf, die Ausgabe ist jedoch bedeutungslos;
  • Windows: Die Ausführung von WriteLn in grafischen GUI-Anwendungen löst einen Laufzeitfehler aus.

Protokollstandards von Castle Game Engine

Bei der Entwicklung mit Castle Game Engine dürfen Sie WriteLn nicht direkt für Debug-Ausgaben verwenden. Nutzen Sie stattdessen die spezialisierten Protokollfunktionen:

  • WriteLnLog: Normale Debug-Protokolle
  • WriteLnWarning: Warnungsprotokolle

Die Engine leitet Protokolle automatisch an die passenden Ausgabemedien weiter:

  1. Unix-Systeme: Standardkonsolenausgabe stdout;
  2. Windows-GUI-Spiele: Schreiben in lokale Protokolldateien;
  3. Android-Plattform: Integration in das Android-Systemprotokoll, einsehbar mit adb logcat.

Begriffstabelle

Englischer OriginalbegriffPascal-Bedeutung
Write / WriteLnAusgabe ohne Zeilenumbruch / Ausgabe mit Zeilenumbruch
LineEndingSystem-Zeilenumbruchkonstante (plattformübergreifend)
NLAbgekürzte Zeilenumbruchkonstante von Castle
paddingZahlenfeldauffüllung, Ausrichtungsbreite
precisionGleitkomma-Nachkommastellenpräzision
{$apptype CONSOLE}Compiler-Direktive für Konsolenanwendungen
{$apptype GUI}Compiler-Direktive für grafische Anwendungen
adb logcatAndroid-Protokollanzeigetool
standard outputStandardausgabestrom (stdout)

Vollständiges Beispiel dieses Abschnitts

{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}
{$R+}

begin

  WriteLn('Hello world!');

  // Ganzzahlausdruck ausgeben
  WriteLn('You can output an integer: ', 3 * 4);

  // Ganzzahl rechtsbündig mit Gesamtbreite 10 Zeichen
  WriteLn('You can pad an integer: ', 666:10);

  // Gleitkommaformat: Gesamtbreite 1, 4 Nachkommastellen
  WriteLn('You can output a float: ', Pi:1:4);

  // Fehler: \n wird nicht als Zeilenumbruch erkannt
  // WriteLn('One line.\nSecond line.');

  // Zeilenumbruchkonstante verketten
  WriteLn('One line.' + LineEnding + 'Second line.');

  // Zwei separate WriteLn-Aufrufe (übersichtlicher und empfohlen)
  WriteLn('One line.');
  WriteLn('Second line.');

end.Code-Sprache: PHP (php)

Sie müssen die obige Compiler-Direktive einfügen, damit es funktioniert

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert