Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi AV bei Verwendung einer INI-File (https://www.delphipraxis.net/68188-av-bei-verwendung-einer-ini-file.html)

3_of_8 25. Apr 2006 22:35


AV bei Verwendung einer INI-File
 
Morgen.
Ich habe folgende Klassenfunktion, mit der ich die "ID" (ein von mir für jede meiner abgeleiteten Klassen vergebener Wert) aus einer INI-Datei auslese:

Delphi-Quellcode:
class function TModule.GetModuleID: Cardinal;
var ini: TIniFile;
begin
ini:=TIniFile.Create(ModuleConfigFile);
try
Result:=strtoint(ini.ReadString(ClassName,'ID','0'));
finally
ini.free;
end;
end;
Allerdings bekomme ich eine AV in der ntdll.dll.

Was könnte das bedeuten? Außerhalb dieser Klassenfunktion kann ich ohne Probleme aus der Datei lesen.

Hawkeye219 25. Apr 2006 22:49

Re: AV bei Verwendung einer INI-File
 
Zwei Fragen:

1.) Ist ModuleConfigFile ein Funktionsaufruf oder eine Variable? Falls es ein Funktionsaufruf ist, würde ich in der Funktion mal suchen.

2.) Warum benutzt du nicht ReadInteger statt ReadString?

Gruß Hawkeye

DevilsCamp 26. Apr 2006 06:51

Re: AV bei Verwendung einer INI-File
 
Zitat:

Zitat von Hawkeye219
Zwei Fragen:

1.) Ist ModuleConfigFile ein Funktionsaufruf oder eine Variable? Falls es ein Funktionsaufruf ist, würde ich in der Funktion mal suchen.

Und wenn es eine Variable ist, wo wird sie initialisiert? Steht auch der Name (+Pfad) der INI-Datei drin?

Hawkeye219 26. Apr 2006 07:45

Re: AV bei Verwendung einer INI-File
 
@DevilsCamp

Das war auch mein erster Gedanke. Abers selbst wenn die Variable leer ist oder ein unzulässiger Pfad drin steht, funktioniert der Zugriff auf die (nicht vorhandene) INI-Datei. Delphi liefert in diesem Fall einfach den angegebenen Defaultwert. Ich hatte eigentlich auch mit einer Exception gerechnet. :?

Gruß Hawkeye

DevilsCamp 26. Apr 2006 07:53

Re: AV bei Verwendung einer INI-File
 
hast Recht..

@3_of_8:
Hast du die AV immer oder nur bei einem bestimmten File?

jim_raynor 26. Apr 2006 09:38

Re: AV bei Verwendung einer INI-File
 
Wie rufst du denn die Methode auf? Ich hab so das Gefühl, dass er bei ClassName knallt. Also prüfe, ob du eine gültige Klasse beim Aufruf benutzt.

Muetze1 26. Apr 2006 09:52

Re: AV bei Verwendung einer INI-File
 
Zitat:

Zitat von jim_raynor
Also prüfe, ob du eine gültige Klasse beim Aufruf benutzt.

Meinst du eine gültige Instanz? Wenn ja: hinfällig, da es eine Class Procedure ist.

DevilsCamp 26. Apr 2006 09:55

Re: AV bei Verwendung einer INI-File
 
Zitat:

Zitat von jim_raynor
Wie rufst du denn die Methode auf? Ich hab so das Gefühl, dass er bei ClassName knallt. Also prüfe, ob du eine gültige Klasse beim Aufruf benutzt.

ClassName ist eine String-Variable.
Soviel kann man schon sagen, wenn man weiß, welche Parameter ReadString von TIniFile erwartet

GuenterS 26. Apr 2006 09:59

Re: AV bei Verwendung einer INI-File
 
Ich habe gerade versucht ClassName in einer class Procedure zu verwenden. Das funktioniert.

Bleibt diese ModuleConfigFile noch. Ist das vielleicht ein Property der Klasse?

jim_raynor 26. Apr 2006 10:35

Re: AV bei Verwendung einer INI-File
 
Zitat:

Zitat von GuenterS
Ich habe gerade versucht ClassName in einer class Procedure zu verwenden. Das funktioniert.

Ich habe ja auch nicht behauptet, dass es nicht funktioniert. Folgendes als Beispiel:

Delphi-Quellcode:
type
  TMyClass = class of TModule;

var
  MyClass: TMyClass;

begin
  MyClass:=nil;
  ShowMessage(IntToStr(MyClass.GetModuleID));
end;
könnte zu einer AV führe, da er ja keine gültige Klasse bekommen hat.

Und deshalb meine Bitte. Zeig mal den Aufruf der Funktion. Eventuell übergibts du ja nil als Objekt/Klasse.

p.S: Hab schon mitbekommen, dass es eine Klassenfunktion ist, aber trotzdem kann man mit dem obigen Konstrukt eine Übergabe von nil erreichen und das dürfte dann in einer AV in Classname verursachen, wenn dort keine prüfungen auf nil drin sind.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:31 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz