AGB  ·  Datenschutz  ·  Impressum  







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

Spinnt Delphi oder ich

Ein Thema von Sanchez · begonnen am 4. Jun 2003 · letzter Beitrag vom 4. Jun 2003
Antwort Antwort
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#1

Spinnt Delphi oder ich

  Alt 4. Jun 2003, 16:23
Teil der FormDestroy meines Forms

Delphi-Quellcode:
  for i:= 0 to Labelcount - 1 do begin
    arrLabels[i].Free;
  end;
  arrLabels := nil;
arrLabels ist ein dynamisches Array vom Typ TLabel

Heute Vormittag -- alles normal, keine Exceptions

Vor kurzem -- ca. beim 27. Free gibts eine EInvalidPointer
Daraufhin habe ich die Free-Zeile auskommentiert. Jetzt bekomme ich keinen Fehler.

Neustart des Systems, ich hab natürlich gespeichert

EInvalidPointer beim Beenden des Programmes.
Jetzt hab ich die Kommentarzeichen wieder weggelöscht und ich bekomme keine Exception mehr.

Irgendwie bin ich etwas verwirrt, steckt da ein System dahinter?
Ist es möglich, dass ich irgendwo einen ganz anderen Fehler habe, der das auslöst?

mfg Daniel
Daniel
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 4. Jun 2003, 16:38
Moin Daniel,

wie erzeugst Du denn die Label?
Wenn Du beim Create als Owner eine übergeordnete Komponente angegeben hast (z.B. das Formular), und nicht nil, werden die Label automatisch zerstört.
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
Marco Haffner
(Gast)

n/a Beiträge
 
#3
  Alt 4. Jun 2003, 16:42
Klappt das hier?
Delphi-Quellcode:
for i := (Labelcount - 1) downto 0 do
begin
  arrLabels[i].Free;
end;
arrLabels := nil;
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#4
  Alt 4. Jun 2003, 18:00
Also muss ich Objekte, die ich so

arrLabel[i] := TLabel.Create( self ); erzeuge gar nicht entsorgen?

Auch fein.

mfg Daniel
Daniel
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#5
  Alt 4. Jun 2003, 18:19
Nein im Grunde brauchst du die nicht mehr freigeben.

Als Owner gibts du ja 'self' an, 'self' meint hier das Formular in dem du die Instanzen erzeugst

Wird das Formular zerstört (spätestens beim Beenden des Programms) werden auch alle Objekte die dies Formular als Owner haben mit aus dem Speicher gehauen
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  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 00:15 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