Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zugriffsverletzung bei TStringList (https://www.delphipraxis.net/108886-zugriffsverletzung-bei-tstringlist.html)

Yheeky 20. Feb 2008 19:39


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:
type TFormel = class(TComponent)
  private
    TermListe : TStringList;
    function ParseTerm(Term : String) : String;
  public
    procedure Rechnen(Term : String);
  protected
    constructor Create(AOwner : TComponent); override;

end;
Unter anderem ist auch eine StringList für die einzelnen Terme dabei.

Im Konstruktor rufe ich folgendes auf:

Delphi-Quellcode:
constructor TFormel.Create(AOwner : TComponent);
begin
inherited Create(AOwner);

  //Termliste initialisieren
  TermListe := TStringList.Create;

end;
Im Programm erstelle ich dann ein Objekt:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var newFormel : TFormel;
begin
newFormel := TFormel.Create(nil);
newFormel.Rechnen(Edit1.Text);

end;
In der Rechnenfunktion wird dann auf den Term zugegriffen (z.B. TermListe.Add('Test');). Genau hier bekomme ich dann aber eine Fehlermeldung, wieso?

Wäre nett, wenn mir jemand helfen könnte. Danke!

alzaimar 20. Feb 2008 19:41

Re: Zugriffsverletzung bei TStringList
 
Ohne den Rest des Codes wird man Dir nicht helfen können. Ich vermute einen Seiteneffekt o.ä.

DeddyH 20. Feb 2008 19:43

Re: Zugriffsverletzung bei TStringList
 
Die Methode Rechnen wäre bestimmt interessant zu sehen.

Yheeky 20. Feb 2008 19:44

Re: Zugriffsverletzung bei TStringList
 
Wie gesagt: ihr könnt die Funktion durch TermListe.Add('Test'); ersetzen, da tritt der Fehler auch schon auf.

busybyte 20. Feb 2008 20:05

Re: Zugriffsverletzung bei TStringList
 
das ist komisch bei Delphi
Delphi-Quellcode:
Var a:TStringList;
//kann nicht mit
a:=TStringList.create;
initiert werden ,
sondern
Delphi-Quellcode:
Var a:TStrings;
a:=TStringlist.create;

mkinzler 20. Feb 2008 20:07

Re: Zugriffsverletzung bei TStringList
 
TStrings ist eine abstrakte Klasse, TStringlist die implemnetierende

Muetze1 20. Feb 2008 20:12

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.

busybyte 20. Feb 2008 20:34

Re: Zugriffsverletzung bei TStringList
 
@muetze1:stimmt Du hast recht sorry es ist andersrum

Delphi-Quellcode:
Var a:TStrings;
begin
a:=TStrings.Create;
a.Add('Test');
end;
so rum geht es nicht.
Entschuldigung, Irre sind menschlich.

Muetze1 20. Feb 2008 21:06

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?

Yheeky 20. Feb 2008 21:18

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.
Seite 1 von 3  1 23      

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