AGB  ·  Datenschutz  ·  Impressum  







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

Verkettete Liste in Klasse?

Ein Thema von Pseudemys Nelsoni · begonnen am 24. Sep 2004 · letzter Beitrag vom 24. Sep 2004
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Verkettete Liste in Klasse?

  Alt 24. Sep 2004, 15:23
hoi,

ich würd gern meine gelinkte liste in eine klasse unterbringen, damit ich diese ganzen "listendurchlaufen" etc in meinem hauptprogramm habe...

nun meine frage, wie erstell ich in meiner klasse dann die vorwärtsdeklaration? den rekord möcht ich ja erst zur laufzeit übergeben....geht das?

sowas wie:

Delphi-Quellcode:
PLinkedList = ^TLinkedList
TLinkedList = hierderrecorddenichnachherübergebe
end;
?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#2

Re: Verkettete Liste in Klasse?

  Alt 24. Sep 2004, 15:28
Du könntest
1. Den Pointer auf das Record nehmen und den speicher dafür reservieren oder
2. Variants verwenden (<-bin aber nicht sicher, ob das wirklich gut&einfach geht)
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: Verkettete Liste in Klasse?

  Alt 24. Sep 2004, 15:31
Zitat:
Den Pointer auf das Record nehmen und den speicher dafür reservieren
hättest du n beispiel dafür?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: Verkettete Liste in Klasse?

  Alt 24. Sep 2004, 15:35
Das geht !

Zum Quellcode
Delphi-Quellcode:
type
PLinkedList = ^TLinkedList
TLinkedList = record
               zeiger: PLinkedList
              end;
Mein Delphi-Buch hat dazu folgendes geschrieben:
Dieser Typ (TLinkedList) ist bei Deklaration von PLinkedList noch gar nicht definiert !
Was normalerweise nicht möglich wäre, erlaubt uns Delphi hier. Denn erst danach definieren wir den Typ TLinkedList.
... erlaubt es uns also, auf einen solchen Record zu zeigen, wie der, in dem er sich selbst befindet!

Eine solche Deklaration nennt man Vorwärtsdeklaration.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: Verkettete Liste in Klasse?

  Alt 24. Sep 2004, 15:37
Moin heins,

danke für die Mühe 8) Das das geht weiss ich schon, ich benutze sie ja schon lange, nur weiss ich nicht wie das geht wenn ich den rekord erst zur laufzeit übergeben möchte an die klasse

EDIT: übrigens das buch habe ich auch, "jetzt lerne ich delphi"
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#6

Re: Verkettete Liste in Klasse?

  Alt 24. Sep 2004, 15:43
Andere möglichkeit: Der Pointer auf die Variable, anstatt aufs Record:
Du brauchst den Record, wenn du elemente hinzufügen, löschen oder abfragen willst, richtig?
Was ich mir gedacht hab war, dass du da nicht die Variable übergibst, sondern den Zeiger auf die Variable. Dann interessiert dich das Record in der klasse nichts mehr, und du arbeitest halt mit memCopy, memAlloc und FreeMem. (Wenn du dann das ganze sortieren willst, gehts dann wahrscheinlich auch noch schneller )
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: Verkettete Liste in Klasse?

  Alt 24. Sep 2004, 15:48
genau, ich möchte aus der liste löschen/hinzufügen können. Muss ich keinen "next" zeiger im rekord haben?

Zitat:
memCopy, memAlloc und FreeMem
habe ich nie benutzt gehts auch new() und dispose() ?
Mario
MSN: cyanide@ccode.de
  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:12 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