AddCharR korrekt?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
WeePee
Beiträge: 25
Registriert: So 8. Dez 2013, 13:46

AddCharR korrekt?

Beitrag von WeePee »

Hallo,

folgender Code ergibt - zumindest bei deutschem Zeichensatz - ein Problem:

Code: Alles auswählen

 
Lokal_string := AddCharR('.', 'über', 10);
writeln(Lokal_string);
Lokal_string := AddCharR('.', 'uber', 10);
writeln(Lokal_string);  
 
In der Konsolenausgabe wird das "ü" noch seltsam 2-buchstabig dargestellt:
AddCharR.jpg
Allerdings, bei korrekter Ausgabe sieht das Ganze so aus:

Code: Alles auswählen

 
über.....
uber......
 
Soll das so sein?

Edit sagt: (Length('über'))

Länge von "über": 5
Länge von "uber": 4

Häääh? Was mache ich falsch?

Viele Grüße
Wolfram

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: AddCharR korrekt?

Beitrag von Michl »

Das ist generell i.O. so.

Du nutzt unter Standard-Einstellungen UTF8 für normale Strings in der IDE. Du musst bei Sonderzeichen z.B. äöüß... , falls diese in der Codepage von der Konsole vorhanden sind, diese zuvor umwandeln.

z.B.

Code: Alles auswählen

uses ..., LConvEncoding;
...
  writeln(UTF8ToCP1252(Lokal_string));     
bei Lazarus 1.0.14 sollte auch noch

Code: Alles auswählen

  writeln(UTF8ToConsole(Lokal_string));
funktionieren.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

WeePee
Beiträge: 25
Registriert: So 8. Dez 2013, 13:46

Re: AddCharR korrekt?

Beitrag von WeePee »

Das war mir so nicht bewusst. Wo kann ich das umstellen?
Viele Grüße
Wolfram

antwort: hab's gefunden: http://wiki.freepascal.org/LCL_Unicode_Support/de

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: AddCharR korrekt?

Beitrag von mschnell »

Das kann man so nicht sagen.

Wenn Das Programm beispielsweise auf einem Linux-Rechner in einer Telnet-Session läuft und Du Putty benutzt, um es zu starten, kannst Du bei Putty diverse Zeichen-Kodierungen einstellen. U.a. auch UTF-8, dann brauchst Du im Programm gar nichts zu ändern.

(Das ist nur eines von 1000 Szenarien.)

Jedenfalls hat das Problem mit AddCharR wenig zu tun, sondern damit, dass man nicht wissen kann wie die Zeichen, die von writeln abgegeben werden, weiter verarbeitet werden.

-Michael

Antworten