Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Zugriff auf Objekt in TObjectList (https://www.delphipraxis.net/202792-zugriff-auf-objekt-tobjectlist.html)

hoika 10. Dez 2019 08:56

AW: Zugriff auf Objekt in TObjectList
 
Hallo,
Freimatz
genau das meinte ich mit "Verwendung von lokalen Variablen".

Ykcim 10. Dez 2019 09:00

AW: Zugriff auf Objekt in TObjectList
 
Guten Morgen Zusammen,

vielen Dank für die Unterstützung. Leider klappt es noch immer nicht...
Ich habe jetzt Folgendes gemacht:

Delphi-Quellcode:
Type
   TDesign=class
      private
         FListe_Button: TObjectList;
Delphi-Quellcode:
constructor TDesign.Create;
begin
   FListe_Button:= TObjectList.Create;
end;
Delphi-Quellcode:
procedure TDesign.Design_LogIn;
begin
   FListe_Button.Add(Form_LogIn.btn_login_abbruch);
   FListe_Button.Add(Form_LogIn.btn_login_ok);
   Labeling_GlowButtons;
end;
Delphi-Quellcode:
procedure TDesign.Labeling_GlowButtons;
var
   I: integer;
   MyButton: TTMSFNCToolBarButton;
   Button_Text: string;
begin
   for I := 0 to FListe_Button.Count -1 do begin
      MyButton:=FListe_Button.Items[I] as TTMSFNCToolBarButton;
      Button_Text:=Data_Module.xDST_Sprache.FieldByName(MyButton.Name).AsString;
      MyButton.Text:=Button_Text;
   end;
end;
Ich bekomme leider nach wie vor die Fehlermeldung:
Zitat:

ERROR
Uncaught TypeError: Cannot read property 'FName' of null | TypeError: Cannot read property 'FName' of null at Object.Labeling_GlowButtons (http://localhost:8000/NedCom_Web/Ned...b.js:119380:52) at Object.Design_LogIn
Aus irgendeinem Grund kann er auf die Objekte in der TObjectList anscheinend nicht zugreifen. Ich habe aber mit
Delphi-Quellcode:
ShowMessage('Anzahl Buttons: '+IntToStr(FListe_Button.Count));
geprüft, dass 2 Objekte in der Liste enhalten sind und haben mit
Delphi-Quellcode:
ShowMessage(Data_Module.xDST_Sprache.FieldByName('btn_login_abbruch').AsString);
geprüft, dass die Daten aus der DB auch vorhanden sind.

Ich weiß nicht, wo es hakt...

Gruß
Patrick

DieDolly 10. Dez 2019 09:57

AW: Zugriff auf Objekt in TObjectList
 
Zitat:

Aus irgendeinem Grund kann er auf die Objekte in der TObjectList anscheinend nicht zugreifen. Ich habe aber mit
Die Fehlermeldung sagt nichts über die TObjectList aus.

Ykcim 10. Dez 2019 10:12

AW: Zugriff auf Objekt in TObjectList
 
Der Fehler tritt aber auf, sobald ich versuche auf ein Objekt zuzugreifen.
Delphi-Quellcode:
MyButton:=FListe_Button.Items[I] as TTMSFNCToolBarButton; //Das funktioniert noch
ShowMessage(MyButton.Name);//Hier knallt es
Ich habe alle Schritte davor getestet!

freimatz 10. Dez 2019 10:13

AW: Zugriff auf Objekt in TObjectList
 
und warum? Kannst Du debuggen?

Ist "FListe_Button.Items[I]" leer oder hat es den falschen Typ oder ist das Objekt schon wieder weg.
Mache davor ein "if Assigned(FListe_Button.Items[I]). Wenn ok lass dir "FListe_Button.Items[I].Classname"anzeigen.


Zitat:

Zitat von hoika (Beitrag 1453125)
Hallo,
Freimatz
genau das meinte ich mit "Verwendung von lokalen Variablen".

Ja. Danke für Deinen Hinweis. Ich dachte dann ein Beispiel wäre für nicht schlecht.

Klaus01 10. Dez 2019 10:13

AW: Zugriff auf Objekt in TObjectList
 
.. hat MyButton denn eine Adresse oder null?

Grüße
Klaus

hoika 10. Dez 2019 10:43

AW: Zugriff auf Objekt in TObjectList
 
Hallo,


Zitat:

FListe_Button.Add(Form_LogIn.btn_login_abbruch);
Mach mal danach

Delphi-Quellcode:
ShowMessage(Form_LogIn.btn_login_abbruch.Name);
und

Delphi-Quellcode:
if FListe_Button.Items[0] is TTMSFNCToolBarButton then
begin
  ShowMessage('OK');
end;

Ykcim 10. Dez 2019 10:51

AW: Zugriff auf Objekt in TObjectList
 
Wie es aussieht, ist das Objekt schon wieder weg... :shock:

Delphi-Quellcode:
for I := 0 to FListe_Button.Count -1 do begin
      if Assigned(FListe_Button.Items[I]) then
         ShowMessage(FListe_Button.Items[I].ClassName)
      else
         ShowMessage('Not assigned');
   end;
Ergebnis lautet: Not assigned...

Aber warum ist das so? Vorher frage ich die Anzahl der Objekte in der Liste ab und bekomme das Ergebnis 2.
Delphi-Quellcode:
ShowMessage('Anzahl Buttons: '+IntToStr(FListe_Button.Count));
Delphi-Quellcode:
      if FListe_Button.Items[I] is TTMSFNCToolBarButton then
         ShowMessage('OK')
      else
         ShowMessage('Not OK');

Auch hier lautet das Ergebnis: Not OK!

Ich gebe die Liste aktuell auch nicht wieder frei...

Vielen Dank
Patrick

DieDolly 10. Dez 2019 10:52

AW: Zugriff auf Objekt in TObjectList
 
Zeig mal deinen abgeänderten Code. Also alles meine ich was wichtig ist.

Jumpy 10. Dez 2019 10:54

AW: Zugriff auf Objekt in TObjectList
 
Für mich sieht das so aus, als ob du in die Liste schon ein Nil-Object reinpackst. Sprich gibt es die Button zu dem Zeitpunkt wo die Prozedur läuft schon?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 Uhr.
Seite 3 von 5     123 45      

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