AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

record-Verwaltung mit Tlist

Ein Thema von p80286 · begonnen am 25. Jun 2009 · letzter Beitrag vom 29. Jun 2009
Antwort Antwort
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, 17: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
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: record-Verwaltung mit Tlist

  Alt 25. Jun 2009, 17:53
.. was spricht gegen Objekte und TObjectList?

Objekte/Klassen kannst Du beliebig vererben/überschreiben.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#3

Re: record-Verwaltung mit Tlist

  Alt 26. Jun 2009, 13:04
Records nach Möglichkeit als Referenz an Prozeduren/Funktionen übergeben.
Sonst wird unnötig eine Kopie auf dem Stapel erzeugt.
Delphi-Quellcode:
procedure Add(const satz: t_DocInfo); {oder}
procedure Add(satz: p_DocInfo); {ist im Prinzip das gleiche}
Zur eigentlichen Frage, was du suchst sind Generics.
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#4

Re: record-Verwaltung mit Tlist

  Alt 26. Jun 2009, 13:34
Du kannst dir ja mal das anschauen (ja ist von mir). Das was du willst entspricht wohl den BusinessObjects. Wir der Name schon sagt handelt es sich dabei allerdings um Objekte und nicht um Records.

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

Re: record-Verwaltung mit Tlist

  Alt 26. Jun 2009, 14:07
@Klaus01


Zitat von Klaus01:
.. was spricht gegen Objekte und TObjectList?

Objekte/Klassen kannst Du beliebig vererben/überschreiben.
erst einmal spricht nichts dagegen, aber warum sollte ich eine tObjectList verwenden wenn eine TList reicht? Wenn ich das nicht mißverstanden habe existiert die Tlist genau für den Zweck, für den ich sie einsetzen will.
(Ersatz für eine doppelt verkettete Liste (pointer))

@Blup

Delphi-Quellcode:
procedure Add(const satz: t_DocInfo); {oder} 
procedure Add(satz: p_DocInfo); {ist im Prinzip das gleiche}
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.

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
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#6

Re: record-Verwaltung mit Tlist

  Alt 29. Jun 2009, 15:58
Zitat von p80286:
@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)
Du kannst das völlig frei verwenden, wenn du magst. Es soll auch nur ein Beispiel sein, wie sich so etwas realisieren lässt und ist mit Sicherheit nicht fehlerfrei! Für deinen Fall lohnt sich vielleicht ein Blick auf TCollectionItem und TCollection, darauf basiert auch mein kleines Framework.

"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.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

Re: record-Verwaltung mit Tlist

  Alt 29. Jun 2009, 16:52
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz