AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ini Datei wird nicht erstellt...

Ein Thema von Codix32 · begonnen am 20. Feb 2014 · letzter Beitrag vom 21. Feb 2014
Antwort Antwort
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.929 Beiträge
 
Delphi 12 Athens
 
#1

AW: Ini Datei wird nicht erstellt...

  Alt 20. Feb 2014, 17:55
Hier habe ich zu den Schreibrechten auf den eigenen Ordner mal einen kleinen Artikel geschrieben:
http://www.entwickler-ecke.de/viewtopic.php?p=548600
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#2

AW: Ini Datei wird nicht erstellt...

  Alt 20. Feb 2014, 20:55
Hier habe ich zu den Schreibrechten auf den eigenen Ordner mal einen kleinen Artikel geschrieben:
http://www.entwickler-ecke.de/viewtopic.php?p=548600
Danke jaenicke,

die UAC habe ich ganz runtergefahren. Da gibt's nichts zu bestätigen.

Dann:

Delphi-Quellcode:
filename := extractfilepath(paramstr(0))+IniName + '.ini';
Label5.Caption:= filename;
Da wird dann der komplette Pfad angezeigt:
c:\users\XXXX\Dokuments\Borland Studio-Projekte\My_proggis\Raten-mit-IniFile\MyKreditInif.ini

Die Funktion 'GetSpecialFolder' habe ich mal so getestet:

 MessageDlg (GetSpecialFolder (CSIDL_APPDATA), mtInformation, [mbOK], 0); Da kriege ich den Pfad: C:\users\XXXX\Favorites

Und in der LeseIni:
Delphi-Quellcode:
procedure TForm1.leseIni(IniName:string);
var
  ini:TIniFile;
  filename: String;
begin
filename:=GetSpecialFolder(CSIDL_APPDATA)+'\'+Ininame+ '.ini';
Label5.Caption:=filename;
ini := TIniFile.Create(filename);
...
kriege ich den Pfad: C:\Users\XXXX\AppData\Roaming\MyKreditInif.ini
Aber die Variablen bleiben leer, es wird nichts eingelesen.
Also was mache ich da noch falsch?

Geändert von Codix32 (20. Feb 2014 um 21:21 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Ini Datei wird nicht erstellt...

  Alt 21. Feb 2014, 00:32
Ist zwar schon uralt und ich nutze inzwischen neuere Versionen, aber hier meine alten EasyIniAppExe, EasyIniAppDataExe und EasyRegAppExe. Zu gebrauchen für schnelles speichern. Nachteil, nichts für große Mengen und es gibt immer nur eine Ini pro Unit. Vorteil, man muss sich nicht um den Speicherort kümmern und allein durch den Tausch der Unit kann man entscheiden wo die Infos landen - in der Ini im Programmordner, in Appdata Ordner oder in der Registry.
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Ini Datei wird nicht erstellt...

  Alt 21. Feb 2014, 05:54
Weil du (angeblich) nach Favorites schreibst und von Data\Roaming\ liest?
Verwende eventl. $001A (= CSIDL_APPDATA) satt der unterschiedlichen CSIDL Konstanten?

BTW, es gibt auch TIniFile.ReadFloat und in der SysUtils StrToFloat, StrToFloatDef, TryStrToFloat ect.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Ini Datei wird nicht erstellt...

  Alt 21. Feb 2014, 12:54
Dann:

Delphi-Quellcode:
filename := extractfilepath(paramstr(0))+IniName + '.ini';
Label5.Caption:= filename;
Da wird dann der komplette Pfad angezeigt:
c:\users\XXXX\Dokuments\Borland Studio-Projekte\My_proggis\Raten-mit-IniFile\MyKreditInif.ini

Die Funktion 'GetSpecialFolder' habe ich mal so getestet:

 MessageDlg (GetSpecialFolder (CSIDL_APPDATA), mtInformation, [mbOK], 0); Da kriege ich den Pfad: C:\users\XXXX\Favorites

Und in der LeseIni:
Delphi-Quellcode:
procedure TForm1.leseIni(IniName:string);
var
  ini:TIniFile;
  filename: String;
begin
filename:=GetSpecialFolder(CSIDL_APPDATA)+'\'+Ininame+ '.ini';
Label5.Caption:=filename;
ini := TIniFile.Create(filename);
...
kriege ich den Pfad: C:\Users\XXXX\AppData\Roaming\MyKreditInif.ini
Aber die Variablen bleiben leer, es wird nichts eingelesen.
Also was mache ich da noch falsch?
Leider ist es mir beim ersten Mal nicht aufgefallen, Du solltest statt GetSpecialFolder
SHGetFolder oder einen seiner engen Verwandten nutzen, dann solltest Du auch vernünftige Ergebnisse bekommen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#6

AW: Ini Datei wird nicht erstellt...

  Alt 21. Feb 2014, 16:26
Sir Rufo,

das Lesen der Ini geht, wenn ich den Code direkt in die OnClick Ereignis Prozedur des Buttons schreibe.
Es könnte also wohl an dem String Parameter der 'leseIni(IniName:string)' liegen.

Das hier geht:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var
   ini:TIniFile;
   filename: String;
   ininame:String;
begin
   ininame:='MyKredInif';
   filename := extractfilepath(paramstr(0))+IniName+ '.ini';//'MyKredInif.ini';
   //filename:=GetSpecialFolder(CSIDL_APPDATA)+'\'+Ininame+ '.ini';
   Label1.Caption:=filename;
   ini := TIniFile.Create(filename);
 try
   Form1.Caption:=ini.ReadString('Sektion1', 'Name','');
   Gesamtkreditsum:=ini.ReadString('Sektion2', 'Gesamtkreditsumme',' ');
   Ratenhöhe:=ini.ReadString('Sektion2', 'Ratenhoehe', '');
   Ratenanzhl:=ini.ReadString('Sektion2', 'Ratenanzahl', '');
   Restsum:=ini.ReadString('Sektion3', 'Restsumme', '');
   Sonderrat:=ini.ReadString('Sektion3', 'Sonderrate','');
 finally
   ini.Free;
  // Variable ini wieder freigeben
end;
// leseIni('MyKreditInif');
   Label2.Caption:=Gesamtkreditsum;
end;
Das hier geht nicht:
Delphi-Quellcode:
Type
  TForm1 = class(TForm)
...
  public
    { Public-Deklarationen }
     procedure leseIni(IniName:string);
  end;

....
....

procedure TForm1.leseIni(IniName:string);
var
  ini:TIniFile;
  filename: String;
begin
 filename := extractfilepath(paramstr(0))+IniName+ '.ini';
 //filename:=GetSpecialFolder(CSIDL_APPDATA)+'\'+Ininame+ '.ini';
 Label1.Caption:=filename;
 ini := TIniFile.Create(filename);
 try
   Form1.Caption:=ini.ReadString('Sektion1', 'Name','');
   Gesamtkreditsum:=ini.ReadString('Sektion2', 'Gesamtkreditsumme',' ');
   Ratenhöhe:=ini.ReadString('Sektion2', 'Ratenhoehe', '');
   Ratenanzhl:=ini.ReadString('Sektion2', 'Ratenanzahl', '');
   Restsum:=ini.ReadString('Sektion3', 'Restsumme', '');
   Sonderrat:=ini.ReadString('Sektion3', 'Sonderrate','');
 finally
   ini.Free;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject)
begin
...
   leseIni('MyKreditInif');
   Label2.Caption:=Gesamtkreditsum;
end;
Merkwürdiges Verhalten. Übrigens funktioniert die 'LeseIni(ininame:string)' auch auf Windows XP nicht.

Geändert von Codix32 (21. Feb 2014 um 16:30 Uhr)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Ini Datei wird nicht erstellt...

  Alt 21. Feb 2014, 16:39
Wie oft hast du denn Form1?

Geändert von Bjoerk (21. Feb 2014 um 16:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.683 Beiträge
 
Delphi 5 Professional
 
#8

AW: Ini Datei wird nicht erstellt...

  Alt 21. Feb 2014, 16:40
Code:
ininame:='MyKredInif';
Code:
leseIni('MyKreditInif');
Fällt dir was auf?

Tip: Mit Konstanten wär das nicht passiert.

MfG Dalai
  Mit Zitat antworten Zitat
Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#9

AW: Ini Datei wird nicht erstellt...

  Alt 21. Feb 2014, 16:53
Code:
ininame:='MyKredInif';
Code:
leseIni('MyKreditInif');
Fällt dir was auf?

Tip: Mit Konstanten wär das nicht passiert.

MfG Dalai
Ok, das ist so ungefähr der peinlichste Fehler, der mir je passiert ist. Ich habe den Dateinamen falsch geschrieben.

Aber ein Trost dabei ist, dass ich was über UAC gelernt.
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
730 Beiträge
 
Delphi 12 Athens
 
#10

AW: Ini Datei wird nicht erstellt...

  Alt 21. Feb 2014, 17:29
Das war ja auch schon meine Vermutung in #28
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz