![]() |
Findcomponent löst Exception aus???
Hi,
Ich will auf eine Image-Komponente mit Findcomponent zugreifen. Da dies jedoch immer eine Exception ausgelöst hat, hab ich 2 Showmessages an den Anfang gesetzt. Die erste wird angezeigt und dann kommt ne Exception(Ungültige Typenumwandlung) Der Name der Komponente ist im_st1nr1. Stapel[1].Anzahl ist auch 1. Hab ich irgend einen Fehler übersehen?, oder warum klappt das nicht?
Delphi-Quellcode:
Edit: Es kommt Ne Exception(Ungültige Typenumwandlung), nicht zugriffsverletzung
showmessage('s');
showmessage((Findcomponent('im_st'+ InttoStr(1) + 'nr1'+ InttoStr(Stapel[1].Anzahl) ) as TImage).name); |
Re: Findcomponent löst Exception aus???
Moin,
wenn FindComponent die Komponente nicht findet, wird ein nil-Zeiger zurückgegeben. Du solltest also immer prüfen, ob FindComponent auch eine Komponente liefert. also...
Delphi-Quellcode:
Ausserdem solltest du, wenn du schon Text mit einer ShowMessage ausgibst vielleicht den String ausgeben, den du an FindComponent übergibst, dann würdest du nämlich auch bestimmt sehen, dass die Komponente du du finden möchtest nicht existiert.
var Image:TImage;
begin Image:=Findcomponent('im_st'+ InttoStr(1) + 'nr1'+ InttoStr(Stapel[1].Anzahl)) as TImage; if assigned(Image) then showmessage(Image.name); end; MfG Thorsten |
Re: Findcomponent löst Exception aus???
Ja, das könnt ich machen, aber das hilft mir bei meinem problem auch nicht, da die Komponente ja vorhanden ist.
|
Re: Findcomponent löst Exception aus???
Hi Thorben86,
Delphi-Quellcode:
Überprüf mal ob die Kompo überhaupt ein Image ist, also z.B. so:
showmessage((Findcomponent('im_st'+ InttoStr(1) + 'nr1'+ InttoStr(Stapel[1].Anzahl) ) as TImage).name);
Delphi-Quellcode:
Greetz
var
c: TObject; begin c := Findcomponent('im_st'+ InttoStr(1) + 'nr1'+ InttoStr(Stapel[1].Anzahl)); if c is TImage then ShowMessage(TImage(c).Name); end; alcaeus |
Re: Findcomponent löst Exception aus???
Thx @ alcaeus: Ich hab jetzt das Problem gefunden, ich hatte die Images durch Shapes ersetzt :wall: :wall: :wall: :oops:
:dp: |
Re: Findcomponent löst Exception aus???
Aber jetzt klappt es irgendwie nicht, den Namen davon dann umzuändern.
Klappt das generell nicht oder hab ich schon wieder nen Fehler eingebaut?
Delphi-Quellcode:
(Findcomponent('im_st'+ InttoStr(Startstapel) + 'nr' + InttoStr(Stapel[Startstapel].Anzahl)) as TShape).Name := 'im_st'+ InttoStr(Zielstapel) + 'nr' + InttoStr(Stapel[Zielstapel].Anzahl + 1);
|
Re: Findcomponent löst Exception aus???
Hi Thorben86,
sag mal was denn nicht funktioniert. Gibts eine Fehlermeldung? AV? Greetz alcaeus |
Re: Findcomponent löst Exception aus???
Sry, es kommt ne Exception, dass es eine Zugriffsverletzung gibt.
|
Re: Findcomponent löst Exception aus???
Hi Thorben86,
versuch mal, das Ergebnis von FindComponent in einer Variable abzuspeichern und anschließend den Namen zu ändern. Vielleicht gibts Probleme, weil du ja indirekt der Funktion was zuweist. Greetz alcaeus |
Re: Findcomponent löst Exception aus???
Ahmm, könntest du vielleicht mal en beispiel machen, wie ich das mache, weil wenn ich den dateinamen auf ner Variable hab, kann ich den zwwar auf der variable ändern, aber wie änder ich den dann bei der Kompo
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz