![]() |
Zugriffsverletzung bei TStringList
Hallo,
ich möchte verschiedene Funktionen und Prozeduren in einer Unit auslagern. Ich habe hierfür einen Typen definiert, den ich mit diesen bestücke.
Delphi-Quellcode:
Unter anderem ist auch eine StringList für die einzelnen Terme dabei.
type TFormel = class(TComponent)
private TermListe : TStringList; function ParseTerm(Term : String) : String; public procedure Rechnen(Term : String); protected constructor Create(AOwner : TComponent); override; end; Im Konstruktor rufe ich folgendes auf:
Delphi-Quellcode:
Im Programm erstelle ich dann ein Objekt:
constructor TFormel.Create(AOwner : TComponent);
begin inherited Create(AOwner); //Termliste initialisieren TermListe := TStringList.Create; end;
Delphi-Quellcode:
In der Rechnenfunktion wird dann auf den Term zugegriffen (z.B. TermListe.Add('Test');). Genau hier bekomme ich dann aber eine Fehlermeldung, wieso?
procedure TForm1.Button1Click(Sender: TObject);
var newFormel : TFormel; begin newFormel := TFormel.Create(nil); newFormel.Rechnen(Edit1.Text); end; Wäre nett, wenn mir jemand helfen könnte. Danke! |
Re: Zugriffsverletzung bei TStringList
Ohne den Rest des Codes wird man Dir nicht helfen können. Ich vermute einen Seiteneffekt o.ä.
|
Re: Zugriffsverletzung bei TStringList
Die Methode Rechnen wäre bestimmt interessant zu sehen.
|
Re: Zugriffsverletzung bei TStringList
Wie gesagt: ihr könnt die Funktion durch TermListe.Add('Test'); ersetzen, da tritt der Fehler auch schon auf.
|
Re: Zugriffsverletzung bei TStringList
das ist komisch bei Delphi
Delphi-Quellcode:
initiert werden ,
Var a:TStringList;
//kann nicht mit a:=TStringList.create; sondern
Delphi-Quellcode:
Var a:TStrings;
a:=TStringlist.create; |
Re: Zugriffsverletzung bei TStringList
TStrings ist eine abstrakte Klasse, TStringlist die implemnetierende
|
Re: Zugriffsverletzung bei TStringList
@busybyte: Das ist irrelevant ob du nun die Basisklasse oder eine spezifische für den Member angibst. Das macht keinen Unterschied für den o.g. Fehler. Es muss entsprechend auch nicht so deklariert werden.
|
Re: Zugriffsverletzung bei TStringList
@muetze1:stimmt Du hast recht sorry es ist andersrum
Delphi-Quellcode:
so rum geht es nicht.
Var a:TStrings;
begin a:=TStrings.Create; a.Add('Test'); end; Entschuldigung, Irre sind menschlich. |
Re: Zugriffsverletzung bei TStringList
Aso, nun weiss ich was du meinst. Du willst auf den abstrakten Fehler hinweisen - oder meintest du die Vererbungsreihenfolge? Bei letzterem meintest du dann wohl var vom Typ TStringList, oder nicht?
|
Re: Zugriffsverletzung bei TStringList
Irgendwie kann ich nicht ganz folgen :-D
Wie muss ich das denn nun machen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 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 by Thomas Breitkreuz