convert charset for console/de

From Lazarus wiki

Deutsch (de)
Zurück zur Konsolenseite.

Den Zeichensatz für die Ausgabe an der Konsole anpassen

Dieser Artikel beschäftigt sich mit der Windowsprogrammierung.
Falls Ihr Konsolenprogramm unter Windows Ansi-Text mit Umlauten und Sonderzeichen korrekt ausgeben soll, dann müssen Sie den Ansi-Text in den OEM-Zeichensatz konvertieren.
Unter Linux (Ubuntu) ist eine Konvertierung des Zeichensatzes nicht notwendig.

program project1;

{$mode objfpc}{$H+}
{$IMPLICITEXCEPTIONS OFF}

uses
  Windows;

var
  strText: string;

  // Diese Funktion übersetzt den Inhalt eines Ansistrings
  // in den Zeichensatz der Konsole
  function funAnsiZuOEM(strUebergabe: string): string;
  begin
    // Ab Lazarus 1.2.0 muss der folgende Absatz eingefügt werden:
    strUebergabe := Utf8ToAnsi(strUebergabe);
    
    // Bis Lazarus 1.0.14 genügte dieser Teil:
    strUebergabe := strUebergabe + #0;
    CharToOEM(PChar(strUebergabe), @strUebergabe[1]);
    Delete(strUebergabe, Length(strUebergabe), 1);
    Result := strUebergabe;
  end;

begin

  strText := 'Rosé und Tölt';
  writeln('Ausgabe: ' + funAnsiZuOEM(strText));

end.



--Olaf 10:37, 15 February 2014 (CET)