![]() |
Speicherzugriffsfehler bei Array of TButton
Hi!
Ich will mir eine Classe erstellen in der ich u.a. ein Array of TButton habe. Ich kriege nur einen Speicherzugriffs fehler wenn ich einen Button hinzufügen möchte:
Delphi-Quellcode:
Weis jemand warum ich diesen Fehler kriege?
TButtons= class
private FButtonList:TButtonList; FButtonIndex:Integer; FOwner:TObject; {...} public procedure AddButton; constructor create(Owner:TObject); {...} end; implementation { TButtons } procedure TButtons.AddButton; begin inc(FButtonIndex); setlength(FButtonList,FButtonIndex); FButtonList[FButtonIndex].Button.Create(FOwner); //Hier kriege ich den Fehler FButtonList[FButtonIndex].Button.Parent:=FOwner; end; constructor TButtons.create(Owner:TObject); begin FOwner:=Owner; FButtonIndex:=0; end; Achso: Aufrufen tu ich das so von ner anderen Form:
Delphi-Quellcode:
gruß Teekeks
var Buttons:TButtons
{...} Buttons:=TButtons.create(Form1,form1,Form1); Buttons.AddButton; |
Re: Speicherzugriffsfehler bei Array of TButton
Wie ist die Klasse TButtonList deklariert?
|
Re: Speicherzugriffsfehler bei Array of TButton
so:
Delphi-Quellcode:
TButtonlist=array of TButton;
|
Re: Speicherzugriffsfehler bei Array of TButton
Was passiert, wenn Du das mal so versuchst?
Delphi-Quellcode:
FButtonList[FButtonIndex] := TButton.Create(FOwner);
|
Re: Speicherzugriffsfehler bei Array of TButton
Auf den ersten Blick fällt mir auf, dass Du Setlength() mit ButtonIndex aufrufst. Setlength ist nicht 0-indiziert.
Probier' mal
Delphi-Quellcode:
Grüße, Messie
setlength(FButtonList,FButtonIndex+1);
|
Re: Speicherzugriffsfehler bei Array of TButton
Direkt davor steht doch
Zitat:
[edit] Aber stimmt, der Index beim Zugriff stimmt nicht, hier sollte man vielleicht lieber High() verwenden. [/edit] |
Re: Speicherzugriffsfehler bei Array of TButton
Wenn du dein Array auf die Länge n setzt, ist der Index des letzten Elements n-1.
|
Re: Speicherzugriffsfehler bei Array of TButton
Zitat:
Zitat:
|
Re: Speicherzugriffsfehler bei Array of TButton
Klar, Du hast FOwner ja auch als TObject und nicht als TComponent deklariert.
|
Re: Speicherzugriffsfehler bei Array of TButton
Oops: ich hab zuviel weggekürzt: da stand:
Delphi-Quellcode:
FComponent:TComponent;
FWincontrol:TWincontrol; {...} FButtonList[High(FButtonList)].Create(FComponent); FButtonList[FButtonIndex].Parent:=FWinControl; {...} |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 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