Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   MyIniFile := Tinifile.Create( 'MyIniFile.ini' ); (https://www.delphipraxis.net/99305-myinifile-%3D-tinifile-create-myinifile-ini-%3B.html)

taktaky 10. Sep 2007 13:29


MyIniFile := Tinifile.Create( 'MyIniFile.ini' );
 
Hallo

es passiert nichts, wenn ich den Pfad als relativ eingebe!!!
Ich meine der Pfad von MyIniFile.ini

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var MyIniFile : TInifile;
begin
 MyIniFile := Tinifile.Create( 'C:\test\MyIniFile.ini' );
aber so geht nicht :
//MyIniFile := Tinifile.Create( 'MyIniFile.ini' );


 MyIniFile.WriteString('Section1','edit1.text', 'hallo');
 MyIniFile.WriteString('Section1','edit2.text', 'Guten Tag');
 MyIniFile.WriteString('Section1','edit3.text', 'http://yahoo.de');

 //MyIniFile.WriteString('LastUsedBitmap', 'LUBitmap', bitmap);
 MyIniFile.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
var MyIniFile : TInifile;

begin
MyIniFile := Tinifile.Create( 'MyIniFile.ini' );
Edit1.Text := MyIniFile.ReadString('Section1','edit1.text','0');
Form1.Caption:= MyIniFile.ReadString('Section1','edit2.text','0');

Webbrowser1.Navigate(MyIniFile.ReadString('Section1','edit3.text','0'));

end;
wenn ich den Pfad als absolut eingebe, dann funktioniert, als relativ nicht !!!

Matze 10. Sep 2007 13:32

Re: MyIniFile := Tinifile.Create( 'MyIniFile.ini' );
 
Du solltest immer absolute Pfade nutzen, denn das Arbeitsverzeichnis kann sich ändern und dann ist nicht gewiss, wo du die Datei abspeicherst:

Delphi-Quellcode:
ExtractFilePath(ParamStr(0)) + 'MyIniFile.ini'
Und ein Ausrufezeichen reicht, zumal hier auch je ein normaler Punkt genügen würde. :warn:

DP-Maintenance 10. Sep 2007 13:33

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Windows 9x / ME / 2000 / XP / 2003 / Vista" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage

Luckie 10. Sep 2007 13:34

Re: MyIniFile := Tinifile.Create( 'MyIniFile.ini' );
 
Hilfe lesen:
Zitat:

inweis

Normalerweise werden INI-Dateien im Verzeichnis \WINDOWS gespeichert. Wenn sich die INI-Datei an einem anderen Ort befindet, geben Sie in FileName den vollständigen Pfadnamen an.
Hinzukommt, welches Betriebssystem udn welche Benutzerrechte sind vorhanden?

pstruh 10. Sep 2007 13:38

Re: MyIniFile := Tinifile.Create( 'MyIniFile.ini' );
 
Also ich verstehe unter einem relativen Pfad auch etwas anderes, z.B. "..\data\name.ext". Die Angabe "name.ext" bedeutet, das die Datei im Stammverzeichnis des gerade aktuellen Laufwerks (welches auch immer das ist) gesucht wird.

s-off 10. Sep 2007 13:39

Re: MyIniFile := Tinifile.Create( 'MyIniFile.ini' );
 
Hi,

das MSDN sagt das

Edit: Luckie hat's bereits gesagt - trotzdem das Statement dazu von MS (die Funktion 'WritePrivateProfileString' aus der Kernel32 ist die, welche die Ini-Datei beim Update speichert)

taktaky 10. Sep 2007 14:42

Re: MyIniFile := Tinifile.Create( 'MyIniFile.ini' );
 
Hallo zusammen,

es funktioniert jetzt mit dem relativen Pfad

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var MyIniFile : TInifile;
begin
MyIniFile := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'MyIniFile3.ini');

MyIniFile.WriteString('Section1','edit1.text', '22222222222222');
MyIniFile.WriteString('Section1','edit2.text', '33333333333333');
MyIniFile.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
var MyIniFile : TInifile;
begin
MyIniFile := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'MyIniFile3.ini');
Edit1.Text := MyIniFile.ReadString('Section1','edit1.text','nicht gefunden');
Edit2.Text := MyIniFile.ReadString('Section1','edit2.text','nicht gefunden');

 MyIniFile.Free;
end;
Delphi-Quellcode:
  _____        ___   __   _   _   _    _____ 
|  _  \     /   | |  \ | | | | / /  | ____| 
| | | |    / /| | |   \| | | |/ /   | |__   
| | | |   / / | | | |\   | | |\ \   |  __| 
| |_| |  / /  | | | | \  | | | \ \  | |___ 
|_____/ /_/   |_| |_|  \_| |_|  \_\ |_____|

Luckie 10. Sep 2007 14:44

Re: MyIniFile := Tinifile.Create( 'MyIniFile.ini' );
 
Zitat:

Zitat von taktaky
es funktioniert jetzt mit dem relativen Pfad

Absolute Pfade, das sind absolute Pfade.

Klaus01 10. Sep 2007 14:44

Re: MyIniFile := Tinifile.Create( 'MyIniFile.ini' );
 
Zitat:

Zitat von taktaky
Hallo zusammen,

es funktioniert jetzt mit dem relativen Pfad

Nur zur Info:

ExtractFilePath liefert einen absoluten Pfad und keinen relativen.

Grüße
Klaus

pstruh 10. Sep 2007 14:57

Re: MyIniFile := Tinifile.Create( 'MyIniFile.ini' );
 
Hallo Zusammen,
vielleicht wäre eine kurze Erklärung, was RELATIVE Pfadangaben sind, angebracht. Ich zitiere aus WIKIPEDIA:

"... Pfadangaben können absolut sein ..., d. h. sie orientieren sich an der Wurzel des Dateisystems, oder relativ, d. h. sie gehen von einer bestimmten Position in der Baumstruktur des Dateisystems zu einer anderen, z. B. ../geschaeftsbriefe/, lies "gehe eins hoch und dann in geschaeftsbriefe"

Das müßte doch verständlich sein!
Gruß

taktaky 10. Sep 2007 16:15

Re: MyIniFile := Tinifile.Create( 'MyIniFile.ini' );
 
Zitat:

Zitat von pstruh
...
Das müßte doch verständlich sein!
Gruß

Delphi akzeptiert den relativen Pfad koemischerweise nicht :mrgreen:

taktaky 10. Sep 2007 16:19

Re: MyIniFile := Tinifile.Create( 'MyIniFile.ini' );
 
Zitat:

Zitat von Klaus01

Nur zur Info:

ExtractFilePath liefert einen absoluten Pfad und keinen relativen.

Grüße
Klaus

wieso?
auf jeden Fall soll das Programm auf jeden Rechner problemlos seine Dateien von .ini holen
oder nicht?

Matze 10. Sep 2007 16:24

Re: MyIniFile := Tinifile.Create( 'MyIniFile.ini' );
 
Zitat:

Zitat von taktaky
wieso?

Lass dir doch mal den zurückgelieferten Pfad ausgeben. Dieser hat die Form C:\Programme\...\ und ist somit absolut.

Zitat:

Zitat von taktaky
auf jeden Fall soll das Programm auf jeden Rechner problemlos seine Dateien von .ini holen
oder nicht?

Im Programmverzeichnis hast du nur als Administrator standardmäßig Schreibrechte. Daher sollte man Einstellungsdateien und ähnliches im Anwendungsverzeichnis (C:\Dokumente und Einstellungen\<user>\Anwendugsdaten\<Programmname> \) ablegen, wie hier bereits mehrmals angesprochen wurde. Siehe hierzu: Wie bekomme ich den Ordner: C:\Dokumente und Einstellungen...

s-off 10. Sep 2007 16:26

Re: MyIniFile := Tinifile.Create( 'MyIniFile.ini' );
 
Ich glaube, Matze hat Dich bereits darauf hingewiesen, dass Du doch bitte den Edit-Button benutzen, und nicht zwei Beiträge hintereinander schreiben sollst.

Zum Thema:
Lies Dir den von pstruh verlinkten Artikel durch, dann weisst Du, wo genau der Unterschied zwischen einem relativen und einem absoluten Pfad liegt.


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