IniDatei wird nicht erzeugt

Antworten
Cleopatra
Beiträge: 11
Registriert: Sa 22. Nov 2014, 07:01

IniDatei wird nicht erzeugt

Beitrag von Cleopatra »

Hallo,

ich habe ein Problem damit, die Ini-Datei zu erstellen. Wenn ich den Pfad explizit angebe, funktioniert es. Aber wenn ich den Pfad aus Variablen zusammensetze, funktioniert es nicht. Da mache ich wohl irgendetwas falsch. Also wenn ich beispielsweise den Pfad zur Ini so ermittel, wird die Inidatei nicht erzeugt.

Code: Alles auswählen

procedure TFHaupt.FormCreate(Sender: TObject);
var
  Ini : TIniFile;
begin
  Anwendungsdatenordner  := GetAppConfigDir(false);
  If Not DirectoryExists(Anwendungsdatenordner) then
    CreateDir (Anwendungsdatenordner);
  Programmname := 'Cryptorechner';
  IniDatei := Anwendungsdatenordner + Programmname + '.ini';
  Ini := TIniFile.Create(IniDatei);
  FHaupt.Top := Ini.ReadInteger('Position', 'Oben', 10);
  FHaupt.Left := Ini.ReadInteger('Links', 'Links', 10);
  Ini.Free;
  Label5.Caption:= IniDatei;
end;
 


Wenn ich die IniDatei dagegen mit C:\Users\User\AppData\Local\CryptoRechner\Cryptorechner.ini aufrufe, erhalte ich das gewünschte Ergebnis. Ich wäre Euch sehr dankbar, wenn mir jemand sagen könnte, wo mein Fehler liegt.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: IniDatei wird nicht erzeugt

Beitrag von mse »

Was steht denn in "IniDatei" beim Aufruf von "TIniFile.Create()" drin? -> Breakpoint auf diese Zeile setzen und im watch-Fenster den Inhalt von "IniDatei" ausgeben lassen.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: IniDatei wird nicht erzeugt

Beitrag von Michl »

Ich habs mal bei mir ausprobiert unter Win7 Laz1.2.6 FPC 2.6.4 und Laz1.3 und FPC 2.7.1 geht deine Procedure bei mir problemlos (allerdings habe ich Programmname, Anwendungsdatenordner, IniDatei als String definiert, k.A. wie Du?):

Code: Alles auswählen

procedure TFHaupt.SpeichernClick(Sender: TObject);
var
  Ini : TIniFile;
  Programmname, Anwendungsdatenordner, IniDatei: String;
begin
  Anwendungsdatenordner  := GetAppConfigDir(false);
  If Not DirectoryExists(Anwendungsdatenordner) then
    CreateDir (Anwendungsdatenordner);
  Programmname := 'Cryptorechner';
  IniDatei := Anwendungsdatenordner + Programmname + '.ini';
  Ini := TIniFile.Create(IniDatei);
  Ini.WriteInteger('Position', 'Oben', FHaupt.Top);
  Ini.WriteInteger('Links', 'Links', FHaupt.Left);
  Ini.Free;
  Label5.Caption:= IniDatei;
end;
 
procedure TFHaupt.LadenClick(Sender: TObject);
var
  Ini : TIniFile;
  Programmname, Anwendungsdatenordner, IniDatei: String;
begin
  Anwendungsdatenordner  := GetAppConfigDir(false);
  If Not DirectoryExists(Anwendungsdatenordner) then
    CreateDir (Anwendungsdatenordner);
  Programmname := 'Cryptorechner';
  IniDatei := Anwendungsdatenordner + Programmname + '.ini';
  Ini := TIniFile.Create(IniDatei);
  FHaupt.Top := Ini.ReadInteger('Position', 'Oben', 10);
  FHaupt.Left := Ini.ReadInteger('Links', 'Links', 10);
  Ini.Free;
  Label5.Caption:= IniDatei;
end;

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Cleopatra
Beiträge: 11
Registriert: Sa 22. Nov 2014, 07:01

Re: IniDatei wird nicht erzeugt

Beitrag von Cleopatra »

Vielen Dank für die Antworten.

Jetzt weiß ich schon etwas mehr. Wenn ich den oben genannten Quellcode durch einem Button ausführe, wird die Ini-Datei erzeugt, aber wenn ich den Code in das Oncreate-Ereignis packe, nicht. Die Variablen Anwendungsdatenordner, Programmname, IniDatei habe ich als String bei den "private declarations" definiert.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: IniDatei wird nicht erzeugt

Beitrag von pluto »

Pack das mal ins onShow Event und sorge dafür das es nur einmal ausgeführt wird.

Das könnte ein Problem mit der Reihenfolge der Events zusammenhängen. OnCreate wird sehr früh ausgeführt.
MFG
Michael Springwald

mark332
Beiträge: 202
Registriert: Do 16. Mai 2013, 13:49
OS, Lazarus, FPC: Windows 10 H.P. (x64) / Ubuntu 14.04.X
CPU-Target: AMD Octacore 4.0GHz

Re: IniDatei wird nicht erzeugt

Beitrag von mark332 »

Versuch mal, nach dem Schreiben und vor Freigeben, der INI-Datei:

Code: Alles auswählen

ini.UpdateFile;



ebenfalls würde ich zum Debugging mir "iniDatei" über ShowMessage o.ä. ausgeben lassen, um den Pfad mit dem absoluten Pfad vergleichen zu können,
falls dieser nicht stimmt, sieht man das dann sehr leicht ;)

MfG

mark332
------------------------------------------------------------
Warum gibt es hier eigentlich kein [SPOILER][/SPOILER] ?

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: IniDatei wird nicht erzeugt

Beitrag von mse »

mark332 hat geschrieben:ebenfalls würde ich zum Debugging mir "iniDatei" über ShowMessage o.ä. ausgeben lassen, um den Pfad mit dem absoluten Pfad vergleichen zu können,
falls dieser nicht stimmt, sieht man das dann sehr leicht ;)

Arbeitet ihr denn nie mit dem Debugger?

mark332
Beiträge: 202
Registriert: Do 16. Mai 2013, 13:49
OS, Lazarus, FPC: Windows 10 H.P. (x64) / Ubuntu 14.04.X
CPU-Target: AMD Octacore 4.0GHz

Re: IniDatei wird nicht erzeugt

Beitrag von mark332 »

mse hat geschrieben:
mark332 hat geschrieben:ebenfalls würde ich zum Debugging mir "iniDatei" über ShowMessage o.ä. ausgeben lassen, um den Pfad mit dem absoluten Pfad vergleichen zu können,
falls dieser nicht stimmt, sieht man das dann sehr leicht ;)

Arbeitet ihr denn nie mit dem Debugger?


Schon, aber ich glaube ich zumindest mache zb bei der Werteüberwachung fehler, wenn,da häufig nil rauskommt xD
------------------------------------------------------------
Warum gibt es hier eigentlich kein [SPOILER][/SPOILER] ?

wbeppler
Beiträge: 131
Registriert: So 20. Jul 2014, 10:27
OS, Lazarus, FPC: kubuntu, raspbian, laz 1.2 / 0.9 microcontroller
CPU-Target: 8-64 bit
Wohnort: bodensee
Kontaktdaten:

Re: IniDatei wird nicht erzeugt

Beitrag von wbeppler »

ja, so ein debugger hat was...

... aber ein tip von mir, nicht in ne messagebox was man beobachten will, sondern ins clipboard, dann kannst ohne tipfehler weiter verwendet werden :-)
siehe:
http://lazplanet.blogspot.de/2013/05/ho ... -your.html

bei mir sind so fehler beim strings mit pfaden zusammenzustellen oft ...//... anstelle .../..... oder ne leerstelle vergessen abzuschneiden oder fahelende rechte im entsprechenden ordner, soll ja unter windoof immer krasser werden, oder leerstelle im pfad ohne mit " eingegrenzt zu haben......

viel spass, bitte info was es war :-)

Antworten