Delphi-PRAXiS
Seite 3 von 3     123   

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)

dominikkv 20. Feb 2008 23:15

Re: Zugriffsverletzung bei TStringList
 
naja dann fang mal mit so banalen Sachen an wie nen Breakpoint auf den Create-Aufruf zu machen oder mal sowas wie
Delphi-Quellcode:
if Assigned(TermListe) then
  TermListe.Add('blA');
und dann darauf nen Breakpoint usw^^

Nuclear-Ping 20. Feb 2008 23:26

Re: Zugriffsverletzung bei TStringList
 
Vererb doch mal von TObject statt von TComponent.

Andreas H. 21. Feb 2008 03:42

Re: Zugriffsverletzung bei TStringList
 
Hallo,

ein Component ohne Owner?
Delphi-Quellcode:
newFormel := TFormel.Create(nil);
Ich würde auch von TObject ableiten. Oder soll es mal zu einer Komponente ausgebaut werden?

Gruß Andreas

alzaimar 21. Feb 2008 06:09

Re: Zugriffsverletzung bei TStringList
 
Zitat:

Zitat von Andreas H.
ein Component ohne Owner?

Wieso nicht?

@Yheeky: Bitte poste ein Beispielprojekt, das den Fehler reproduzierbar provoziert. Ich glaube nämlich nicht, das da nicht noch mehr Code ist.

jottkaerr 21. Feb 2008 06:35

Re: Zugriffsverletzung bei TStringList
 
Hallo,

befindet sich TFormel wirklich in einer anderen Unit? Dann kann der Konstruktor nicht aufgerufen werden, weil er protected ist. Mit TFormel.Create(nil) rufst Du also den Konstruktor von TComponent auf, und TFormel.TermListe wird nie erzeugt.

jkr

hoika 21. Feb 2008 07:24

Re: Zugriffsverletzung bei TStringList
 
Hallo,

erstelle ein komplettes Beispiel-Projekt, zippe es
und hänge es an ein Post an.
Der Fehler kommt von was anderem.


Heiko

Nuclear-Ping 21. Feb 2008 10:24

Re: Zugriffsverletzung bei TStringList
 
Zitat:

Zitat von jottkaerr
Hallo,

befindet sich TFormel wirklich in einer anderen Unit? Dann kann der Konstruktor nicht aufgerufen werden, weil er protected ist. Mit TFormel.Create(nil) rufst Du also den Konstruktor von TComponent auf, und TFormel.TermListe wird nie erzeugt.

jkr

Guter Punkt.

Setz doch mal einen Breakpoint und schau, ob der Debugger da anhält.
Delphi-Quellcode:
constructor TFormel.Create(AOwner : TComponent);
begin
inherited Create(AOwner);

  //Termliste initialisieren
  TermListe := TStringList.Create; // <<<< Hier Breakpoint setzen

end;

Yheeky 21. Feb 2008 10:50

Re: Zugriffsverletzung bei TStringList
 
Zitat:

Zitat von jottkaerr
Hallo,

befindet sich TFormel wirklich in einer anderen Unit? Dann kann der Konstruktor nicht aufgerufen werden, weil er protected ist. Mit TFormel.Create(nil) rufst Du also den Konstruktor von TComponent auf, und TFormel.TermListe wird nie erzeugt.

jkr

Super Einwand! Daran lag´s! Der Konstruktor muss also public sein, damit ich ihn auch von anderen Projekten aus aufrufen kann, richtig?

DANKE für die Hilfe!

Nuclear-Ping 21. Feb 2008 13:16

Re: Zugriffsverletzung bei TStringList
 
Ja, sonst ist er nicht nach aussen hin "sichtbar" und dadurch wird der Standard-Constructor aufgerufen. Eigentlich logisch ... Nur manchmal sieht man den Wald vor lauter Bäumen nicht. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:14 Uhr.
Seite 3 von 3     123   

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