Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Eleganter Weg Shortstrings mit Unicode zu haben?

  Alt 8. Okt 2013, 21:56
Mit einer reinen Zuweisung geht das eigentlich nicht, einen Trick gibt es aber. Ich denke mal das ganze sauber umzubauen (sprich von den Turbo Pascal Strukturen mit Records direkt in Dateien usw. wegkommen), wird im Moment nicht möglich sein, deshalb wird das wohl die sinnvollste Variante sein...

Das sieht dann so aus:
Delphi-Quellcode:
type
  TFixedCharArray32 = record
    Value: array[0..31] of Char; // 31 !!
    class operator implicit(const AValue: string): TFixedCharArray32;
    class operator implicit(const AValue: TFixedCharArray32): string;
  end;

  TMyRecord = record
    Value: Integer;
    Name: TFixedCharArray32;
  end;

class operator TFixedCharArray32.implicit(const AValue: string): TFixedCharArray32;
begin
  StrLCopy(Result.Value, PChar(AValue), 32);
end;

class operator TFixedCharArray32.implicit(const AValue: TFixedCharArray32): string;
begin
  Result := AValue.Value;
end;

var
  s: String;
  m: TMyRecord;
begin
  s := 'Test';
  m.Name := s;
  ShowMessage(m.Name);
  ShowMessage('Größe: ' + IntToStr(SizeOf(m)) + ' (4 Byte Integer + 2 Byte * 32 Zeichen)');
end;
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat