Einzelnen Beitrag anzeigen

Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.321 Beiträge
 
Delphi 12 Athens
 
#6

AW: record helper für Enum -> implicit funktioniert nicht.

  Alt 21. Sep 2025, 23:04
Operator overloading wird in Helpern nicht unterstützt:
Folgendes compiliert und funktioniert. Da ist auch der class operator im Helper. Verstecktes feature



Delphi-Quellcode:
type
  TTestRecord = record
    value:Integer;
    end;

  TTestRecordHelper = record helper for TTestRecord
    class operator Implicit(a: TTestRecord): string;
    class operator Implicit(a: string): TTestRecord;
    class operator Implicit(a: TTestRecord): Integer;
    class operator Implicit(a: Integer): TTestRecord;
  end;

class operator TTestRecordHelper.Implicit(a: TTestRecord): string;
begin
  Result := inttostr(a.value);
end;

class operator TTestRecordHelper.Implicit(a: string): TTestRecord;
begin
  Result.value := strtoint(a);
end;

class operator TTestRecordHelper.Implicit(a: Integer): TTestRecord;
begin
  Result.value := a;
end;

class operator TTestRecordHelper.Implicit(a: TTestRecord): Integer;
begin
 Result := a.value;
end;

var
  lTestRecord:TTestRecord;
  lString:string;
  lInteger:Integer;
begin
  lTestRecord := 1;
  lString := lTestRecord;
  WriteLn(lString);

  lTestRecord := '2';
  lInteger := lTestRecord;
  WriteLn(inttostr(lInteger));

  Readln;
end.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat