AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Verkette Liste mit unbekannten Objekten?
Thema durchsuchen
Ansicht
Themen-Optionen

Verkette Liste mit unbekannten Objekten?

Ein Thema von Pseudemys Nelsoni · begonnen am 5. Dez 2004 · letzter Beitrag vom 5. Dez 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#11

Re: Verkette Liste mit unbekannten Objekten?

  Alt 5. Dez 2004, 21:52
Zitat:
Du musst dann deine "Nutzlast" als Zeiger auf ein Record definieren

kannst du mir sagen wie?

also:

irgendwas = ^record; geht nicht
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#12

Re: Verkette Liste mit unbekannten Objekten?

  Alt 5. Dez 2004, 22:01
Zitat von Pseudemys Nelsoni:
eigentlich habe ich mir das so gedacht, das ich die klasse TLinkedList einmal(!) schreibe und dann niemehr was daran aendern muss, d.h ich kann sie immer in meinen programmen verwenden, egal für welche objekte...

ich dachte mir das dann ca so in meinem hauptprogramm:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
    MyList: TLinkedList // meine klasse
  public
    procedure irgendeineprozedur;
  end;

...

procedure TForm1.irgendeineprozedur;
begin
  MyList.AddItem(instanzIRGENDEINERklasse); //additem = methode von TLinkedList
end;

weisst wie ich meine?
Wie wäre es mit einer Pseudo-generic Liste?
Delphi-Quellcode:
unit TestStringTypes;
interface
   {$DEFINE TYPED_LIST_TEMPLATE}
   type _LIST_DATA_TYPE_ = string;
   {$INCLUDE TypedLinkedList_template.pas}
   type TStringList = _TYPED_LIST_;
   type TStringNode = _TYPED_LIST_NODE_;
implementation
   {$INCLUDE TypedLinkedList_template.pas}
end.
Delphi-Quellcode:
unit TestIntegerTypes;
interface
   {$DEFINE TYPED_LIST_TEMPLATE}
   type _LIST_DATA_TYPE_ = Integer;
   {$INCLUDE TypedLinkedList_template.pas}
   type TIntegerList = _TYPED_LIST_;
   type TIntegerNode = _TYPED_LIST_NODE_;
implementation
   {$INCLUDE TypedLinkedList_template.pas}
end.
Delphi-Quellcode:
program TestApplication;

{$APPTYPE CONSOLE}

uses
   TestStringTypes in 'TestStringTypes.pas',
   TestIntegerTypes in 'TestIntegerTypes.pas';

var
   IntegerNode : TIntegerNode;
   StringNode : TStringNode;

   IntegerList : TIntegerList;
   StringList : TStringList;

   i : Integer;
begin
   IntegerList := TIntegerList.Create();
   StringList := TStringList.Create();

   for i := 1 to 10 do
      IntegerList.AddData(i);

   // Zum Testen entfernen wird der vorletzte Eintrag entfernt
   with IntegerList do
      Delete(Previous(Tail));

   StringList.AddData('a');
   StringList.AddData('b');
   StringList.AddData('c');
   StringList.AddData('d');
   StringList.AddData('e');

   // Zum Testen entfernen wird der zweite Eintrag entfernt
   with StringList do
      Delete(Next(Head));

   // Ausgabe
   for IntegerNode in IntegerList do
      Writeln(IntegerNode.Data);

   for StringNode in StringList do
      Writeln(StringNode.Data);

   Sleep(3000);
end.
Die Inspiriration für diesen Direktivenkrieg kam von maximov und seiner Template Version der dpCollection.

Das dumme daran ist, dass ich zur Compile zeit nicht unterscheiden kann, ob Data ein Klassenobjekt oder ein primitives Objekt enthält um daraufhin ein Säubern im Destructor auszulösen.
Deshalb habe ich vorerst das Zerstören von Data jedes Knotens rausgenommen. Vielleicht fällt mir morgen etwas dazu ein. Nur primitiver Typen wären schon sehr doof.
Und Extra units á la TypedList_of_ClassTypes und TypedList_of_primitiveTypes wären auch doof.
Angehängte Dateien
Dateityp: zip typedlinkedlist.zip (6,8 KB, 13x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 06:32 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