Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.072 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