Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Delphi XE/XE2 Probleme mit UTF-8 Editor (https://www.delphipraxis.net/163056-delphi-xe-xe2-probleme-mit-utf-8-editor.html)

Mavarik 14. Sep 2011 10:04

Delphi XE/XE2 Probleme mit UTF-8 Editor
 
Hallo Zusammen!

Hab mal nen neuen Thread aufgemacht. Thema war:

Ein Probleme zeigen sich in den *.pas Dateien die jetzt auch als UTF-8 weggeschrieben werden...

Dadurch gehen alle Sonderzeichen in Strings verloren...
Besonders ärgerlich!

Dafür hab ich noch keine Lösung, außer 2Mio Konstanten in den Source-Code bauen...
Ganz toll... Hat warscheinlich wieder keiner drüber nachgedacht...

Beispiel:

In einem String oder Procedure Aufruf steht:

DoPrinter('Û011<-Das ist eine Umschaltsequenz für den Printer'); Eigentlich steht da nach EBCDIC (DOS Zeichensatz) #219+'011'... Das 219er war halt der Ersatz für z.B. ESC Sequenzen an Nadeldrucker...
Das wird konvertiert in $C3 $9B '011' <- UTF-8

Genauso die Umlaute werden in den (Const)-Strings in UTF-8 umgeformt... Damit kann der Nadeldrucker auch nix anfangen...Natürlich werden diese im IDE-Editor dann auch falsch Dargestellt weil EBCDIC Zeichen nicht richtig dargestellt werden!


Grüsse Mavarik :coder:

Bernhard Geyer 14. Sep 2011 10:07

AW: Delphi XE/XE2 Probleme mit UTF-8 Editor
 
Gibt doch den String als $xx-Wert an. Evtl. bringt ein vorgesetztes AnsiString() auch was bringen.

Mavarik 14. Sep 2011 10:34

AW: Delphi XE/XE2 Probleme mit UTF-8 Editor
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1124236)
Gibt doch den String als $xx-Wert an. Evtl. bringt ein vorgesetztes AnsiString() auch was bringen.

Es geht ja nicht um ein Verhalten zur Laufzeit... Das AnsiString() bringt daher nix, da beim abspeichern der *.pas Files de Zeichen schon konvertiert werden...

Mavarik

Bernhard Geyer 14. Sep 2011 10:37

AW: Delphi XE/XE2 Probleme mit UTF-8 Editor
 
Zitat:

Zitat von Mavarik (Beitrag 1124246)
Es geht ja nicht um ein Verhalten zur Laufzeit... Das AnsiString() bringt daher nix, da beim abspeichern der *.pas Files de Zeichen schon konvertiert werden...

Ich meine das du das bei der Definition der Konstante mit angiebst.
Bei D6 und dem Nicht-Unicode-Editor habe ich so Widestrings als Konstanten definieren können.

Uwe Raabe 14. Sep 2011 11:03

AW: Delphi XE/XE2 Probleme mit UTF-8 Editor
 
Vielleicht hab ich da ja was falsch verstanden, aber ich arbeite sehr bequem mit EBCDIC in der IDE:

Delphi-Quellcode:
const
  cEBCDICCodePage = 1141;

type
  EBCDICString = type AnsiString(cEBCDICCodePage);

const
  cTest: EBCDICString = 'Hallo Welt';

procedure Test(const Value: EBCDICString);
var
  F: TFileStream;
begin
  F := TFileStream.Create('c:\temp\test.dat', fmCreate);
  try
    F.Write(Value[1], Length(Value));
  finally
    F.Free;
  end;
end;

begin
  Test(cTest); // geht genauso wie
  Test('Hello World'); // in beiden Fällen wird EBCDIC in den Stream geschrieben
end.

Mavarik 14. Sep 2011 11:42

AW: Delphi XE/XE2 Probleme mit UTF-8 Editor
 
Liste der Anhänge anzeigen (Anzahl: 4)
Zitat:

Zitat von Uwe Raabe (Beitrag 1124259)
Vielleicht hab ich da ja was falsch verstanden, aber ich arbeite sehr bequem mit EBCDIC in der IDE:

Delphi-Quellcode:
const
  cTest: EBCDICString = 'Hallo Welt';

Klar Du nimmst in Deinem Beispiel auch nur Zeichen die im Ascii Bereich sind.

Wenn Du mit ALT+0219 mal den großen Block (EBCDIC) rein copierst.. Bekommst Du das "Û" im Delphi Editor (z.b. Dephi 6)
Das gleiche gilt für die Umlaute.

Lad die Datei in XE/XE2 und die Zwiechen werden anch UTF-8 codiert... Damit ist der String unbrauchbar!

Zum Test kannst Du die IDE mal auf den Font Terminal umschalten..

Ich hab mal je 2 Vorher/Nachher Grafiken angefügt.

Mavarik

PS.: Hundert-Tausende zeilen Source-Code stammen aus den Jahr 1986-19xx, noch aus den Zeiten von Turbo-Pascal.

Bernhard Geyer 14. Sep 2011 12:08

AW: Delphi XE/XE2 Probleme mit UTF-8 Editor
 
Kannst du denn nicht definieren das die entsprechende Quelldatei nicht UTF8 gespeichert wird? da gabs doch mal was ...

himitsu 14. Sep 2011 12:11

AW: Delphi XE/XE2 Probleme mit UTF-8 Editor
 
Das UTF-8 in der Datei ist vollkommen egal, da es beim Compilieren wieder dekodiert wird.

Arbeite lieber mit einem Byte-Array oder schreibe die Zeichen einzeln in die Chars des AnsiStrings.

Uwe Raabe 14. Sep 2011 13:28

AW: Delphi XE/XE2 Probleme mit UTF-8 Editor
 
Zitat:

Zitat von Mavarik (Beitrag 1124268)
Klar Du nimmst in Deinem Beispiel auch nur Zeichen die im Ascii Bereich sind.

Wenn Du mit ALT+0219 mal den großen Block (EBCDIC) rein copierst.. Bekommst Du das "Û" im Delphi Editor (z.b. Dephi 6)
Das gleiche gilt für die Umlaute.

Also

Delphi-Quellcode:
const
  cTest: EBCDICString = 'Hallöle Welt';
funktioniert hier auch tadellos.

Was ich nicht nachvollziehen kann ist der große Block unter #219. Laut EBCDIC-Tabelle Codepage 1141 entspricht #219 einem "û" (Unicode-#00FB). Schreibe ich jetzt einen String mit einem "û" im Delphi-Editor und übergebe diesen an die Test-Routine, erfolgt automatisch eine Konvertierung nach EBCDIC und alles ist wieder im grünen Bereich. So erzeugt z.B. der Text "ûHallöle" die Byte-Folge "DC C8 81 93 93 6A 93 85", was auf einem IBM-Großrechner-Terminal dann auch korrekt als "ûHallöle" dargestellt wird.

himitsu 14. Sep 2011 13:36

AW: Delphi XE/XE2 Probleme mit UTF-8 Editor
 
Wobei die Umwandlung von Unicode/UTF-8 nach ANSI vom jeweiligen System abhängt, also von dessen Standard-Codepage.

Und somit ist soeine Umwandlung nicht immer Bytegenau möglich, wenn die Umwandlung erst auf den Zielsystem (zur Laufzeit) geschieht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:56 Uhr.
Seite 1 von 2  1 2      

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