create(nil)?

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Antworten
slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

create(nil)?

Beitrag von slai »

Hallo zusammen

mal eine Frage, was passiert eigentlich wenn

MyPanel := TPanel.create(nil);

Ist das Panel dann im Adressraum vom Programm oder wirds ins Nirvana geschrieben?

Danke für antworten
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Es hat schlichtweg keinen Ersteller es wird also nicht automatisch freigegeben.

Beispiel:

TPanel.Create(Form1);

wird bei Form1.Free; mit freigegeben.

TPanel.Create(nil); musst du manuell freigeben.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Beitrag von slai »

Danke für die Antwort,

Wie muss ich z.B. ein Zeoslib Query erzeugen das es nur innerhalb
einer procedure, funktion speicher frisst, im stiel von einem Integer
deklarieren?

TZMyQuery := TZQuery.create(?)
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

slai hat geschrieben:TZMyQuery := TZQuery.create(?)


Hast du die Antwort nicht schon selber gegeben?

MyZQuery:=TZQuery.create(nil);
...
...
MyZQuery.free;

slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Beitrag von slai »

Ja das ist klar, mach ich auch bereits so, habe mich nur
gefragt ob dann die MyZQuery instanz die man mit nil created
auch wirklich im adressraum des programms liegt.

demfall schon...

danke für die antworten
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Alle instanzen, die du in deinem Programm erstellst liegen im "Adressraum deines Programms".
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten