Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi IniFile wird nicht erstellt! (https://www.delphipraxis.net/136238-inifile-wird-nicht-erstellt.html)

aramintaros 26. Jun 2009 00:46


IniFile wird nicht erstellt!
 
Hallo zusammen,
bei mir wird kein IniFile erstellt und ich hab nach einigem Suchen keine Lösung gefunden.
Kann mir hier weiter geholfen werden? Um einen IniFile zu erstellen benutze ich folgenden Code:
Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var Ini: TIniFile;
begin
  Ini:= TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
  try
    Ini.WriteString( 'VideoSaveDir', 'VideoSaveDir', VideoSaveDir);
    Ini.WriteString('Zwischenspeicher', 'Zwischenspeicher', Zwischenspeicher);
    Ini.WriteString('Arbeitsverzeichnis', 'Arbeitsverzeichnis', Arbeitsverzeichnis);
    Ini.UpdateFile;
  finally
  end;
  Ini.Free;
  VideoFilelist.Free;
  Videopuffer:= nil;
  VideoInfo:= nil;
end;

// Hab's dann so versucht:

  Ini:= TIniFile.Create('C:\DasVerzeichnis\Meine.ini');

// Aber auch hier passiert nichzs - keine *.ini
Die Variable "Ini" als eine globbale Variable zu deklarieren hat auch nicht geklappt.
Weis jemand Rat, bin nach 4 Stunden erfolglosem Suchen, lesen und probieren recht entnervt :roll:
Auf dem PC bin ich der Chefe, also fehlende Rechte können es nicht sein, klappt ja mit Textfiles und anderen auch (XP-Delphi2009).
Danke schon mal und noch einen ruhigen Abend.

Luckie 26. Jun 2009 01:19

Re: IniFile wird nicht erstellt!
 
Welches Betriebssystem? Und warum ist das Ini.Free; nicht im finally-Block wo es hingehört?

Deine Sektionen heißen genauso wie die Schlüssel, das finde ich etwas ungewöhnlich. Eventuell liegt das Problem darin begründet.

mirage228 26. Jun 2009 01:30

Re: IniFile wird nicht erstellt!
 
Schalt sonst mal die Debug DCUs an und setze einen Haltepunkt auf die FormClose Routine (wird sie überhaupt aufgerufen?)

Viele Grüße

Muetze1 26. Jun 2009 06:34

Re: IniFile wird nicht erstellt!
 
Zitat:

Zitat von mirage228
Schalt sonst mal die Debug DCUs an und setze einen Haltepunkt auf die FormClose Routine (wird sie überhaupt aufgerufen?)

Und wieso braucht er dafür die Debug DCU's?

hoika 26. Jun 2009 07:00

Re: IniFile wird nicht erstellt!
 
Hallo,

Delphi-Quellcode:
Ini:= TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
Inis gehören nichts ins Exe-Verzeichnis.
Dort besteht unter deinem XP in der Regel kein Schreibrecht,
ab Vista geht das gar nicht mehr (jaja, stimmt nicht ganz)

Delphi-Quellcode:
Ini:= TIniFile.Create('C:\DasVerzeichnis\Meine.ini');
Hast du in C:\DasVerzeichnis Schreibrecht ?
Existiert das Verzeichnis überhaupt.
Hast du nach dem Create auch etwas in die Ini reingeschrieben ?
Ini.Free vergessen ?


Heiko

mkinzler 26. Jun 2009 07:02

Re: IniFile wird nicht erstellt!
 
Besser mit Special FoldersSpecial Folders arbeiten

mirage228 26. Jun 2009 08:33

Re: IniFile wird nicht erstellt!
 
Zitat:

Zitat von Muetze1
Zitat:

Zitat von mirage228
Schalt sonst mal die Debug DCUs an und setze einen Haltepunkt auf die FormClose Routine (wird sie überhaupt aufgerufen?)

Und wieso braucht er dafür die Debug DCU's?

Naja, falls was in TIniFile selbst nicht passiert bzw. schief läuft würde er das ja auch sehen.

Popov 26. Jun 2009 09:20

Re: IniFile wird nicht erstellt!
 
Zitat:

Zitat von aramintaros
Hallo zusammen,
bei mir wird kein IniFile erstellt und ich hab nach einigem Suchen keine Lösung gefunden.
Kann mir hier weiter geholfen werden? Um einen IniFile zu erstellen benutze ich folgenden Code:

...

Also was den Quellcode angeht, so gibt es da keinen Fehler. Zwar sollte die Ini.Free in den finally-Block, aber das nur nebenbei und hat auf die Funktionalität selbst keine Auswirkung. Ob die Ini Variable global oder lokal angelegt wird hat für die Funktionalität auch keine Bedeutung. Lokal ist besser, global ist aber kein Fehler. Ich gehe mal davon aus, daß du die Unit IniFiles eingetragen hast, sonst hättest du ja eine Fehlermeldung.

Teste es eventuell ohne Ini.UpdateFile, aber das sollte es auch nicht sein. Unter Win NT ff hat UpdateFile sowieso keine Bedeutung.

Das einzige was sein kann, sind tatsächlich Schreibrechte in dem Ordner. Benutzt du eventuell Vista? Bei Vista denkt man oft, daß man Adminrechte hat, hat man aber keine.

Das einzige was noch sein könnte, aber das kann man am Code nicht erkennen, ist, daß das Programm hier aussteigt

Delphi-Quellcode:
Ini.WriteString( 'VideoSaveDir', 'VideoSaveDir', VideoSaveDir);
Wenn aber VideoSaveDir ein String ist, dann gibt es keinen Grund dafür. Denn eine Ini wird erst in dieser Zeile angelegt.

jaenicke 26. Jun 2009 09:51

Re: IniFile wird nicht erstellt!
 
So etwas würde ich eher in OnCloseQuery ausführen statt in OnClose.

Davon abgesehen: Der Code ist soweit funktionsfähig, auch wenn das Free wie schon gesagt wurde ins finally gehört.

Da Delphi ja die Exe in dem Ordner erstellen konnte, die Rechte also kein Problem sind, bleibt nur:
Zitat:

Zitat von mirage228
und setze einen Haltepunkt auf die FormClose Routine (wird sie überhaupt aufgerufen?)

Kann es sein, dass die Prozedur im Objektinspektor gar nicht bei OnClose eingetragen ist?

Andere Möglichkeit: Das Programm stürzt in OnCloseQuery ab oder wird via Halt oder so abgestürzt, dann wird OnClose natürlich nicht ausgeführt.

DeddyH 26. Jun 2009 09:56

Re: IniFile wird nicht erstellt!
 
Ein Breakpoint sollte hier Klarheit schaffen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:04 Uhr.
Seite 1 von 3  1 23      

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