Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TInifile (https://www.delphipraxis.net/6175-tinifile.html)

Christian Seehase 7. Sep 2003 15:44

Re: TInifile
 
Moin Carbögen,

hier mal ein einfaches Beispiel, was ich mit Objekt für die Optionen meinte. Statt, wie üblich, Felder im Objekt anzulegen, werden die Daten immer direkt in die Inidatei geschrieben, bzw. aus ihr gelesen.

Delphi-Quellcode:
unit MyOptions;

interface
uses inifiles;

TcsOptions = class(TObject)
private
  FiniFile : TIniFile;
  procedure SetStringOption(Value: string);
  function GetStringOption : string;
public
  procedure Create(const AsFilepath : string); override;
  procedure Destroy;
  property StringOption : string read GetStringOption write SetStringOption;
end;

//....

implementation

procedure TcsOptions.Create(const AsFilepath : string);
begin
  inherited;
  FiniFile := TIniFile.Create(AsFilePath);
end;

procedure TcsOptions.Destroy;
begin
  FreeAndNil(FiniFile);
  inherited;
end;

procedure TcsOptions.SetStringOption(Value: string);
begin
  FiniFile.WriteString('Irgendeine Section','StringOption',Value);
  FiniFile.UpdateFile;
end;

function TcsOptions.GetStringOption : string;
begin
  Result := FiniFile.ReadString('Irgendeine Section','StringOption','Standardwert wenn nichts in der Ini steht');
end;
end.
Wie jetzt die jeweiligen Getxxx und Setxxx Methoden ausgestaltet sind, bzw. sein müssen, hängt von den Daten ab. Hier hab' ich das mal mit einem Stringwert gemacht.

Das Beispiel ist ungetestet, ich hab's hier direkt reingeschrieben.

Jetzt kannst Du dir, z.B. in Deinem Hauptformular, eine Eigenschaft für die Optionen hinzufügen.

Delphi-Quellcode:
interface
uses MyOptions,inifiles;

TForm1 = class(TForm)
//...
private
  FOptions : TcsOptions;
public
  property Options : TcsOptions read FOptions;
end;

//...

implementation

procedure TForm1.Form1Create(...);
begin
  FOptions := TInifile.Create(ExtractFilePath(paramstr(0))+'Options.ini');
end;
end;

procedure TForm1.Form1Destroy(...);
begin
  FreeAndNil(FOptions);
end;
Jetzt hast Du Zugriff auf Deine Optionen, und brauchst Dich nicht mehr darum zu kümmern, wie die nun gespeichert bzw. gelesen werden, nachdem Du für jede Option die Lese- und Schreibroutinen einmal festgelegt hast.

Carbrögen 7. Sep 2003 16:42

Re: TInifile
 
Uff :nerd: .


Das' Kompliziert....

Und das waren ein paar Informationen zu viel für mich... ein richtiges Tut wäre doch das beste...

danke trotzdem

Carbrögen 8. Sep 2003 18:15

Re: TInifile
 
Hab nochmal nachgedacht. Ginge auch folgende Lösung:

Ich schreib eine Unit. In der Unit schreibe ich in die Ini file die Strings.

So, in der unit sind funktionen - klar. Den Output realisiere ich mit 'result :=', den Input (also das ändern der Variablen in der Ini) mit Globalen Variablen aus der Unit sofern möglich.


Ist das auch ne lösung?

Mfg

Carbrögen 9. Sep 2003 12:30

Re: TInifile
 
Keine Antworten :( ?

Christian Seehase 9. Sep 2003 12:41

Re: TInifile
 
Moin Carbrögen,

Zitat:

Zitat von Carbrögen
Ist das auch ne lösung?

Im Prinzip ja, nur unterscheidet sich diese nicht wesentlich von meiner, ausser dass ich alles in einem Objekt zusammenfassen will.

Carbrögen 9. Sep 2003 13:13

Re: TInifile
 
cool thx :hello:

Nalincah 9. Sep 2003 14:01

Re: TInifile
 
Zitat:

Zitat von sakura
Zitat:

Zitat von Illuminator-23-5
Ist das schon mal jemandem Passiert?

Jedem :!: Wirklich :?
Zitat:

Zitat von Illuminator-23-5
Kann mir jemand sagen was hier falsch ist?

Als Erklärung: Datei ist eine Objekt-Variable vom Klassen-Typ TIniFile. Als erstes musst Du ein Objekt der Klasse TIniFile erstellen (was Du auch tun wolltest). Das gibt es die constructor Methoden, welche direkt über die Klasse angesprochen werden. Das dadurch erstellte Objekt wird anschließend der Objektvariablen zugewiesen, wie im obigen Beitrag zu sehen.

...:cat:...

Mir noch nicht :dancer:
PS: Du brauchst die Datei vorher nicht zu erstellen
PS @ sakura: Danke für
Code:
ExtractFilePath(Application.ExeName)
Sowas such ich schon die ganze Zeit


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:56 Uhr.
Seite 2 von 2     12   

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