Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Umlaute mit Readln einlesen (https://www.delphipraxis.net/84292-umlaute-mit-readln-einlesen.html)

Luckie 14. Jan 2007 22:32


Umlaute mit Readln einlesen
 
Gegeben sein folgendes Programm:
Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  windows;

function Ansi2OEM(AnsiString: string): string;
begin
  ANSIString := ANSIString + #0;
  CharToOEM(PChar(ANSIString), @ANSIString[1]);
  Delete(ANSIString, Length(ANSIString), 1);
  Result := ANSIString;
end;

var
  s: String = '';

begin
  Writeln(Ansi2Oem('äöüäöüäöüäöööäüäöüäöäöüöüöäöüöäöüöäöüööüöäöüöäöüöäöüööüöäöüöäöüöäöüö'));
  while True do
  begin
    s := '';
    Readln(s);
    Writeln(Ansi2OEM(s));
  end;
end.
Die Ausgabe funktioniert, nur die Eingabe nicht. Gibt man zum Beispiel ein ö ein kommt " raus. Gibt es dafür eine Lösung?
Delphi-Quellcode:
Readln(Ansi2OEM(s));
Funktioniert nicht.

St.Pauli 14. Jan 2007 22:48

Re: Umlaute mit Readln einlesen
 
Delphi-Quellcode:
ReadLn(s);
WriteLn(s);
Gibt mir die Umlaute korrekt aus.

Luckie 14. Jan 2007 22:52

Re: Umlaute mit Readln einlesen
 
OK, da habe ich einmal zu viel gedacht. :mrgreen:

Harry M. 14. Jan 2007 22:55

Re: Umlaute mit Readln einlesen
 
Bei mir nicht :(
Delphi-Quellcode:
äöüäöüäöüäöööäüäöüäöäöüöüöäöüöäöüöäöüööüöäöüöäöüöäöüööüöäöüöäöüöäöüö
äöü
""_
Edit: Alles klar jetzte habe ichs. :)

St.Pauli 14. Jan 2007 23:04

Re: Umlaute mit Readln einlesen
 
Und imho müsstest du zur Ausgabe lediglich

Delphi-Quellcode:
function ChrToOem(s: string): string;
begin
  SetLength(Result, Length(s));
  CharToOem(PAnsiChar(s), @Result[1]);
end;

function OemToChr(s: string): string;
begin
  SetLength(Result, Length(s));
  OemToChar(PAnsiChar(s), @Result[1]);
end;
verwenden.

Nachtrag:
Wenn man nur mit ChrToOem konvertiert, käme es zu kuddel-muddel. Strings die du im Quelltext festgelegt hast wären im ASCII-Zeichensatz, Strings die du später einließt im OEM-Zeichensatz. Deswegen habe ich noch die Routine zum Konvertieren von Oem nach ASCII hinzugefügt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz