AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TList mit "verschiedenen Pointern" freigeben
Thema durchsuchen
Ansicht
Themen-Optionen

TList mit "verschiedenen Pointern" freigeben

Ein Thema von Mattze · begonnen am 24. Apr 2007 · letzter Beitrag vom 29. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#1

TList mit "verschiedenen Pointern" freigeben

  Alt 24. Apr 2007, 11:44
Hallo,

ist mir gerade so aufgefallen...
Ich habe eine Tlist und möchte die einmal mit PRecord1 und einmal mit PRecord2 füllen.
Am Programmende (und nicht nur dort) gebe ich die items natürlich frei. Nur, ich weiß da nicht, welcher Precord da gerade drin ist. Das gibt beim Freigeben Probleme, da ich natürlich nicht dispose(PRecord1(Liste[i]) für Pointer vom Typ precord2 machen kann.
Hat jemand einen Tipp für mich, wie man das am günstigsten löst? (Bitte nicht "mit 2 TList"!)

Gruß
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: TList mit "verschiedenen Pointern" freigeben

  Alt 24. Apr 2007, 11:54
Wieso nicht einfach dispose(Liste[i])?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#3

Re: TList mit "verschiedenen Pointern" freigeben

  Alt 24. Apr 2007, 11:54
Ich über deine Daten (PRecord1, PRecord2) noch ein Record setzen in dem du dir den Typ merkst.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: TList mit "verschiedenen Pointern" freigeben

  Alt 24. Apr 2007, 12:03
Du hast eine Liste wo du nicht weisst ob Typ 1 oder Typ 2 drin enthalten ist? Da frage ich mich doch: wie arbeitest du denn mit der Liste, wenn du nirgendwo weisst, welcher Typ an welchem Index steht?
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#5

Re: TList mit "verschiedenen Pointern" freigeben

  Alt 24. Apr 2007, 14:42
Hallo,

dispose(Liste[i]) dachte ich auch erst. Ist ja eigentlich auch das Naheliegende. Aber da stürzt er ab.
Bisher habe ich nur gefunden, dass es an den unterschiedlichen Sätzen liegt.
Wundert mich zwar auch, aber was soll man machen...

Ich habe nicht gesagt, dass ich nicht weiß, was in der Liste steht.
Du hast mich aber wahrscheinlich nicht richtig verstanden. In der GANZEN Liste stehen nur Sätze vom Typ1 oder Typ2 - also nur entweder oder für alles! Die Items unterscheiden sich nicht von ihrer inhaltlichen Struktur! Da ich das Programm aber jederzeit beenden kann und die Liste erst unmittelbar vor der nächsten Verwendung lösche - und dann kommt da eben Typ1 oder Typ2 rein - weiß ich beim Beenden nicht, was da gerade drin ist.

An einen "übergeordneten Satz", der auch noch den Typ enthält, habe ich auch schon gedacht. Hätte den Vorteil, dass man die Liste gleichzeitig mit völlig unterschiedlichen Strukturen füllen kann. Aber das ist eigentlich nicht nötig - für jeden Satz.
Vielleicht wäre eine (globale) Variable, die man beim Befüllen der Liste einmal setzt, genug...

Mal sehen...

Gruß
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: TList mit "verschiedenen Pointern" freigeben

  Alt 24. Apr 2007, 17:44
Bei mir stürzt er nicht ab. Warum auch? Dispose bzw Freemem bekommt den Pointer wo dein record liegt und genau davor liegt ein Integer-Wert, der die Größe deines Records beinhaltet. Damit ist beiden Funktionen völlig egal, was für einen Typ du da hast.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#7

Re: TList mit "verschiedenen Pointern" freigeben

  Alt 24. Apr 2007, 17:48
Nimm eine TObjectList anstatt einer TList. Die gibt ihre Elemente automatisch frei, sobald du die Liste frei gibst.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#8

Re: TList mit "verschiedenen Pointern" freigeben

  Alt 24. Apr 2007, 17:57
... aber keine dynamisch alloziierten records.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: TList mit "verschiedenen Pointern" freigeben

  Alt 25. Apr 2007, 00:10
...und die Records zu Objekten (was Jelly zwangsläufig mit meinte) machen? Die kann man schliesslich genauso dynamisch alloziieren...
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#10

Re: TList mit "verschiedenen Pointern" freigeben

  Alt 25. Apr 2007, 17:11
... geht aber an der TF völlig vorbei (siehe Topic)...

Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  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 19:10 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