Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Fehler: "In .....\SetUp.Ini kann nicht geschrieben werden" (https://www.delphipraxis.net/118670-fehler-%5Csetup-ini-kann-nicht-geschrieben-werden.html)

gfjs 12. Aug 2008 16:42


Fehler: "In .....\SetUp.Ini kann nicht geschrieben werd
 
Hallo.
Delphi-Quellcode:
procedure WriteProgramsToIniFile;
var
  i,j : integer;
  ini : TIniFile;
begin
  i := FSetUp.LBoxSetUp.Count;
  for j := 0 to i - 1 do
  begin
    ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + IFN);
if FileExists(ExtractFilePath(Application.ExeName) + IFN) then
ShowMessage('OK') else ShowMessage('MIST');

    try
      ini.WriteString('Programme', FSetUp.LBoxSetUp.Items[j], '');
      ShowMessage(IntToStr(j));
    finally
      ini.Free;
    end;
  end;
end;
Hier passiert folgendes:

Wenn das Programm erstmals gestartet wird - d.h. noch keine Ini-Datei vorhanden ist - wird die Datei erzeugt, Showmessage zeigt "OK" und dann bricht das Programm mit der o.a. Fehlermeldung ab. Die Datei wurde zwar erstellt, ist jedoch leer.

Wird das Programm dann noch einmal gestartet, werden die Einträge in die Datei geschrieben und alles ist gut.

Hat dafür jemand eine Erklärung?

Gruß Jürgen

[edit=Sharky]Delphi-Tags eingefügt. Mfg, Sharky[/edit]

Benedikt 12. Aug 2008 16:56

Re: Fehler: "In .....\SetUp.Ini kann nicht geschrieben
 
Hi,

ist zwar nicht konkret zu dem Problem - aber dass kann ich auch grad nicht nachvollziehen - aber was anderes:
Wieso holst du dir in jedem Schleifendurchlauf ein neues Ini-Handle?

Ich würd dass da rausziehen, etwas so:

Delphi-Quellcode:
i := FSetUp.LBoxSetUp.Count;
ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + IFN);
try
    for j := 0 to i - 1 do
    begin
        ini.WriteString('Programme', FSetUp.LBoxSetUp.Items[j], '');
        ShowMessage(IntToStr(j));
    end;
finally
    ini.Free;
end;
Btw würden deinem Code Delphi-Tags auch nicht schaden :mrgreen:

Ansonsten zu deiner Anzeige ob die Datei existiert oder nicht - die ist ja irgendwo ein bisschen sinnfrei, vor allem ist es beim ersten mal in der Schleife eigentlich nie so, dass die Datei da sein kann, wenn sie vorher nicht existiert hat, da allein ein TIniFile.Create noch keine Datei erzeugt.
Also bei mir funktioniert dass so wie ich das gepostet hab einwandfrei - ein Problem sollte dir aber Gewiss sein (es sei denn, du beabsichtigst das) - es darf für jede Sektion jeden Key nur einmal geben, d.h. hast du in mehrere gleichnamige Items, überschreiben die sich in der Ini.

MfG Benedikt

gfjs 12. Aug 2008 17:13

Re: Fehler: "In .....\SetUp.Ini kann nicht geschrieben
 
@ Benedikt

Vielen Dank für Deine Hinweise - und sorry für die vergessenen Delphi-Tags.

Das mit dem wiederholten Ini-Handle habe ich kapiert. Die ShowMessages sind nur zum Ausprobieren (Debugging des kleinen Mannes!)

Zitat:

Zitat von Benedikt
es darf für jede Sektion jeden Key nur einmal geben, d.h. hast du in mehrere gleichnamige Items, überschreiben die sich in der Ini.

Die Schlüssel werden aus der Listbox ausgelesen und sind alle verschieden. Die Werte ('') werden erst später nach Eingabe durch den Anwender in die Datei geschrieben.

Inzwischen klappt's auch bei mir: Der Fehler war wohl, dass ich zu einem früheren Zeitpunkt die Ini-Datei schon erzeugt hatte.

Gruß Jürgen


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:30 Uhr.

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