Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi INIFile.ReadSections führt zum Abstrakten Fehler (https://www.delphipraxis.net/101590-inifile-readsections-fuehrt-zum-abstrakten-fehler.html)

gmc616 16. Okt 2007 00:40


INIFile.ReadSections führt zum Abstrakten Fehler
 
Namd DP,

ich glaub ich werd bekloppt!

Könnt ihr mir verraten warum dieser Code zu einem Abstrakten Fehler führt? (BDS2006)

Delphi-Quellcode:

uses IniFiles;

[...]

procedure TForm1.Button1Click(Sender: TObject);
var
  MyIni : TIniFile;
  MySections : TStrings;
  I: Integer;
begin
  MySections := TStrings.Create;
  MyIni := TIniFile.Create(ChangeFileExt (Application.ExeName,'.ini'));

  MyIni.ReadSections(MySections); // <-- Hier knallts !!

  for I := 0 to MySections.count - 1 do
    ShowMessage (MySections.Strings[i]);

  MySections.Free;
  MyIni.Free;

end;
Isses schon so spät, dass ich's nicht sehe??

Danke und Grüße
gmc

mkinzler 16. Okt 2007 05:39

Re: INIFile.ReadSections führt zum Abstrakten Fehler
 
TStrings ist eine abstrakte Klasse:

Delphi-Quellcode:
MySections := TStringList.Create;

Luckie 16. Okt 2007 08:21

Re: INIFile.ReadSections führt zum Abstrakten Fehler
 
Zitat:

Zitat von mkinzler
TStrings ist eine abstrakte Klasse

Das heißt deren Methoden sind nicht implementiert, sondern nur virtuell vorhanden und werden erst von den Nachfolge-Klassen mit Leben gefüllt.

PS: Eine Forensuche hätte dir aber auch sagen können, was du da falsch machst.

gmc616 16. Okt 2007 11:13

Re: INIFile.ReadSections führt zum Abstrakten Fehler
 
Okay. TStrings ... abstrakte Klasse ... kapiert!

Aber ich werd doch bekloppt!

Selbst wenn ich TStrings zu TStringList ändere, knallt der Code in der besagten Zeile. Zwar nicht mit einem Abstrakten Fehler sondern mit einer Schutzverletzung.
Da ich die Schutzverletzung für einen Fehler meinerseits hielt, habe ich es mit TStrings probiert und der Abstrakte Fehler erschien mir "glaubwürdiger". Deshalb der Post.

Jetzt hab ich das ganze mit Delphi7 und TStringList probiert, da funktionierts. Mit BDS2006 bekomme ich die Schutzverletzung.
Datt will mir nicht in den Schädel :wall:

:hi: gmc

Assertor 16. Okt 2007 11:46

Re: INIFile.ReadSections führt zum Abstrakten Fehler
 
Und du bist sicher, daß er die INI findet?

Delphi-Quellcode:
TIniFile.Create(ChangeFileExt (Application.ExeName,'.ini'));
Ist ja nicht gerade 100%.

Besser

Delphi-Quellcode:
TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
Nur aus dem Kopf - müßte stimmen...

Gruß winkel79

gsh 16. Okt 2007 12:05

Re: INIFile.ReadSections führt zum Abstrakten Fehler
 
ne ob Applictation.ExeName oder Paramstr(0) ist egal da es des genau gleich ist.

Teste des einmal so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  MyIni : TIniFile;
  MySections : TStringList;
  I: Integer;
begin
  MySections := TStringList.Create;
  MyIni := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));

  MyIni.ReadSections(MySections); // <-- Hier knallts !!

  for I := 0 to MySections.count - 1 do
  begin
    ShowMessage(MySections.Items[i]);
  end;

  MySections.Free;
  MyIni.Free;

end;
wenns nicht geht test mal ob MyIni.ReadString(irgendwas, ..) geht

gmc616 16. Okt 2007 12:22

Re: INIFile.ReadSections führt zum Abstrakten Fehler
 
Genau das ist auch mein Code.

Es knallt in besagter Zeile.

MyIni.ReadString (...) funktioniert, auch das Lesen von Bool, Integer usw. sowie das Schreiben. Nur das Lesen der Sections macht Probleme. Daher der Verdacht, dass es an den TStrings liegt. Aber das haben wir ja geklärt.

Irgendwo hier im Forum hab ich eine Alternative zum Lesen der INI-Sections gefunden, aber das ist ja nicht Sinn der Sache.

So langsam glaub ich auch mein BDS hat ne Macke, denn auch die IDE läßt sich nicht korrekt beenden (Schutzverletzung), obwohl der Rechner an sich sehr stabil läuft. :evil:

:gruebel:

Progman 16. Okt 2007 12:26

Re: INIFile.ReadSections führt zum Abstrakten Fehler
 
und functioniert ReadSectionValues ?
Ich glaub auch fast, dein Delphi ist kaputt ;)

RavenIV 16. Okt 2007 13:05

Re: INIFile.ReadSections führt zum Abstrakten Fehler
 
Wie sieht denn Deine ini aus?

Ich hatte mal den Fall, dass ich sowas in einer ini geschrieben habe.
Zitat:

...
...
[MISC]
Groesse=100 // dies ist die Grösse des Fensters,
die am Anfang gesetzt wird
Titel=Fenster für Optionen // Der Fenstertitel
wird ganz oben angezeigt
...
...
Das ReadInteger und ReadString hat funktioniert, da wurde der "Kommentar" ignoriert.
Aber das ReadSections hat nicht wollen und das Programm ist abgeschmiert mitsamt der Delphi7-IDE.
Dabei hat er sich am Zeilenumbruch gestört, vermutlich beim Integer-Wert.
Nachdem ich die "Kommentare" alle entfernt habe, ist es dann gelaufen.

Progman 16. Okt 2007 13:07

Re: INIFile.ReadSections führt zum Abstrakten Fehler
 
RavenIV: stimmt, das kann zum crash führen.
Kommentare in Ini's nur mit ; am Anfang einer Zeile, das wird akzeptiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:15 Uhr.
Seite 1 von 2  1 2      

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