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-ProtokolleWriteLnWarning: Warnungsprotokolle
Die Engine leitet Protokolle automatisch an die passenden Ausgabemedien weiter:
- Unix-Systeme: Standardkonsolenausgabe stdout;
- Windows-GUI-Spiele: Schreiben in lokale Protokolldateien;
- Android-Plattform: Integration in das Android-Systemprotokoll, einsehbar mit
adb logcat.
Begriffstabelle
| Englischer Originalbegriff | Pascal-Bedeutung |
|---|---|
| Write / WriteLn | Ausgabe ohne Zeilenumbruch / Ausgabe mit Zeilenumbruch |
| LineEnding | System-Zeilenumbruchkonstante (plattformübergreifend) |
| NL | Abgekürzte Zeilenumbruchkonstante von Castle |
| padding | Zahlenfeldauffüllung, Ausrichtungsbreite |
| precision | Gleitkomma-Nachkommastellenpräzision |
| {$apptype CONSOLE} | Compiler-Direktive für Konsolenanwendungen |
| {$apptype GUI} | Compiler-Direktive für grafische Anwendungen |
| adb logcat | Android-Protokollanzeigetool |
| standard output | Standardausgabestrom (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