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 1 von 2  1 2      
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Verkette Liste mit unbekannten Objekten?

  Alt 5. Dez 2004, 19:02
Tag,

ich habe vor eine klasse(in einer extra unit) zu schreiben (TLinkedList)... ich möchte dann eine instanz dieser klasse erzeugen und dabei die klasse um die sich die liste handelt übergeben...wie geht das? geht das überhaupt? also sowas wie:

Delphi-Quellcode:
PLinkedList = ^TUnbekanntesObjekt
  var1: string;
  var2: string;
  var3: string;
end;
?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Verkette Liste mit unbekannten Objekten?

  Alt 5. Dez 2004, 19:15
Hallo,
es hört sich so an als ob das Gespann TCollection/TCollectionItem erfinden möchtest.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Verkette Liste mit unbekannten Objekten?

  Alt 5. Dez 2004, 19:25
Zitat von Jens Schumann:
Hallo,
es hört sich so an als ob das Gespann TCollection/TCollectionItem erfinden möchtest.
Nicht ganz. TCollection fußt doch auf einem Array, oder?
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: Verkette Liste mit unbekannten Objekten?

  Alt 5. Dez 2004, 19:35
ja tut es, und da ich meine dynamischen arrays gerade durch verkettete listen ersetze...

das problem ist das ich für jeden record(geht das gleiche überhaupt mit klassen?) eine neue klasse schreiben muss, weil das item der verketteten liste jedes mal ein anderes ist
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#5

Re: Verkette Liste mit unbekannten Objekten?

  Alt 5. Dez 2004, 19:42
Hallo,

ich glaube polymorphe Funktionen gehen mit Delphi nicht. Wozu brauchst du das aber überhaupt, die TLinkedList soll ja nichts mit den gespeicherten Daten anfangen? Dann nimm doch einen allgemeineren Typen, also z.B. ein TObject wenn nur Klassen zugelassen werden sollen oder einfach nur ein Pointer.
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Verkette Liste mit unbekannten Objekten?

  Alt 5. Dez 2004, 20:16
Zitat von fiasko:
Hallo,
ich glaube polymorphe Funktionen gehen mit Delphi nicht.
Klar gibts die. Allerdings hab ich den Eindruck, dass du hier eher Generics alias parametrisierbare Klassen meinst
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: Verkette Liste mit unbekannten Objekten?

  Alt 5. Dez 2004, 21:03
irgendwie krieg ich den dreh nicht raus wie ich VERSCHIEDENE objekte in so eine liste bekomme.
wenn es um eine liste EINES typs ging hab ich das immer so gemacht:

Delphi-Quellcode:
PMyList = ^TMyList;
  TMyList = record
    blah1: string;
  end;

nur was nehme ich statt ^TMyList wenn ich eben verschiedene objekte übergeben möchte?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Verkette Liste mit unbekannten Objekten?

  Alt 5. Dez 2004, 21:22
Wenn du es objektorientiert machst, dann brauchst du einfach eine Basisklasse, von der alle anderen Klassen abgeleitet sind.

Ein kleines Beispiel: Du willst Daten über CD/DVDs verschiendener Arten (Musik, Video, Bilder) speichern:

Delphi-Quellcode:
type
  TListEntry = class
  end;
  
  TListNode = class
  private
    Data: TListEntry;
    Next: TListNode;
  end;
 
  TAudioDisc = class(TListEntry)
  //hier Klassen-Interface
  end;
 
  TVideoDisc = class(TListEntry)
  //hier Klassen-Interface
  end;

  TImageDisc= class(TListEntry)
  //hier Klassen-Interface
  end;

var
  ln: TListNode;
begin
  //...
  ln.Data := TImageDisc.Create;

Nun kannst du alles, was vn TListEntry abgeleitet ist, dranhängen.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: Verkette Liste mit unbekannten Objekten?

  Alt 5. Dez 2004, 21:30
moin chewie,

danke für dein beispiel, wenn folgendes nicht möglich ist werd ich es so machen

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?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Verkette Liste mit unbekannten Objekten?

  Alt 5. Dez 2004, 21:35
OK, wenn du das mit Records machen willst geht das auch. Du musst dann deine "Nutzlast" als Zeiger auf ein Record definieren. Entweder untypisiert oder, analog zu der OOP-Variante, einen Record mit varablem Anteil anlegen.

Ich würde dir aber schwer zu der OOP-Variante raten. Dort sparst du dir u.U. die ewigen Typabfragen, indem du Hier im Forum suchenPolymorphie verwendest.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:27 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