Einzelnen Beitrag anzeigen

Gagamba

Registriert seit: 25. Jun 2012
19 Beiträge
 
#1

Unicode-String im Record speichern

  Alt 28. Aug 2012, 10:35
Hallo,
ich stelle grade von Delphi7 auf Delphi9. Dabei gibt es jetzt (wie erwartet) Probleme mit Unicode bzw. Widestring.
einfaches Codebeispiel:

Delphi-Quellcode:
TYPE Datenrecord = RECORD
 Name : STRING;
 Jahr : INTEGER;
 END;
VAR AlleDaten : ARRAY [1..MaxDaten] OF Datenrecord;
Das Sichern/Laden geht standardmäßig über eine Datei
VAR Datenfile : FILE OF Datenrecord die konventionell-sequentiell gelesen bzw. geschrieben wird

Unter Delphi9 wwerden die Strings allerdings nicht mehr in fixer Länge abgespeichert, sondern in ihrer tatsächlichen Länge, was dazu führt, dass die Dateigröße sich laufend ändert, und die Hintereinander-Schachtelung innerhalb des Arrays völlig durcheinander kommt!
Unter Delphi7 war String=Shortstring (wenn man ihn nicht umdefiniert hat), jetzt ist es zwingend Widestring. Da auch Chinesen Namen haben, sollte man den Widestring nutzen, also STRING lassen (sonst könnte man die Definition auf STRING[255] o.ä. ändern und hätte keine Probleme).
Wie löse ich das, ohne Texte und Daten voneinander trennen zu müssen? Eine Trennung stelle ich mir so vor, dass die Namen in einer TStringlist definiert werden, und auch mit deren Methoden gelesen und gesichert werden. Aber wie gesagt, möchte ich diese Trennung nicht machen..

Vielleicht isses ganz einfach, und ich steh nur auf dem Schlauch?

Besten Dank schonmal vorab: Gagamba

Geändert von mkinzler (28. Aug 2012 um 10:36 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat