AGB  ·  Datenschutz  ·  Impressum  







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

Komponeten zerstören

Ein Thema von LoL · begonnen am 1. Okt 2003 · letzter Beitrag vom 2. Okt 2003
Antwort Antwort
Seite 2 von 4     12 34      
ArrayOf..

Registriert seit: 7. Sep 2003
50 Beiträge
 
Delphi 7 Personal
 
#11

Re: Komponeten zerstören

  Alt 1. Okt 2003, 21:46
Du destroyst die Componente zwar, aber du NIL'st nur die temporäre Variable 'Compo' dieser Procedure 'Destroy_component'. Die TComboBox-Instanz die du beim Aufruf dieser Procedure in der Parameterliste mitgegeben hast wird zwar so auch freigegeben aber eben nicht geNILt, weil es zwei unterschiedliche Ptr-Variablen sind.

Der Ptr in deiner Procedure-Parameterliste übernimmt den Ptr-Wert auf die zu löschende CompoBox, wodurch deren Speicher dann freigegeben wird. Anschließend wird aber nur dein Ptr in der Procedure geNILt und eben nicht der 'draußen'.

Versuche mal in deinem Procedurekopf diese 'Compo'-Variable als 'var' zu declarieren:

procedure Destroy_Component(var Compo : TComponent);
MfG

  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#12

Re: Komponeten zerstören

  Alt 1. Okt 2003, 21:53
ok so weit so gut aber wenn ich das so ändere und compilieren will dann erhalte ich folgende fehlermeldung:
Zitat:
Types of actual and formal var parameters must be identical
Delphi-Quellcode:
procedure Destroy_Component(var Compo : TComponent);
begin
  if Compo <> nil then
    begin
      Compo.Destroy;
      Compo := nil;
      Compo.Free;
    end;
end;

//beim panel zerstören:
Destroy_Component(beispielpanel);
zu deutsch

Bei einem Variablenparameter muß das eigentliche Argument genau denselben Typ wie der formale Parameter aufweisen.

was mache ich falsch
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Komponeten zerstören

  Alt 1. Okt 2003, 21:59
Moin Christoph,

nimm TObject und nicht TComponent.
TObject ist der Vorfahr für alle.
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
LoL
(Gast)

n/a Beiträge
 
#14

Re: Komponeten zerstören

  Alt 1. Okt 2003, 22:05
Zitat von Christian Seehase:
nimm TObject und nicht TComponent.
TObject ist der Vorfahr für alle.
das gleiche....
mit TPanel gehts auch net
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Komponeten zerstören

  Alt 1. Okt 2003, 22:09
Moin Christoph,

probier's mal so:

Delphi-Quellcode:
procedure Destroy_Component(Compo : TObject);
begin
  if Compo <> nil then
    begin
      Compo.Free;
      Compo := nil;
    end;
end;
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
Dagon

Registriert seit: 13. Jul 2003
505 Beiträge
 
Delphi 7 Professional
 
#16

Re: Komponeten zerstören

  Alt 1. Okt 2003, 22:12
Ist das nicht das selbe wie

Delphi-Quellcode:
procedure Destroy_Component(Compo : TObject);
begin
  if Compo <> nil then
    begin
      FreeAndNil(Compo);
    end;
end;
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#17

Re: Komponeten zerstören

  Alt 1. Okt 2003, 22:16
der akzeptiert ja scho nicht mal die übergabe parameter
  Mit Zitat antworten Zitat
ArrayOf..

Registriert seit: 7. Sep 2003
50 Beiträge
 
Delphi 7 Personal
 
#18

Re: Komponeten zerstören

  Alt 1. Okt 2003, 22:19
Ne, ich weiß nicht ob das überhaupt geht. Du musst ja nachher auch den entsprechend zu deinem Objekt korrekt passenden klassenrefferenzierten Destructor aufrufen und das wird in dieser Destroy-Routine wahrscheinlich nicht so einfach möglich sein, wenn überhaupt, imo.
MfG

  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#19

Re: Komponeten zerstören

  Alt 1. Okt 2003, 22:21
also kann man nicht eine prozedur schreiben die jede art von komponeten zerstört und frei gibt?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Komponeten zerstören

  Alt 1. Okt 2003, 22:23
Moin The Master,

Du hast doch die Pro Version.
Schau Dir mal in den Sourcen an wie FreeAndNil implementiert ist.
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
Seite 2 von 4     12 34      


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 16:27 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