Nach einigen Versuchen Delphi 2007 Code nach XE4 zu migrieren hier einmal eine Stilfrage.
Vielfach habe ich Records die einen ShortString enthalten um entsprechend Speicher im Record zu reservieren:
Code:
Type
MyRecord = Record
Value: Integer;
Name: String[32];
...
End;
In DXE4 möchte ich eigentlich das selbe haben nur eben als
Unicode-ShortString. Was also daraus wird ist:
Code:
Type
MyRecord = Record
Value: Integer;
Name: Array[0..32] of Char;
...
End;
...nur elegant ist das leider nicht mehr den folgender Code compiliert nicht mehr:
Code:
Var
s: String;
m: MyRecord
Begin
s := 'Test';
m.Name := s; <--- E2010 Inkompatible Typen: 'array[0..32] of Char' und 'string'
Möglich wäre natürlich:
Code:
StrCopy(AData.szModel, PChar(fData.LastDevice.Model));
StrLCopy(AData.szModel, PChar(fData.LastDevice.Model), 32);
aber elegant ist das nicht, denn das bedeutet riesige Mengen Sourcecode zu ändern und aus einer schönen Zuweisung einen äußerst hässlichen Funktionsaufruf zu machen....
Bleibt die Frage ob es dafür eine elegant Lösung gibt die ohne Änderung am restlichen Code funktioniert (und "Name: String;" kann es nicht sein...)?