![]() |
record-Verwaltung mit Tlist
Hallo Zusammen,
Ich hätte gerne Eure Unterstützung für ein paar prinzipielle Fragen. Einen ähnlichen Thread hat es schon einmal gegeben ( ![]() 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:
Könntet Ihr mir da auf die Sprünge helfen.
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. (Ach Ja: sollte unter Delphi 7 machbar sein) Gruß K-H |
Re: record-Verwaltung mit Tlist
.. was spricht gegen Objekte und TObjectList?
Objekte/Klassen kannst Du beliebig vererben/überschreiben. Grüße Klaus |
Re: record-Verwaltung mit Tlist
Records nach Möglichkeit als Referenz an Prozeduren/Funktionen übergeben.
Sonst wird unnötig eine Kopie auf dem Stapel erzeugt.
Delphi-Quellcode:
Zur eigentlichen Frage, was du suchst sind Generics.
procedure Add(const satz: t_DocInfo); {oder}
procedure Add(satz: p_DocInfo); {ist im Prinzip das gleiche} |
Re: record-Verwaltung mit Tlist
Du kannst dir ja mal
![]() Gruß |
Re: record-Verwaltung mit Tlist
@Klaus01
Zitat:
(Ersatz für eine doppelt verkettete Liste (pointer)) @Blup
Delphi-Quellcode:
Danke für den Hinweis. Die Übergabe mit p_Docinfo will ich vermeiden, da für viele Leute Pointer was ganz böses sind, wie man auch hier des öfteren liest. Das Arbeiten mit "const" ist für mich relativ neu und noch nicht in Fleisch und Blut übergegangen.
procedure Add(const satz: t_DocInfo); {oder}
procedure Add(satz: p_DocInfo); {ist im Prinzip das gleiche} Die Generics gibt es wohl erst ab D2009, d.h. für mich gibt's sie erst einmal nicht @Guidok das liest sich interessant, scheint aber zunächst einmal (für meine Bedürfnisse) mit Kanonen auf Spatzen geschossen zu sein. Wenn ich darf schau ich es mir bei Gelegenheit genauer an und verwende es dann auch. Die Querverbindung zu XML scheint interessant zu sein. (BusinessObjects hört sich so verdammt nach Marketing Geschwafel an) Auf jeden Fall vielen Dank für die Hinweise. K-H |
Re: record-Verwaltung mit Tlist
Zitat:
"BusinessObject" ist übrigens nicht auf meinem Mist gewachsen. Ich habe mich da an die gängige Bezeichnung gehalten. Der Name rührt wohl daher, dass die Daten in diesem Objekt gehalten werden und auch die "Geschäftslogik" im Objekt selbst implementiert werden kann. |
Re: record-Verwaltung mit Tlist
Hallo zusammen,
nach dem Wochenende und etwas Lesen in der Hilfe, bin ich ein kleines Stückchen weiter. Für meine Schmalspur-Zwecke scheint Tlist ausreichend. Aber falls wirklich einmal eine datenabhängige Verarbeitung erfolgen muß, ist Tcollection wohl die bessere Wahl. vielen Dank für Eure Anregungen K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz