Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Verständnisfrage: Label (https://www.delphipraxis.net/170449-verstaendnisfrage-label.html)

BigMaster 17. Sep 2012 16:32

Delphi-Version: 7

Verständnisfrage: Label
 
Ich habe eine Frage warum er die Caption nicht annimmt? :?:
-----------------------------------------------------------------------------------------
var start: Integer;

procedure TForm1.FormCreate(Sender: TObject);
begin
start := 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
var Label: TLabel;
begin
start := start + 1;
Label := TLabel.Create(Self);

With Label do
begin

Parent := Form1;
Caption := Edit1.Text; // Hier
Left := 540;
Top := 20 + 5*(start);
Width:= 200;
Height:= 20;
Name := 'Label'+IntToStr(start);
Transparent := true;
end;
end;

DeddyH 17. Sep 2012 16:38

AW: Verständnisfrage: Label
 
Hallo und Willkommen in der DP :dp:,

lass doch mal das with weg und benenne die Variable Label um. Übrigens: benutze doch bitte künftig Delphi-Tags, die kannst Du mit der "Helm"-Schaltfläche im Beitragseditor setzen.

divBy0 17. Sep 2012 16:39

AW: Verständnisfrage: Label
 
Gerade getestet, bei mir nimmt er die Caption.

Der Name Label ist außerdem ungünstig, wie DeddyH schon geschrieben hat.

uligerhardt 17. Sep 2012 16:47

AW: Verständnisfrage: Label
 
Zitat:

Zitat von divBy0 (Beitrag 1183324)
Der Name Label ist außerdem ungünstig, wie DeddyH schon geschrieben hat.

Und zwar, weil
Delphi-Quellcode:
label
ein (kaum verwendetes) Pascal-Schlüsselwort ist, wie auch das Syntay-Highlighting verrät:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Label: TLabel;
begin
end;

DeddyH 17. Sep 2012 16:49

AW: Verständnisfrage: Label
 
Das mag auch der Compiler nicht und weigert sich (zumindest in meinem D7).

p80286 17. Sep 2012 16:56

AW: Verständnisfrage: Label
 
sagt mal hab ich das richtig gesehen?
"Label" ist eine lokale Variable zu TForm1.Button1Click ?
Das bedeutet doch, das Label namch dem Click im Nirwana verschwindet?
Oder ist das gibt es da irgendwelche Nebeneffekte?
Edith:
da das .Free fehlt sollte doch ein schönes Memory Leak da sein?

Gruß
K-H

mkinzler 17. Sep 2012 16:59

AW: Verständnisfrage: Label
 
Zitat:

sagt mal hab ich das richtig gesehen?
"Label" ist eine lokale Variable zu TForm1.Button1Click ?
Das bedeutet doch, das Label namch dem Click im Nirwana verschwindet?
Jein. Man kann nicht mehr direkt darauf zugreifen, existieren tun die Instanzen aber noch ( man kann sie auch über die Form wieder referenzieren)

uligerhardt 17. Sep 2012 17:01

AW: Verständnisfrage: Label
 
Zitat:

Zitat von p80286 (Beitrag 1183332)
sagt mal hab ich das richtig gesehen?
"Label" ist eine lokale Variable zu TForm1.Button1Click ?
Das bedeutet doch, das Label namch dem Click im Nirwana verschwindet?
Oder ist das gibt es da irgendwelche Nebeneffekte?
Edith:
da das .Free fehlt sollte doch ein schönes Memory Leak da sein?

Nö: Mit
Delphi-Quellcode:
TLabel.Create
wird eine Objektinstanz auf dem Heap angelegt. Die Variable
Delphi-Quellcode:
Label
ist nur eine Referenz darauf, die darf ruhig aus dem Scope fallen. Die Label-Instanz ist trotzdem noch "bekannt" und zwar bei Form1 - sogar zweimal, da Form1 Owner und Parent ist.

DeddyH 17. Sep 2012 17:02

AW: Verständnisfrage: Label
 
Und freigegeben werden sie vom Owner, das passt schon.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 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