Zitat:
(was ja vermutlich u.a. daran liegt, dass Delphi >= 2009 den Typ String eben als
Unicode String behandelt (DBC).
String ist in Delphi (k.A. seit wann, aber mindestens seit Delphi 2) ein LongString.
Vor D2009 war String ein Alia für den AnsiString und danach für den UnicodeString.
Gaaaaaaanz früher war der String das, was seit Einführung der LongStrings, nun der ShortString ist.
String[x] ist ein ShortString mit Längenangabe (maximale Länge).
Und String[255] ist der größt mögliche ShortString, also somit direkt der Typ ShortString.
Wie sehen denn die binären Daten eines Records in der Datei aus?
Bzw. was steht denn nun im ersten Record, nach dem Auslesen? (die Bytes stimmen also, aber was steht in dem ersten String)
Eventuell kann man es auch mal mit einem
T_Settings = packed Record
versuchen, bzw. mit
{$ALIGN ...}
rumspielen.
Kann es sein, daß er erste Record noch stimmt, aber die nachfolgenden nicht mehr? Auch das könnte am Align liegen, denn die Daten in deinem Record sind 9*1+2*256 Byte groß. (1 Byte zu groß, für ein Align von 4 oder 8)
Du hast nicht zufällig noch TP6 installiert?
Wie groß ist dort denn ein SizeOf(T_Settings) und wie groß im Delphi?