AGB  ·  Datenschutz  ·  Impressum  







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

TStringlist.assign und addobject?

Ein Thema von Mattze · begonnen am 23. Feb 2006 · letzter Beitrag vom 23. Feb 2006
Antwort Antwort
Mattze

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

TStringlist.assign und addobject?

  Alt 23. Feb 2006, 18:39
Hallo,

eigentlich müsste es ja, aber da ich mir nicht ganz sicher bin, eine Frage:
Ich habe eine Stringliste erzeugt und ihr ein paar Strings mit addobject (!) zugewiesen.
Als Objekt kommt "TObject(Zeiger)" dazu. Der Pointer ist erzeugt und zeigt auf einen Satz mit Zusatzinfos.
Nun weise ich diese StringList mit assign einer anderen StringList zu. Werden da die Objekte (die Pointer) ordentlich mit zugewiesen, sprich KOPIERT. Also so, dass man sie bei der ersten Liste alle frei geben könnte? Unb wie ist das beim Ende. Man muss diese Pointer sicherlich alle freigeben. Aber wo? In der ersten Liste oder der zweiten Liste oder ist es egal? Muss man die Zeiger danach explizit auf NIL setzen?

Gruß
Matthias
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: TStringlist.assign und addobject?

  Alt 23. Feb 2006, 18:57
Hallo Matthias,

die Methode Assign kopiert die Zeiger aus der Objects-Eigenschaft - ohne sie zu hinterfragen. Es entstehen zusätzliche Referenzen auf deine records. Beim Zerstören der StringList werden die Zeiger verworfen. Wenn sie die einzigen Referenzen auf deine records sind, dann musst du selbst vorher den von den records belegten Speicher freigeben. Der Platz für die Zeiger selbst wird von der StringList freigegeben.

Grüße vom marabu
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: TStringlist.assign und addobject?

  Alt 23. Feb 2006, 19:24
Moin Matthias,

solltest Du die Stringliste den Zeilen eines TMemo oder TRichEdit zuweisen wollen: Hier werden die Objekte nicht mit übernommen.
Deren Abfrage ergibt immer 0.
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
Mattze

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

Re: TStringlist.assign und addobject?

  Alt 23. Feb 2006, 19:59
Hallo,

danke für die schnelle Antwort.
Nee, ich will tatsächlich die Stringliste einer anderen Stringliste assignen.
(Ich mache sie im Hauptprogramm zurecht und weise sie dann einer Stringliste in einer Komponente zu.)
Die Stringliste im Hauptprogramm gebe danach ich wieder frei.
Das klappt sogar. Aber nur einmal!!!
Wenn ich das neu mache und (natürlich) in der Stringliste der Komponente die ganzen Pointer (mit dispose) frei gebe, nimmt es das irgendwie nicht ernst. Jedenfalls will das Programm dann nicht mehr so richtig und stürzt ab. Mit völlig sinnentleerten Fehlermeldungen!

Gruß
Matthias
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: TStringlist.assign und addobject?

  Alt 23. Feb 2006, 20:19
Moin Matthias,

für solche Fälle bietet es sich an das Programm mal mit MemProof zu testen, oder MadExcept einzubauen.
Vielleicht hilft es aber auch schon, wenn Du mal ein wenig Sourcecode zeigst, und mal angibst, welche Fehlermeldungen kommen.
Verwendest Du eventuell (dynamische)Arrays?
Ohne Range-Checking kannst Du Dir auch mit statischen Arrays Probleme einhandeln.
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
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 06:45 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