Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi FindComponent und Zugriffsfehler (https://www.delphipraxis.net/85900-findcomponent-und-zugriffsfehler.html)

fr0g 6. Feb 2007 16:35


FindComponent und Zugriffsfehler
 
Hallo

In meinem programm hab ich intern mehrere Formblätter erstellt mit einem Array

Delphi-Quellcode:
for i:=0 to 50 do begin
 form[i].MsgBox:=TFicMessageBox.Create(self);
 form[i].MsgBox.Name:='icY'+IntToStr(i);
 form[i].MsgBox.mhistory.Name:='mhistory'+IntToStr(i);
Wenn ich jetzt auf das MemoFeld history etwas schreiben will per FindComponent dann sag er mir immer etwas von einem Zugriffsfehler.

Delphi-Quellcode:
 TMemo(FindComponent('mhistory'+IntToStr(i))).Lines.Add('blablabla');
Woher kommt das? Ich glaube das er weiss das es mehrere mhistory gibt (1,2,3,...) und dann kommt er nicht mit klar direkt in mhistory2 zu schreiben.

Hat jemand eine Idee wie ich das vergindern kann?

mfg fr0g

mkinzler 6. Feb 2007 16:39

Re: FindComponent und Zugriffsfehler
 
Wo erstellst du form[i]?

fr0g 6. Feb 2007 16:44

Re: FindComponent und Zugriffsfehler
 
form[i] erstelle ich in meiner hauptform

und den findcomponent in einen der erstellten formen. Weil es gibt ja kein Befehl mit FindComponent aus einer anderen Form in eine andere Form zu arbeiten?

hsg 6. Feb 2007 16:48

Re: FindComponent und Zugriffsfehler
 
Du prüfst auch nicht, ob FindComponent überhaupt was findet, wenn nicht kommt ein freundliches nil zurück, das du dann einfach als Memo ansiehst -> Zugriffsverletzung.

Also erst das Ergebnis abholen und prüfen ob ungleich nil, dann casten und damit arbeiten

fr0g 6. Feb 2007 16:49

Re: FindComponent und Zugriffsfehler
 
Sorry. Aber bin noch Anfänger. kannste das mal bitte ein wenig ausführlicher erklären?
Danke :-D


Alles klar. Hab selber schon herraus bekommen. thx nochmal

bitsetter 6. Feb 2007 19:31

Re: FindComponent und Zugriffsfehler
 
Delphi-Quellcode:
 if FindComponent('mhistory'+IntToStr(i)) as TMemo<> nil
 then
TMemo(FindComponent('mhistory'+IntToStr(i))).Lines.Add('blablabla');


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