Einzelnen Beitrag anzeigen

peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
704 Beiträge
 
Delphi 12 Athens
 
#7

AW: Vordefinierte Delphi-Bezeichner Char & String umdefinieren?

  Alt 2. Mai 2019, 15:29
Hallo Community,

ich möchte „alte“ Delphi-Bibliotheken aus den Jahren 2002 – 2004 „reanimieren“, weil sie damals einfach exzellent funktioniert haben und heute auch noch sehr gute Dienste leisten würden.

Dabei ergibt sich folgendes Problem:

Die Typen Char und String hatten damals noch andere Bedeutungen.

Meine – leider NICHT funktionierende – Idee sieht so aus:

Delphi-Quellcode:
Type
  Char = AnsiChar;
  String = AnsiString;
Der Compiler (Delphi XE5 Professional) mag das allerdings nicht.
Der Compiler hat immer recht . Das kann nicht funktionieren.

Die Portierung nach Unicode (also Char = Widechar, String = Unicodestring, PChar = PWidechar) muss nicht so aufwendig sein wie Du glaubst. Nach meiner Erfahrung mit der Umstellung seinerzeit kompiliert der Löwenanteil des alten Kodes ohne Probleme und funktioniert sogar noch. Falls Du einen Satz halbwegs vollständiger Unittests für den alten Kode hast kann man auch Problemfälle schnell finden.

Das sind insbesondere:
  • Kode, der annimmt, Sizeof(Char) = Sizeof(Byte)
  • Kode, der Strings als Speicher für binäre Daten mißbraucht
  • Kode, der Strings in Dateien speichert oder aus diesen liest (muss aber kein wirkliches Problem sein)
  • Kode, der mit externen DLLs interagiert, die PAnsiChar als Parameter erfordern

Wenn Du alten Kode wiederverwenden willst, mach Dir die Mühe, ihn ordentlich auf Unicode zu portieren, und falls Du noch keine Unittests hast, schreib welche. Das ist zwar jetzt mehr Aufwand, aber es vermeidet jede Mengen Probleme in der Zukunft.
Peter Below
  Mit Zitat antworten Zitat