Delphi XE2 - Komponente wird nicht erzeugt/dargestellt
spacer
Autor Nachricht
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1564
Erhaltene Danke: 24



BeitragVerfasst: Di 03.01.12 18:38 
Hallo!

Ich habe eine Komponente TLabeledImage (ist im Package Visual.bpl) selbst entwickelt und konnte sie bisher (Delphi 6) immer nutzen, aber unter Delphi XE2 erhalte ich beim Versuch, sie auf die Form zu ziehen, die Meldung:

Zitat:
Zugriffsverletzung bei Adresse 14F6D116 in Modul 'Visual.bpl'. Lesen von Adresse 000006C.

Im Textfenster darunter:
Zitat:
[14F6D116]{Visual.bpl } LabeledImage.TLabeledImage.GetFont$qqrv (Line 119, "LabeledImage.pas" + 1) + $9
[5008C1A1]{rtl160.bpl } System.TypInfo.GetOrdProp (Line 2027, "System.TypInfo.pas" + 36) + $1
[20FEFB06]{designide160.bpl} ComponentDesigner.FindComponentDependencies (Line 3755, "ComponentDesigner.pas" + 15) + $9
...
Die Liste der Fehler ist noch länger.

Hier Zeile 119 der Datei LabeledImage.pas:
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
function TLabeledImage.GetFont: TFont;
begin
Result := FLabel.Font; // <-- Zeile 119
end;
Das Auskommentieren nützt nichts.

Aber ein Formular, das bereits eine Komponente TLabeledImage enthält, lässt sich problemlos öffnen. Also denke ich, Delphi XE2 kann die Kompo zur Designzeit nicht darstellen. Zur Laufzeit kann ich die Kompo erzeugen und auch damit arbeiten.

Muss ich die Kompo vergessen oder kann ich da was machen?

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es glumt der jabberwock - und die graisligen gulpen nurmen!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Erichgue
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 84

Win XP/2000
TurboPacal 7.0; Delphi 2/5/7; BDS2006; C#; MSSQl 2000
BeitragVerfasst: Mi 04.01.12 15:32 
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
function TLabeledImage.GetFont: TFont;
begin
Result := FLabel.Font; // <-- Zeile 119
end;


Liefert vermutlich NIL zurück.

Ist FLabel beim Aufruf von GetFont instanziert\zugewiesen?

Erich
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1564
Erhaltene Danke: 24



BeitragVerfasst: Mi 04.01.12 18:15 
user profile iconErichgue hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
function TLabeledImage.GetFont: TFont;
begin
Result := FLabel.Font; // <-- Zeile 119
end;


Liefert vermutlich NIL zurück.
Ja, offenbar, denn ich hatte, als ich es schaffte, die Komponente auf die Form zu ziehen, die Meldung (sinngemäss): "NIL kann nicht zu TFont zugewiesen werden".

user profile iconErichgue hat folgendes geschrieben Zum zitierten Posting springen:
Ist FLabel beim Aufruf von GetFont instanziert\zugewiesen?
Das dachte ich zumindest, denn bisher hat's ja funktioniert.

Habe jetzt Prozedure SetName komplett entfernt, GetFont habe ich so abgeändert:
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
function TLabeledImage.GetFont: TFont;
begin
if Assigned(FLabel) then
Result := FLabel.Font;
end;


Jetzt funktioniert's wieder!

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es glumt der jabberwock - und die graisligen gulpen nurmen!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15833
Erhaltene Danke: 737

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Mi 04.01.12 18:17 
Nebenbei als Hinweis:
Du kannst in so einem Fall einfach Delphi beim Package als Hostanwendung eintragen, nen Haltepunkt setzen und kurz nachschauen was los ist. ;-)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1564
Erhaltene Danke: 24



BeitragVerfasst: Mi 04.01.12 18:30 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Nebenbei als Hinweis:
Du kannst in so einem Fall einfach Delphi beim Package als Hostanwendung eintragen, nen Haltepunkt setzen und kurz nachschauen was los ist. ;-)
Muss ich mir ansehen!

user profile iconErichgue hat folgendes geschrieben Zum zitierten Posting springen:
Ist FLabel beim Aufruf von GetFont instanziert\zugewiesen?
Wohl nicht, aber warum funktioniert es dann unter D6?

Vor allem:
user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
Das Auskommentieren nützt nichts.
Kann aber sein, dass da noch andere Bedingungen gegeben waren, die ich jetzt behoben habe.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es glumt der jabberwock - und die graisligen gulpen nurmen!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 1172
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mi 04.01.12 21:04 
user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
function TLabeledImage.GetFont: TFont;
begin
if Assigned(FLabel) then
Result := FLabel.Font;
end;

Wo ist denn da der ELSE Teil?
Denn wenn man sich das ganze über die CPU Anzeige anschaut wird das jetzt zu:
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
]function TLabeledImage.GetFont: TFont;
begin
Result := TFont(Self); // << Speicherüberschreibungen sind da vorprogrammiert
if Assigned(FLabel) then
Result := FLabel.Font;
end;

_________________
Ist Zeit wirklich Geld?
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1564
Erhaltene Danke: 24



BeitragVerfasst: Do 05.01.12 00:14 
user profile iconAndyB hat folgendes geschrieben Zum zitierten Posting springen:
Wo ist denn da der ELSE Teil?


ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
function TLabeledImage.GetFont: TFont;
begin
if Assigned(FLabel) then
Result := FLabel.Font
else
Result := Parent.Font; //Parent.Font wird dzt. auch ohne diese Zeile von Delphi gesetzt,
end; //wenn man die Kompo auf die Form legt

Hab's noch nicht getestet, aber das ist doch die Lösung, oder?

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es glumt der jabberwock - und die graisligen gulpen nurmen!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1564
Erhaltene Danke: 24



BeitragVerfasst: Do 05.01.12 20:53 
user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconAndyB hat folgendes geschrieben Zum zitierten Posting springen:
Wo ist denn da der ELSE Teil?


ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
function TLabeledImage.GetFont: TFont;
begin
if Assigned(FLabel) then
Result := FLabel.Font
else
Result := Parent.Font; //Parent.Font wird dzt. auch ohne diese Zeile von Delphi gesetzt,
end; //wenn man die Kompo auf die Form legt

Hab's noch nicht getestet, aber das ist doch die Lösung, oder?


//Edit:
Korrekt ist:
ausblenden Delphi-Quelltext markieren
1:
2:
  else
Result := Font;

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es glumt der jabberwock - und die graisligen gulpen nurmen!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home