Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Ini Datei wird nicht erstellt... (https://www.delphipraxis.net/179212-ini-datei-wird-nicht-erstellt.html)

Sir Rufo 20. Feb 2014 17:21

AW: Ini Datei wird nicht erstellt...
 
Zitat:

und was nun bedeutet 'CSIDL_APPDATA'
Frag doch mal Tante google ... :roll:

Codix32 20. Feb 2014 17:26

AW: Ini Datei wird nicht erstellt...
 
Zitat:

Zitat von EWeiss (Beitrag 1248842)
UAC eingeschaltet?
Mach mal aus und teste noch mal dann verstehst du vielleicht was ich meine ;)

gruss

Was meinst Du damit?

EWeiss 20. Feb 2014 17:28

AW: Ini Datei wird nicht erstellt...
 
Zitat:

Zitat von Codix32 (Beitrag 1248845)
Zitat:

Zitat von EWeiss (Beitrag 1248842)
UAC eingeschaltet?
Mach mal aus und teste noch mal dann verstehst du vielleicht was ich meine ;)

gruss

Was meinst Du damit?

Sorry wenn du das nicht weist kann ich dir nicht helfen das sind grundlegende Computer Kenntnisse.
Na Ok.. Hier

Dateien mit schreib und lese zugriffe sollten in einem Ordner abgelegt werden
Wo die Zugriffsrechte auch vorhanden sind.

Zitat:

Hm, also der Schreibzugriff hat ja funktioniert, aber das Auslesen geht nicht
Nur weil es Mal funktioniert hat muss es noch lange nicht richtig sein ;)


gruss

jaenicke 20. Feb 2014 17:55

AW: Ini Datei wird nicht erstellt...
 
Hier habe ich zu den Schreibrechten auf den eigenen Ordner mal einen kleinen Artikel geschrieben:
http://www.entwickler-ecke.de/viewtopic.php?p=548600

Codix32 20. Feb 2014 20:55

AW: Ini Datei wird nicht erstellt...
 
Zitat:

Zitat von jaenicke (Beitrag 1248853)
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:

Delphi-Quellcode:
 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?

Popov 21. Feb 2014 00:32

AW: Ini Datei wird nicht erstellt...
 
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.

Bjoerk 21. Feb 2014 05:54

AW: Ini Datei wird nicht erstellt...
 
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.

bcvs 21. Feb 2014 07:16

AW: Ini Datei wird nicht erstellt...
 
Zitat:

Zitat von EWeiss (Beitrag 1248834)
Warum wird die INI nicht im richtigen Pfad angelegt?
In dem auch schreib und generelle Zugriffsrechte vorhanden sind?

Das ist sicherlich nicht Paramstr(0).

In diesem Fall sind auf Paramstr(0) anscheinend doch ausreichen Rechte vorhanden, denn:

Zitat:

Zitat von Codix32 (Beitrag 1248836)
Die Ini Datei liegt im selben Ordner wie die dpr, pas, ectra.

Der Fehler muss also woanders liegen. Vergiss erstmal das CSIDL_APPDATA und UAC. Schau dir mal im Debugger an, was wo genau eingelesen wird.
Ist der Übergebene Dateiname bei erzeugeIni(IniName:string); und leseIni(IniName:string); identisch (Tipfehler?)

Wenn das Programm später mal unter C:\Programme... installiert werden soll, musst du natürlich unbedingt den Speicherort der Ini nach CSIDL_APPDATA legen.

EWeiss 21. Feb 2014 07:58

AW: Ini Datei wird nicht erstellt...
 
Zitat:

@bcvs In diesem Fall sind auf Paramstr(0) anscheinend doch ausreichen Rechte vorhanden, denn:
logisch!
Nur das war niemanden vorher bekannt.

Zitat:

@bcvs Vergiss erstmal das CSIDL_APPDATA
Du vergibst ja richtig gute Ratschläge..
Aber sorry wenn man es macht dann direkt richtig von Anfang an.
Denn er wird mit Sicherheit seine Programme nicht immer im "Borland Studio-Projekte" Pfad ablegen.
Dein Ratschlag ist also nicht zu empfehlen!

gruss

Popov 21. Feb 2014 08:19

AW: Ini Datei wird nicht erstellt...
 
Das Problem ist mit drei kleinen Änderungen für immer lösbar:
Delphi-Quellcode:
uses
  Registry; //<<<<<< IniFiles gegen Registry tauschen

procedure TForm1.erzeugeIni(IniName:string);
var
  ini: TRegIniFile; //<<<<<< TIniFile gegen TRegIniFile tauschen
begin
  ini := TRegIniFile.Create('Software\' + IniName); //<<<<<< TIniFile gegen TRegIniFile tauschen




  // INI-Datei erstellen (falls nicht vorhanden) und initialisieren
  try
  ini.WriteString('Sektion1', 'Eigenschaft1', 'Dein String');
  // String in Sektion1 unter Eigenschaft1 abspeichern
  ini.WriteInteger('Sektion2', 'Eigenschaft1', 1234);
  // Integerwert in Sektion2 unter Eigenschaft1 abspeichern
  ini.WriteBool('Sektion2', 'Eigenschaft2', True);
  // Wert vom Typ Boolean abspeichern
  finally
  ini.Free;
  // Variable ini wieder freigeben
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  erzeugeIni('MyKredinif');
end;
Delphi bietet für Ini auf Registry Umsteiger eine einfache Lösung. Einzig die Unit und Klasse wechseln, der Rest kann bleiben. Das Ergebnis landet in der Registry unter HKCU\Software\MyKredinif\...


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr.
Seite 3 von 5     123 45      

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