Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi inifile beschreiben (https://www.delphipraxis.net/156156-inifile-beschreiben.html)

HolgerCW 22. Nov 2010 11:31

Delphi-Version: 2006

inifile beschreiben
 
Hallo zusammen,

wie beschreibe ich ein inifile ?

Auslesen habe ich bisher so gemacht:

Delphi-Quellcode:
function MyGetInifileValue(myIniFile, mysection, myentry, mydefault:string):string;
var
 myIni:TInifile;
 strtemp:string;
 inipath:string;
begin

 inipath := ExtractFilePath(Application.ExeName);

 if Copy(inipath,Length(inipath),1) <> '\' then
  inipath := inipath +'\';

 myini := TInifile.Create(inipath+myIniFile+'.ini');
 strtemp := myini.ReadString(mysection,myentry,mydefault);

 myGetInifileValue := strtemp;
 myini.Free;

end;
Gruss

Holger

FBrust 22. Nov 2010 11:39

AW: inifile beschreiben
 
Hallo,

zu "ReadString" gibt es z. B. auch das Pendant "WriteString".


Gruß
Frank

HolgerCW 22. Nov 2010 11:42

AW: inifile beschreiben
 
Bin ich denn eben so daneben gewesen. Hatte mich schon gewundert das mir das nciht angeboten wurde.

Naja. Klappt nun.

Danke für den Klapps auf den Hinterkopf.

Gruss

Holger

Matze 22. Nov 2010 11:45

AW: inifile beschreiben
 
Und wenn du schon dabei bist, mach es gleich ordentlich. Sollte das Lesen/Schreiben fehlschlagen, wird die Ini-Datei nicht mehr freigegeben. Daher gibt es die sog. Ressourcenschutzblöcke:
Delphi-Quellcode:
myini := TInifile.Create(inipath + myIniFile + '.ini');
try
  strtemp := myini.ReadString(mysection, myentry, mydefault);
  myGetInifileValue := strtemp;
finally
  myini.Free;
  // oder FreeAndNil(myini);
end;

Sir Rufo 22. Nov 2010 11:56

AW: inifile beschreiben
 
Delphi-Quellcode:
function MyGetInifileValue(myIniFile, mysection, myentry, mydefault:string):string;
var
 myIni:TInifile;
 strtemp:string;
 inipath:string;
begin

 inipath := ExtractFilePath(Application.ExeName);
  // Das kann man sich komplett schenken, denn ExtractFilePath liefert den Pfad
  // und der ist immer mit abschliessendem PathDelimiter definiert
  // ExtractFilePath( Application.ExeName ) => '<Verzeichnisse>\'
  // ExtractFileDir( Application.ExeName ) => '<Verzeichnisse>'
 if Copy(inipath,Length(inipath),1) <> '\' then
  inipath := inipath +'\';

 myini := TInifile.Create(inipath+myIniFile+'.ini');
 strtemp := myini.ReadString(mysection,myentry,mydefault);

 myGetInifileValue := strtemp;
 myini.Free;

end;

HolgerCW 22. Nov 2010 11:59

AW: inifile beschreiben
 
Danke.

Habe es übernommen.

Luckie 22. Nov 2010 12:04

AW: inifile beschreiben
 
@Sir Rufo: Und wenn ich die Ini-Datei dahin haben möchte, wo sie hingehört, nämlich ins Anwendungsverzeichnis des Benutzers?

Und das mit dem abschließenden Pfadtrennzeichen kann man auch über IncludeTrailingPathDelimiter regeln.

himitsu 22. Nov 2010 12:15

AW: inifile beschreiben
 
Zitat:

Delphi-Quellcode:
if Copy(inipath,Length(inipath),1) <> '\' then
  inipath := inipath +'\';

kennst du schon Delphi-Referenz durchsuchenIncludeTrailingPathDelimiter (alt Delphi-Referenz durchsuchenIncludeTrailingBackslash)?

PS: Wenn eine Datei mit Pfad übergeben wird, dann liefert Delphi-Referenz durchsuchenExtractFilePath immer ein abschließendes '\' zurück.
Im Gegensatz zu Delphi-Referenz durchsuchenExtractFileDir.
(IncludeTrailingPathDelimiter beachtet übrigens diesen Sonderfall)

PSS: Wenn inipath keinen Pfad wäre, sondern leer, dann würde dieses IF Probleme bereiten.

Aus 'test.exe' würde '\deine.ini' was die INI ins Hauptverzeichnis legen würde, wärend die EXE im aktiven Arbeitsverzeichnis liegt.



Also falls du solche '\'-Operationen öfters mal machst.
(Application.ExeName liefert zum Glück immer einen Pfad, so daß dein IF hier nix kaputt machen kann und da immer ein '\' macht dieses IF garnichts, außer sinnlos Rechenzeit zu verschwenden, für das Copy und den Vergleich)

Sir Rufo 22. Nov 2010 17:19

AW: inifile beschreiben
 
Zitat:

Zitat von Luckie (Beitrag 1063257)
@Sir Rufo: Und wenn ich die Ini-Datei dahin haben möchte, wo sie hingehört, nämlich ins Anwendungsverzeichnis des Benutzers?

Dann bin ich mit
Delphi-Quellcode:
ExtractFilePath( Application.ExeName )
völlig auf dem Holzweg.
Aber darum ging es mir ja gar nicht, sondern um diese umständliche PathDelimiter-Orgie, die zudem völlig überflüssig ist/war

Weil dann muss ich mir den Pfad über die SpecialFolders holen


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