Einzelnen Beitrag anzeigen

Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#51

AW: Record zu TStringlist hinzufügen

  Alt 13. Jun 2017, 10:40
So würde ich das ansatzweise machen. Minimale Implementation:

Delphi-Quellcode:
type
  // Du nimmst natürlich Deinen Record
  TDataRecord = record
    Name : string[20];
    Zahl : Integer;
  end;

  PDataRecord = ^TDataRecord;


  TDataRecordList = class(TList)
  protected
    function GetItem(AIndex: Integer): PDataRecord;
    procedure SetItem(AIndex: Integer; const Value: PDataRecord);
  public
    function Add(AData: TDataRecord): Integer;
    procedure Clear; override;
    property Items[AIndex : Integer] : PDataRecord read GetItem write SetItem; default;
  end;

implementation

{ TDataRecordList }

function TDataRecordList.Add(AData: TDataRecord): Integer;
var
  PData : PDataRecord;
begin
  New(PData);
  // Record-Inhalt kopieren (evtl. auch mit move). So bleibt Erzeugung und Freigabe in der Klasse.
  // Natürlich könnte man ein Overload von Add mit PData machen.
  PData.Name := AData.Name;
  PData.Zahl := AData.Zahl;
  Result := inherited Add(PData);
end;

procedure TDataRecordList.Clear;
var
  PData : PDataRecord;
  I : Integer;
begin
  for I := 0 to Count - 1 do
  begin
    PData := Items[I];
    Dispose(PData);
  end;
  inherited;
end;

// Setter und Getter geben jeweils wieder den Pointer zurück, um sich Kopiervorgänge zu ersparen
function TDataRecordList.GetItem(AIndex: Integer): PDataRecord;
begin
  Result := inherited Items[AIndex];
end;

procedure TDataRecordList.SetItem(AIndex: Integer; const Value: PDataRecord);
begin
  inherited Items[AIndex] := Value;
end;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat