AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Delphi-IDE/Debugger nicht richtig unicodefähig?
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi-IDE/Debugger nicht richtig unicodefähig?

Ein Thema von himitsu · begonnen am 15. Okt 2013 · letzter Beitrag vom 16. Okt 2013
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

Delphi-IDE/Debugger nicht richtig unicodefähig?

  Alt 15. Okt 2013, 11:28
Kann es sein, daß die Delphi-IDE ein paar Macken beim Unicode hat?

z.B. das Ereignisprotokoll:
Delphi-Quellcode:
var
  S: string;
  A: AnsiString;
begin
  S := 'TELENERG-ŁÓD';
  if Ord(S[10]) <> 321 then // ging keim kopieren/speichern das Unicode kaputt
    S := 'TELENERG-'#$0141'ÓD';
  OutputDebugString(PChar(S)); // müsste gehen, tut es aber nicht ... das Ł geht kaputt
  OutputDebugStringW(PWideChar(S)); // ist ja das Selbe wie PChar (seit D2009)
  OutputDebugStringA(PAnsiChar(UTF8Encode(S)));
  OutputDebugStringA(PAnsiChar(AnsiString(S))); // das geht natürlich nicht, da hierbei auf jeden Fall die Unicodeinfos verloren gehen

  A := 'irgendwasÚ';
  if Ord(A[10]) <> 218 then
    A := 'irgendwas'#$DA;
  OutputDebugStringA(PAnsiChar(A)); // hmmmm, die Ansiversion nimmt scheinbar ANSI und UTF8 an

  R := UTF8Encode('irgendwas ä');
  SetCodePage(R, $FFFF, False);
  R := R + AnsiString(#$DA);
  OutputDebugStringA(PAnsiChar(R)); // sooo, ANSI wird als UTF8 interpretiert und wenn nicht nach Unicode konvertierbar, dann als ANSI

  // aber dennoch blöd, daß Unicode-OutputDebugString nicht funktioniert ... es kann doch nicht sein, daß man alles selber machen muß :wall:
end;
und bei der Dateisuche hab ich auch schon immer Probleme.
- ist eine Datei schon in der IDE geladen, dann funktioniert "Suchen in Dateien", ber ist die nicht geladen, dann kann man alles mit Unicode vergessen
- - Unicodezeichen zu suchen geht nicht
- - und wenn man etwas "ANSI" sucht, in Dateien die Unicode enthalteb, dann geht es praktisch nur, wenn die Datei auch als UTF8 gespeichert ist, wobei in den Suchergebnissen die UTF8-Codes sichtbar sind.

Bei S := 'alle ä suchen'; in einer Datei und diese Datei ist nicht in der IDE geladen:
Wenn ich nach dem "ä" suche, dann wird die Datei nicht gefunden und bei der Suche nach "alle", dann steht im Suchergebnis Test.pas(21): S := 'alle ä suchen'; .



Wisst ihr wie toll das ist, wenn man nach einem Unicodeproblem im Programm sucht, und dann der Debugger einen veräppelt?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (15. Okt 2013 um 11:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

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

AW: Delphi-IDE/Debugger nicht richtig unicodefähig?

  Alt 15. Okt 2013, 11:59
Noch komischer schaut es aus wenn man den DebugViewer von MS dran hängt und z.B. Chinesische Zeichen anzeigen will.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Delphi-IDE/Debugger nicht richtig unicodefähig?

  Alt 15. Okt 2013, 19:39
Zitat:
Wisst ihr wie toll das ist, wenn man nach einem Unicodeproblem im Programm sucht, und dann der Debugger einen veräppelt?
Vor allem dann wenn man mehr zeit damit verbringt teile des Quelltextes dahin zu konvertieren als eigentlichen Code zu schreiben.
PansiChar(AnsiString( bla. blaa
Wenn man so wie ich als Laie nicht jedes Bit und byte kennt ist das schon arg stressig.

Hab bestimmt mehr speicherlecks nur aufgrund der Konvertierungen als nötig sein sollten

gruss

Geändert von EWeiss (15. Okt 2013 um 19:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.588 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Delphi-IDE/Debugger nicht richtig unicodefähig?

  Alt 15. Okt 2013, 20:34
Da kann die Delphi IDE aber nichts dafür möchte ich mal anmerken... Siehe Doku:
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Zitat:
OutputDebugStringW converts the specified string based on the current system locale information and passes it to OutputDebugStringA to be displayed. As a result, some Unicode characters may not be displayed correctly.
Und was das Speichern angeht:
Wenn die Datei als UTF8 gespeichert ist, hatte ich damit noch keinerlei Probleme. Wenn man allerdings beim Speichern die Frage, ob die Datei als UTF8 gespeichert werden soll, trotz Warnung mit Nein beantwortet, gehen die Zeichen kaputt. Das war aber auch der einzige Fall, bei dem ich das "Problem" hatte, aber da war ich ja selbst schuld.

// EDIT:
Vor allem dann wenn man mehr zeit damit verbringt teile des Quelltextes dahin zu konvertieren als eigentlichen Code zu schreiben.
Solange es keine Warnungen wie bedenkliche Typumwandlung gibt, kann man die Hinweise zu dem Thema ignorieren, Fehler sollten da nicht auftauchen.
Eine implizite String-Umwandlung mit potenziellem Datenverlust von 'string' zu 'AnsiString' kann z.B. zwar Probleme geben, weil Unicodezeichen herausfallen, aber wenn gar keine drin sind, funktioniert das.

Es sind aber keine schweren Probleme.

Speicherlecks sollten auch durch die Konvertierungen nicht entstehen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (15. Okt 2013 um 20:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Delphi-IDE/Debugger nicht richtig unicodefähig?

  Alt 15. Okt 2013, 21:41
Da kann die Delphi IDE aber nichts dafür möchte ich mal anmerken... Siehe Doku:
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Zitat:
OutputDebugStringW converts the specified string based on the current system locale information and passes it to OutputDebugStringA to be displayed. As a result, some Unicode characters may not be displayed correctly.
Autsch. Also sind doch nocht Win9x-Reste in Win7 und neuer vorhanden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#6

AW: Delphi-IDE/Debugger nicht richtig unicodefähig?

  Alt 16. Okt 2013, 10:32
Autsch. Also sind doch nocht Win9x-Reste in Win7 und neuer vorhanden.
Streiche Win9x, setze Win 3.x... nur so als Randbemerkung.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Delphi-IDE/Debugger nicht richtig unicodefähig?

  Alt 16. Okt 2013, 10:42
OMG

Vielleicht mal im QC anfragen, ob die es bis XE9 vielleicht schaffen dort mal einen Wrapper neben diese APIs zu legen, der direkt String annimmt, nach UTF8 konvertiert und an die AnsiVersion übergibt.

[edit]
Obwohl es wohl besser ist, wenn wir uns selber eine kleine abstrakte Debug-Klasse anlegen, so mit Klassen-Funktionen ala IsDebuggerPresent, OutputDebugString usw., welche sich dann intern für die jeweiligen OS anpasst. (jetzt wo es nicht nur Windows gibt)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (16. Okt 2013 um 10:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Delphi-IDE/Debugger nicht richtig unicodefähig?

  Alt 16. Okt 2013, 10:54
OMG

Vielleicht mal im QC anfragen, ob die es bis XE9 vielleicht schaffen dort mal einen Wrapper neben diese APIs zu legen, der direkt String annimmt, nach UTF8 konvertiert und an die AnsiVersion übergibt.

[edit]
Obwohl es wohl besser ist, wenn wir uns selber eine kleine abstrakte Debug-Klasse anlegen, so mit Klassen-Funktionen ala IsDebuggerPresent, OutputDebugString usw., welche sich dann intern für die jeweiligen OS anpasst. (jetzt wo es nicht nur Windows gibt)
Also wir verwenden schon seit 10 Jahre eine eigens Implementierte Methode namens TRACE.
Dahinter verbirgt sich (ein mit "$IFOPT ..." verseuchter Code) der dann letztendlich OutputDebugstring aufruft.

Ich dennke hier braucht man nicht Emba wenn man sowas vermisst.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#9

AW: Delphi-IDE/Debugger nicht richtig unicodefähig?

  Alt 16. Okt 2013, 13:48
also zumindest im Sourcecode kann ich fast alle Zeichen unter XE verwenden.
Scheint aber abhängig zu sein von wo raus das Zeichen aus der Zwischenablage kommt. Aus word kann ich die Zeichen alle per strg-c/strg-v in Delphi einfügen.
Haut mal nen LeftRight-Override rein
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:39 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