Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   ini files funktionieren nicht (https://www.delphipraxis.net/89535-ini-files-funktionieren-nicht.html)

maddins 1. Apr 2007 23:52


ini files funktionieren nicht
 
hallo,

ich muss bei meinem programm daten aus einer ini-datei lesen. leider funktioniert das nicht so, wie ichs mir vorgestellt hab. genauer gesagt: es passiert GARNICHTS.

eine fertige ini datei mit werten hatte ich schon und hab dazu schnell noch ne procedure geschrieben, die dann aber keine testwerte ausgespuckt hat. auch eine überprüfung mit sectionexists(..) brachte vorerst keine positiven werte. also hab ich mir gedacht, lass ich mir die datei einfach vom programm schreiben. dazu folgende procedure:

Code:
procedure tform1.writeini;
 var ini:Tinifile;
begin
  ini:=TIniFile.Create('cfg.ini') ;

  ini.WriteString('Benutzer','Name1','Mustermann');
  ini.WriteString('Benutzer','Name2','Meier');
  ini.Free;

end;
in den uses hab ich IniFiles drin...

zu meinem erstaunen musste ich feststellen, das auch hier nichts passierte.

was hab ich falsch gemcaht? hab ich was vergessen?

danke für die hilfe

martin

blablab 2. Apr 2007 00:12

Re: ini files funktionieren nicht
 
Wenn du den Dateinamen so angibst, dann speichert er die Ini-Datei ins Windowsverzeichnis. Vielleicht hast du sie deshalb nicht entdeckt...?

bitsetter 2. Apr 2007 00:27

Re: ini files funktionieren nicht
 
Hi,

wenn du die INI im Verzeichnis deines Programms erstellen möchtest, und du Schreibrechte besitzt dann kannst du es so machen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var ini:Tinifile;
begin
  ini:=TIniFile.Create(ExtractFilepath(paramstr(0))+ 'cfg.ini') ;
  ini.WriteString('Benutzer','Name1','Mustermann');
  ini.WriteString('Benutzer','Name2','Meier');
  ini.Free;
end;
Bei mir ging es dann.

blablab 2. Apr 2007 00:36

Re: ini files funktionieren nicht
 
Oder noch einfacher:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var ini:Tinifile;
begin
  ini:=TIniFile.Create('.\cfg.ini') ;
  ini.WriteString('Benutzer','Name1','Mustermann');
  ini.WriteString('Benutzer','Name2','Meier');
  ini.Free;
end;

cruiser 2. Apr 2007 01:26

Re: ini files funktionieren nicht
 
'.\cfg.ini' ist nicht empfehlenswert. Dann speichert er ins aktuelle Ausführungsverzeichnis, was nicht zwingend das Verzeichnis der exe ist

mkinzler 2. Apr 2007 06:31

Re: ini files funktionieren nicht
 
Besser ist es aber die ini-Datei ins Profilverzeichnis(APPDATA) des Benutzers oder unter "Alle Benutzer" zu speichern

maddins 2. Apr 2007 07:21

Re: ini files funktionieren nicht
 
boah verdammt... wer hat sich denn sowas ausgedacht!
wenn ich als exe ne datei erstellen würde, bei der kein pfad oder ähnliches davor steht, dann pack ich mir die doch ins das verzeichnis, wo ich selber bin...

ich weiß auch nicht, warum das immer alles so umnständlich sein muss.

jedenfalls danke an alle für die schnelle hilfe, funktioniert bestens.

martin

Blackheart 2. Apr 2007 08:29

Re: ini files funktionieren nicht
 
Normalerweise funktioniert das mit ParamStr, liefert Dir das Verzeichnis deiner Exe - (unter Vista wohl nicht mehr wegen den Schreibrechten).
Delphi-Quellcode:
Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'cfg.ini');

hanspeter 2. Apr 2007 08:34

Re: ini files funktionieren nicht
 
Zitat:

Zitat von Blackheart
Normalerweise funktioniert das mit ParamStr, liefert Dir das Verzeichnis deiner Exe - (unter Vista wohl nicht mehr wegen den Schreibrechten).
Delphi-Quellcode:
Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'cfg.ini');

Doch funktioniert unter Vista aber ganz verrückt.
Es wird in User\Applicationsdatata\... oder so ähnlich ein virtuelles Verzeichnis angelegt und dort steht dann die Inifile.


Gruß
Peter

Blackheart 2. Apr 2007 08:42

Re: ini files funktionieren nicht
 
@hanspeterAuch mit ParamStr oder muss der komplette Pfad User\Applicationsdatata\... bla angeben werden ?

Luckie 2. Apr 2007 09:07

Re: ini files funktionieren nicht
 
Zitat:

Zitat von Blackheart
Normalerweise funktioniert das mit ParamStr, liefert Dir das Verzeichnis deiner Exe - (unter Vista wohl nicht mehr wegen den Schreibrechten).

Auch unter Vista liefert dir ParamStr das Anwendungsverzeichnis, wäre schlimm, wenn es nicht so wäre. Virtualisiert wird nur, wenn in Verzeichnisse geschrieben werden soll, wo keine entsprechenden Rechte existieren.

Blackheart 2. Apr 2007 09:16

Re: ini files funktionieren nicht
 
Danke Luckie hätte ja sein können, man weiss ja Nie. :wink:

hanspeter 2. Apr 2007 14:04

Re: ini files funktionieren nicht
 
Zitat:

Zitat von Blackheart
@hanspeterAuch mit ParamStr oder muss der komplette Pfad User\Applicationsdatata\... bla angeben werden ?

Weis ich doch.
Und wenn der Pfad dann keine Schreibrechte hat (oder auch manchmal so je nach Vistalaune?) dann wird der Pfad virtualisiert.
Ich habe Program Files\EigeneAnwendung freigegeben.
Mir ist es mehrfach passiert, dass beim Zugriff mit ParmStr dann das Verzeichnis Programme\EigeneAnwendung angelegt und dort hin geschrieben wird.
Es scheint so, das unter Vista eine Aufteilung in Programmpfad und Applicationsdaten unter User zwingend notwendig ist, wenn man repoduzierbare Ergebnisse will.
Ich fordere das Applicationsverzeichnis bei Programmstart über die API an und habe damit das Problem gelöst.
Nachteil beim Entfernen des Programmes müssen 2 oder mehr Verzeichnisse gelöscht werden.

Gruß
Peter

Glühwürmchen 2. Apr 2007 15:48

Re: ini files funktionieren nicht
 
Ist ja alles richtig was ihr da schreibt, ABER:

Zitat:

ich muss bei meinem programm daten aus einer ini-datei lesen. leider funktioniert das nicht so, wie ichs mir vorgestellt hab. genauer gesagt: es passiert GARNICHTS.

eine fertige ini datei mit werten hatte ich schon und hab dazu schnell noch ne procedure geschrieben, die dann aber keine testwerte ausgespuckt hat. auch eine überprüfung mit sectionexists(..) brachte vorerst keine positiven werte. also hab ich mir gedacht, lass ich mir die datei einfach vom programm schreiben. dazu folgende procedure:

Delphi-Quellcode:
procedure tform1.writeini;
var ini:Tinifile;
begin
  ini:=TIniFile.Create('cfg.ini') ;

  ini.WriteString('Benutzer','Name1','Mustermann');
  ini.WriteString('Benutzer','Name2','Meier');
  ini.Free;

end;

... die korrekte Antwort ist doch eine andere: :)
Er will LESEN und schreibt "WriteString". Damit kann man aber nicht lesen......

:)

Hawkeye219 2. Apr 2007 15:58

Re: ini files funktionieren nicht
 
Hallo Glühwürmchen,

"lesen" ist ein gutes Stichwort:

Zitat:

Zitat von maddins
[...]also hab ich mir gedacht, lass ich mir die datei einfach vom programm schreiben. dazu folgende procedure:[...]

Alles klar?

Gruß Hawkeye

Glühwürmchen 2. Apr 2007 16:11

Re: ini files funktionieren nicht
 
Als mein Beitrag dann da stand, hab ich ihn mir noch mal durchgeLESEN und erkannte, mit leicht rötlichem Gesicht:

Sie hatten ja doch recht.....

ok.

DP-Maintenance 6. Apr 2007 14:12

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Es geht um Delphi.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:47 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