AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler bei Zugriff auf Objektliste

Ein Thema von Coolspot · begonnen am 25. Mär 2007 · letzter Beitrag vom 25. Mär 2007
Antwort Antwort
Coolspot

Registriert seit: 13. Mär 2005
Ort: Berlin
42 Beiträge
 
#1

Fehler bei Zugriff auf Objektliste

  Alt 25. Mär 2007, 17:06
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
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Fehler bei Zugriff auf Objektliste

  Alt 25. Mär 2007, 17:16
Moin Coolspot,

wenn Du eine Array of TComponent hast, ist die Chance gross, dass

TWinControl(Objects[0]).Name fehlschlägt, da TComponent nicht von TWinControl abgeleitet ist.

Hättest Du den Typecast nicht erzwungen, sondern dem Compiler die Chance gegeben den Typ zu prüfen:

(Objects[0] as TWinControl).Name hätte der Compiler wohl auch, zu Recht, gemeckert.

Warum nimmst Du eigentlich nicht gleiche ein TObjectList?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Fehler bei Zugriff auf Objektliste

  Alt 25. Mär 2007, 17:24
Ich denk mal es geht um deine Python-IDE

Nimm eine TObjectList und speicher darin Klassen nach etwa dem Schema:

Delphi-Quellcode:
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;
In die Getter und setter baust du die Konvertierungen:
Delphi-Quellcode:
  procedure TPythonControl.SetIrgAttribut(Value: Integer);
  begin
    fIrgendeinAttribut := IntToStr(Value);
  end;

  function TPythonControl.GetIrgAttribut: Integer;
  begin
    Result := StrToInt(fIrgendeinAttribut);
  end;
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
  Mit Zitat antworten Zitat
Coolspot

Registriert seit: 13. Mär 2005
Ort: Berlin
42 Beiträge
 
#4

Re: Fehler bei Zugriff auf Objektliste

  Alt 25. Mär 2007, 17:26
nee nee, jetzt funktionierts, ich weiß jetzt wo der Fehler lag :

ich Hatte es so ungefähr :
Delphi-Quellcode:
with PyCode.Lines do begin
  GetPropValue(TWinControl(Objects[Form3.LBobjects.ItemIndex]),'Name')
end;
und da kam der Fehler, weil "PyCode.Lines" hat kein "GetPropValue", deshalb der Fehler

Aber trotzdem danke für eure Hilfe!!!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:12 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