Einzelnen Beitrag anzeigen

Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

record-Verwaltung mit Tlist

  Alt 25. Jun 2009, 16:03
Hallo Zusammen,

Ich hätte gerne Eure Unterstützung für ein paar prinzipielle Fragen. Einen ähnlichen Thread hat es schon einmal gegeben (hier)

Abgesehen davon daß unsere Ansätze sich sehr ähneln, habe ich zwei Fragen bzw. Bitten:
1) Ich habe die "notwendigsten" Methoden zusammen gestellt, um eine Tlist mit Records ählich einer TStringlist zu gebrauchen. Wenn Ihr da einen groben Schnitzer entdecken solltet, dann wäre ich dankbar wenn Ihr mir den mitteilen könntet.

2) Ich würde diese "Unit" gerne als Vorlage für weitere Units/Klassen nutzen (ergänzt um Sortierung, Suchfunktionen etc.) aber sie sollte so aufgebaut sein, das ich nach Möglichkeit nur die Record-Definition ändere und sie ist dann einsatzbereit.

Hierfür habe ich ehrlich gesagt überhaupt keinen Plan wie ich das am geschicktesten (und effizentesten) umsetzen könnte.

Im Augenblick würde ich
kopieren
die Record-Definition ändern,
und die notwendigen Umbennungen durchführen.

Und dieses Vorgehen ist irgendwie nicht das gelbe vom Ei.

Delphi-Quellcode:
unit OAM_DocInfos;

interface

uses classes; {für tlist }

type
  t_DocInfo = record
                CODDOS:string[40];
                IDE___:string[20];
                CODPAY:string[2];
                DATDEP:string[10];
                NUMDEP:string[20];
                NUMPUB:string[10];
              end;

  pDocinfo = ^T_Docinfo;

  t_DocInfoListe = class(tlist)

  protected
    function Get(Index: Integer): t_DocInfo;
    procedure Put(Index: Integer; satz: t_DocInfo);
    function get4destroy(index: integer):pointer;
  public
    destructor Destroy; override;
    procedure ADD(satz:t_DocInfo);
    procedure DELETE(index:integer);
    property ITEMS[index:integer]:t_DocInfo read Get write Put;
 end;


implementation

destructor t_DocInfoListe.Destroy;
var
  i : integer;
begin
  for i:=0 to count-1 do
    dispose(get4destroy(i));
  inherited destroy;
end;

 procedure t_DocInfoListe.Delete(index:integer);
 begin
   dispose(get4destroy(index));
   inherited delete(index);
 end;

 procedure t_DocInfoListe.Add(satz:t_DocInfo);
 var
   newrec : pDocInfo;
 begin
   new(newrec);
   newrec^:=satz;
   inherited add(newrec);
 end;

 function t_DocInfoListe.get4destroy(index:integer):pointer;
 var
   p : pDocInfo;
 begin
   p:= inherited get(index);
   result:=p;
 end;

 function t_DocInfoListe.Get(index:integer):t_DocInfo;
 var
   p : pDocInfo;
 begin
   p:= inherited get(index);
   result:=p^;
 end;

 procedure t_DocInfoListe.Put(index:integer;satz:t_DocInfo);
 var
   p : pDocInfo;
 begin
   new(p);
   p^:=satz;
   inherited put(index,p);
 end;


end.
Könntet Ihr mir da auf die Sprünge helfen.
(Ach Ja: sollte unter Delphi 7 machbar sein)

Gruß
K-H
  Mit Zitat antworten Zitat