AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Delphi XE/XE2 Probleme mit UTF-8 Editor
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi XE/XE2 Probleme mit UTF-8 Editor

Ein Thema von Mavarik · begonnen am 14. Sep 2011 · letzter Beitrag vom 14. Sep 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.130 Beiträge
 
Delphi 10.3 Rio
 
#1

Delphi XE/XE2 Probleme mit UTF-8 Editor

  Alt 14. Sep 2011, 10:04
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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.174 Beiträge
 
Delphi 10.4 Sydney
 
#2

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

  Alt 14. Sep 2011, 10:07
Gibt doch den String als $xx-Wert an. Evtl. bringt ein vorgesetztes AnsiString() auch was bringen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.130 Beiträge
 
Delphi 10.3 Rio
 
#3

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

  Alt 14. Sep 2011, 10:34
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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.174 Beiträge
 
Delphi 10.4 Sydney
 
#4

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

  Alt 14. Sep 2011, 10:37
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.089 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 14. Sep 2011, 11:03
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.130 Beiträge
 
Delphi 10.3 Rio
 
#6

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

  Alt 14. Sep 2011, 11:42
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.
Miniaturansicht angehängter Grafiken
ebcdic_vorher1.png   ebcdic_nachher1.png   ebcdic_vorher2.png   ebcdic_nachher2.png  
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.174 Beiträge
 
Delphi 10.4 Sydney
 
#7

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

  Alt 14. Sep 2011, 12:08
Kannst du denn nicht definieren das die entsprechende Quelldatei nicht UTF8 gespeichert wird? da gabs doch mal was ...
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.268 Beiträge
 
Delphi 12 Athens
 
#8

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

  Alt 14. Sep 2011, 12:11
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.089 Beiträge
 
Delphi 12 Athens
 
#9

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

  Alt 14. Sep 2011, 13:28
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.268 Beiträge
 
Delphi 12 Athens
 
#10

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

  Alt 14. Sep 2011, 13:36
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:37 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