AGB  ·  Datenschutz  ·  Impressum  







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

dynamische TStringList(en)

Ein Thema von TheAn00bis · begonnen am 23. Sep 2005 · letzter Beitrag vom 27. Sep 2005
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#11

Re: dynamische TStringList(en)

  Alt 24. Sep 2005, 09:30
Zitat von bttb930:
Was ist das denn für ein Gehacke???
Das "Gehacke" sind Templates, falls du damit noch nicht vertraut bist.

Zitat von bttb930:
Und ist das hilfreich um einem Anfänger ein Problem zu erklären? Sicher nicht.
Das will ich nicht beurteilen, es ist jedenfalls einer der moeglichen Loesungswege. Der Vorteil ist, dass ich mir jede Menge Tipparbeit erspare, indem ich nicht TList nochmal ableiten und dort alle Typen anpassen muss (Das Beispiel von Grishnak enthaelt ja nur das notwaendigste).

Und ob man einem Anfaenger zumutet, TList neu zu schreiben und alle Typen auszutauschen, oder ob man ihn 5 Zeilen fuer die Templates schreiben laesst, macht wohl auch keinen Unterschied mehr

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Grishnak
Grishnak

Registriert seit: 15. Sep 2005
Ort: Neu-Ulm
111 Beiträge
 
RAD-Studio 2009 Arc
 
#12

Re: dynamische TStringList(en)

  Alt 24. Sep 2005, 09:35
Zitat von TheAn00bis:
Zur TList-Variante: Das reicht doch, wenn ich die Liste ganz zum Schluß freigebe?
Natürlich kannst du die Destroy-Methode eines von TList abgeleiteten Objektes überschreiben, aber wenn du während der Laufzeit etwas aus der Liste entfernst (per 'Delete' oder 'Extract'), dann musst du ebenfalls dafür sorgen, dass das Objekt selbst auch gelöscht wird. D.h. du musst diese Methoden (wenn du sie benutzt) ebenfalls überschreiben.
Mach' etwas idiotensicher und irgendjemand erfindet einen besseren Idioten!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: dynamische TStringList(en)

  Alt 24. Sep 2005, 12:31
Moin TheAn00bis,

Zitat von TheAn00bis:
Zur TList-Variante: Das reicht doch, wenn ich die Liste ganz zum Schluß freigebe?
solange Du dabei nicht vergisst, auch die in der Liste enthaltenen Objekte wieder freizugeben.
Dass passiert nämlich nicht automatisch.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#14

Re: dynamische TStringList(en)

  Alt 24. Sep 2005, 20:05
Zitat von Grishnak:
Zitat von TheAn00bis:
Zur TList-Variante: Das reicht doch, wenn ich die Liste ganz zum Schluß freigebe?
Natürlich kannst du die Destroy-Methode eines von TList abgeleiteten Objektes überschreiben, aber wenn du während der Laufzeit etwas aus der Liste entfernst (per 'Delete' oder 'Extract'), dann musst du ebenfalls dafür sorgen, dass das Objekt selbst auch gelöscht wird. D.h. du musst diese Methoden (wenn du sie benutzt) ebenfalls überschreiben.
Noch besser: er überschreibt die protected Methode Notify und macht auf der lnDeleted Action eine Freigabe des Objektes. Der Destructor macht nämlich ein Clear und somit kommen alle Objekte am Notify vorbei...
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#15

Re: dynamische TStringList(en)

  Alt 25. Sep 2005, 15:29
Zitat von Christian Seehase:
Moin TheAn00bis,

Zitat von TheAn00bis:
Zur TList-Variante: Das reicht doch, wenn ich die Liste ganz zum Schluß freigebe?
solange Du dabei nicht vergisst, auch die in der Liste enthaltenen Objekte wieder freizugeben.
Dass passiert nämlich nicht automatisch.
Die würden bis zum runterfahren drin bleiben? Ist ja verrückt...

Zitat von Muetze1:
Noch besser: er überschreibt die protected Methode Notify und macht auf der lnDeleted Action eine Freigabe des Objektes. Der Destructor macht nämlich ein Clear und somit kommen alle Objekte am Notify vorbei...
?!

Hab jetzt die TList-Variante genommen und bin sehr zufrieden!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: dynamische TStringList(en)

  Alt 25. Sep 2005, 16:02
Moin TheAn00bis,

Zitat von TheAn00bis:
Die würden bis zum runterfahren drin bleiben? Ist ja verrückt...
beim Beenden des Programmes würde der Speicher, i.d.R., auch aufgeräumt werden, aber es ist empfehlenswert die belegten Resourcen selber aufzuräumen, allein schon, damit man das nicht mal welche vergisst, die nicht durch das Programmende freigegeben werden.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#17

Re: dynamische TStringList(en)

  Alt 27. Sep 2005, 16:07
Ein Problem hätte ich doch noch:

Ich hab jetzt eine KartenListeListe, die viele KartenListen enthällt. Alles Typ TList.

Die KartenListen enthalten Pointer auf viele TKarten. Eine Funktion von TKarte ist beispielsweise
"test". Ihr Ergebnis ist vom Typ String.

Wie weise ich jetzt einer Variable den Wert dieser Funktion zu?

Beispielsweise nehme ich aus KartenListeListe die erste KartenListe und daraus die zweite Karte (und davon eben die Funktion "Test").


Ich habe nur einige Ideen und die scheinen alle absolut nicht zu funktionieren.
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#18

Re: dynamische TStringList(en)

  Alt 27. Sep 2005, 16:13
Delphi-Quellcode:
procedure a;
var s: string;
begin
  s := KartenListeListe1.KartenListe1.Karte2.Test;
end;
Wenn du mehrere Funktionen der entsprechenden Klasse benutzen willst, kannst du es auch so machen:

Delphi-Quellcode:
procedure a;
var s: string;
begin
  with KartenListeListe1.KartenListe1.Karte2 do
  begin
    s := Test;
  end;
end;
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#19

Re: dynamische TStringList(en)

  Alt 27. Sep 2005, 17:23
Danke, aber die Listen in KartenListeListe werden dynamisch erstellt und haben alle den selben Namen. (oder!?) Jedenfalls erstelle ich die so:

Delphi-Quellcode:

KartenListeListe:=TList.Create;

for i:=1 to 5 do
   begin
      KartenListe:=TList.Create;
      KartenListeListe.Add(KartenListe);
   end;

for i:=1 to 5 do
   begin
      Karten:=TKArte.Create;
      TList(KartenListeListe[i]).add(Karte);
   end;
Jetzt will ich aus jeder Karte davon den string auslesen können. Wie komme ich jetzt an den string einer beliebigen Karte? (wäre schön mit Variable für die Nummer der KartenListe und der Karte)
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#20

Re: dynamische TStringList(en)

  Alt 27. Sep 2005, 17:42
Zitat:
Danke, aber die Listen in KartenListeListe werden dynamisch erstellt und haben alle den selben Namen. (oder!?)
Name? Instanzen habe keinen Namen, nur eine eindeutige Speicheradresse. Die Name-Property der VCL-Controls wird von Delphi lediglich zum Benennen des Feldes benutzt (und manchmal zur Identifizieren der Instanzen - dafür sind aber eigentlich Arrays und Listen da). TKarte(TList(KartenListeListe[i]).Items[ii]).Test Aber lass mich raten: die zwei Listen stellen ein zweidimensionales Array von Kartenteilen dar? Dann würde ich alcaeus' ObjetList-Template auf zwei Indizes umschreiben, das wird dir die Arbeit erheblich erleichtern.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 23:38 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