Einzelnen Beitrag anzeigen

Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#17

AW: Der linken Seite wird nichts zugewiesen "Extended Version"

  Alt 25. Okt 2013, 11:04
Delphi-Quellcode:
property Items[Index: integer]: PStab read GetPItems write SetPItems; default;

function TStabList.GetPItems(Index: integer): PStab;
begin
  Result := @FItems[Index];
end;

procedure TStabList.SetPItems(Index: integer; const Value: PStab); // Assign;
begin
  FItems[Index] := Value^;
end;
Den Schreibzugriff würde ich schnell wieder streichen.
Wenn ich als Benutzer deines Records `Liste[i] := PtrToSomeRecord` schreibe, ist das von der Syntax her eine flache Kopie von Referenzen/Zeigern, die du mittels `SetPItems` zu einer tiefen Kopie machst. Das halte ich für sehr verwirrend. Die Alternative wäre:
Delphi-Quellcode:
    property Items[Index: integer]: PStab read GetPItems; default;

function TStabList.GetPItems(Index: integer): PStab;
begin
  Result := @FItems[Index];
end;

// Benutzung:
Liste[i]^ := PtrToSomeRecord^;
Das erfordert zwei Haken mehr, dafür ist eindeutig klar, was passiert.
Uli Gerhardt
  Mit Zitat antworten Zitat