![]() |
Fehler bei Zugriff auf Objektliste
Also,
Ich habe eine Objektliste die sieht so aus: var Objects : Array [0..999] of TComponent; In der Liste werden Alle zur Laufzeit erstellten Objekte gespeichert. Das setzen der Eigenschaften funtioniert auch sehr gut, aber wenn ich probiere die Eigenschaften wieder zu lesen, bekomme ich immer einen Schönen Fehler: "Access Violation at BLABLA read Adress 00000000" oder so ich probiere es so: showmessage(TWinControl(Objects[0]).Name); ich habs auch schon über TypInfo probiert: showmessage(GetPropValue(TWinControl(Objects[0]),'Name')); das hat aber auch nicht funktioniert! Ich wäre dankbar für eure Hilfe ;) |
Re: Fehler bei Zugriff auf Objektliste
Moin Coolspot,
wenn Du eine Array of TComponent hast, ist die Chance gross, dass
Delphi-Quellcode:
fehlschlägt, da TComponent nicht von TWinControl abgeleitet ist.
TWinControl(Objects[0]).Name
Hättest Du den Typecast nicht erzwungen, sondern dem Compiler die Chance gegeben den Typ zu prüfen:
Delphi-Quellcode:
hätte der Compiler wohl auch, zu Recht, gemeckert.
(Objects[0] as TWinControl).Name
Warum nimmst Du eigentlich nicht gleiche ein TObjectList? |
Re: Fehler bei Zugriff auf Objektliste
Ich denk mal es geht um deine Python-IDE
Nimm eine TObjectList und speicher darin Klassen nach etwa dem Schema:
Delphi-Quellcode:
In die Getter und setter baust du die Konvertierungen:
TPythonControl = class
private fComponentType : TCompoType; // TCompoType = (ctButton, ctEdit, ...); fComponentName : string; fIrgendeinAttribut : string; procedure SetIrgAttribut(Value: Integer); function GetIrgAttribut: Integer; public property ComponentType: TCompoType read fComponentType write fComponentType; property ComponentName: string read fComponentName write fComponentName; property IrgendeinAttribut: Integer read GetIrgAttribut write SetIrgAttribut; end;
Delphi-Quellcode:
Dazu speicherst du den Zeiger auf das VCL-Control in der Klasse und addest das ganze in die Liste, die Optimalerweise in einer Klasse eingebettet ist, welche das Formular der Python-Anwendung darstellt
procedure TPythonControl.SetIrgAttribut(Value: Integer);
begin fIrgendeinAttribut := IntToStr(Value); end; function TPythonControl.GetIrgAttribut: Integer; begin Result := StrToInt(fIrgendeinAttribut); end; |
Re: Fehler bei Zugriff auf Objektliste
nee nee, jetzt funktionierts, ich weiß jetzt wo der Fehler lag :
ich Hatte es so ungefähr :
Delphi-Quellcode:
und da kam der Fehler, weil "PyCode.Lines" hat kein "GetPropValue", deshalb der Fehler ;)
with PyCode.Lines do begin
GetPropValue(TWinControl(Objects[Form3.LBobjects.ItemIndex]),'Name') end; Aber trotzdem danke für eure Hilfe!!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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-2025 by Thomas Breitkreuz