Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Werte in .ini speichern? (https://www.delphipraxis.net/130753-werte-ini-speichern.html)

AlexII 12. Mär 2009 16:24


Werte in .ini speichern?
 
Hallo,

ich möchte wie folgt Werte in eine .ini Speichern:

Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
 Ini: TIniFile;
begin
Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'config.ini');
 try
   Ini.WriteInteger('Default', 'Volume', TrackBar1.Position); // hier wird kein Fehler verursacht
   Ini.WriteInteger('Default', 'Proxy', CheckBox1.Checked);  // hier ein Fehler - Inkompatible Typen: Integer und Boolen
   Ini.WriteInteger('Default', 'ProxyIP', Edit1.Text);       // und hier in Fehler - Inkompatible Typen: Integer und Boolen
 finally
   Ini.Free;
 end;
Action:=caFree;
end;
Die Fehlermeldungen scheinen logisch zu sein, aber hier wurde das genau so wie bei mir gemacht, und es klappt ohne Fehlermeldungen. :gruebel: Wie kommt das und wie speichere ich nun einen Text der Edit und das mit der CheckBox?

himitsu 12. Mär 2009 16:26

Re: Werte in .ini speichern?
 
schau mal in deine OH, da gibt es noch was anderes außer WriteInteger :zwinker:
ist auch im verlinkten Thread zu sehn ...

Matze 12. Mär 2009 16:26

Re: Werte in .ini speichern?
 
Hallo,

zum Speichern von Strings ist Delphi-Referenz durchsuchenIni.WriteString da und zum Speichern von boolschen Werten Delphi-Referenz durchsuchenIni.WriteBool. Analog gilt das fürs Laden.

Grüße, Matze

Edit: Och Mönsch. Himi war nur 'ne zehntel Sekunde schneller. *g*

AlexII 12. Mär 2009 16:30

Re: Werte in .ini speichern?
 
Boah..... war ich blind oder was??? :mrgreen: Hab vor dem Posten noch extra alles schön durchgeguckt und doch den Unterschied nicht gesehen. Pardo... :lol:

AlexII 12. Mär 2009 17:18

Re: Werte in .ini speichern?
 
Kann mir jemand sagen wie ich diese drei Werte auslesen muss?


Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
    ini  : TIniFile;
begin
ini:=TIniFile.Create('config.ini');
  try
    TrackBar1.Position := Ini.ReadInteger('Default', 'Volume', ????);
    cbDirectConnection.Checked := Ini.ReadBool('Default', 'Proxy', ????);
    ed_ProxyServer.Text := Ini.ReadString('Default', 'ProxyIP', ????);
  finally
    ini.free;
  end;
end;

freak4fun 12. Mär 2009 17:22

Re: Werte in .ini speichern?
 
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var // Wo war das?
  ini  : TIniFile;
begin
ini:=TIniFile.Create('config.ini');
  try
    TrackBar1.Position := Ini.ReadInteger('Default', 'Volume', -1); // Defaultwert, falss der Eintrag nicht vorhanden
    cbDirectConnection.Checked := Ini.ReadBool('Default', 'Proxy', 'none'); // -"-
    ed_ProxyServer.Text := Ini.ReadString('Default', 'ProxyIP', '0.0.0.0'); // -"-
  finally
    ini.free;
  end;
end;

AlexII 12. Mär 2009 17:41

Re: Werte in .ini speichern?
 
Hm.. irgendwie funktionierte das nicht... :gruebel:

aber hab die Zeile

Delphi-Quellcode:
Ini:=TIniFile.Create('config.ini');
durch diese

Delphi-Quellcode:
Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'config.ini');
ersetzt und auf ein mal geht's :thumb:

Helmi 12. Mär 2009 17:53

Re: Werte in .ini speichern?
 
Hallo,

nur der Richtigkeit halber, das kann nicht gehen:
Zitat:

Zitat von freak4fun
Delphi-Quellcode:
    cbDirectConnection.Checked := Ini.ReadBool('Default', 'Proxy', 'none'); // -"-

denn der Defaultwert von ReadBool wäre ein Boolscher Wert, also true oder false und nicht
wie im Beispiel gezeigt ein String.

Blackheart 12. Mär 2009 17:55

Re: Werte in .ini speichern?
 
Das nennt man selbstverarschung - wird das zusammengeschrieben :gruebel:

AlexII 12. Mär 2009 19:10

Re: Werte in .ini speichern?
 
Ja das mit dem

Delphi-Quellcode:
cbDirectConnection.Checked := Ini.ReadBool('Default', 'Proxy', 'none'); // -"-
hab ich kopiert und schon längst geändert. Aber sagt ihr zum Post #7? :gruebel:

Luckie 12. Mär 2009 19:16

Re: Werte in .ini speichern?
 
Naja, ohne Pfadangabe speichert Windows die Datei im aktuellen Arbeitsverzeichnis und das muss nicht das Programmvereichnis sein.

AlexII 12. Mär 2009 20:24

Re: Werte in .ini speichern?
 
Ja und wieso werden die Werte mit diesem Code nicht geladen?

Delphi-Quellcode:
Ini:=TIniFile.Create('config.ini');

Matze 12. Mär 2009 20:26

Re: Werte in .ini speichern?
 
Vielleicht hat sich der Arbeitspfad geändert, wer weiß.
Nimm generell absolute Pfade, dann passiert sowas nicht.

OldGrumpy 12. Mär 2009 20:29

Re: Werte in .ini speichern?
 
Weil das aktuelle Verzeichnis in dem Moment ein anderes sein kann als beim Speichern. Und dann wird im Zweifelsfalle einfach die Datei nicht gefunden und duster is'.

AlexII 12. Mär 2009 20:47

Re: Werte in .ini speichern?
 
Soll ich dann den Code

Delphi-Quellcode:
Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'config.ini');
beim Schreiben der .ini und Lesen benutzen, oder nur beim Lesen?

Luckie 12. Mär 2009 20:51

Re: Werte in .ini speichern?
 
Bei beidem natürlcih. :roll:

blablab 13. Mär 2009 01:53

Re: Werte in .ini speichern?
 
Bei Ini.Create wird nicht wie sonst üblich das aktuelle verzeichnis genommen, sondern es wird standardmäßig ins windows-verzeichnis gespeichert.

stoxx 13. Mär 2009 02:53

Re: Werte in .ini speichern?
 
solche "Kleingikeiten" würde ich nur noch so speichern :-) *grins*

Delphi-Quellcode:
unit Unit9;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, uBase_XMLSerializer;

type
  TForm9 = class(TForm)
    btn1: TButton;
    tb1: TTrackBar;
    chk1: TCheckBox;
    edt1: TEdit;
    procedure btn1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

type TSaveValues = class(TPersistent)
private
    FPosition : Integer;
    FProxyIP: string;
    FProxyChecked: Boolean;
published
 property Position : Integer read FPosition write FPosition;
 property Checked : Boolean read FProxyChecked write FProxyChecked;
 property Text : string read FProxyIP write FProxyIP;
end;

var
  Form9: TForm9;

implementation

{$R *.dfm}

procedure TForm9.btn1Click(Sender: TObject);
var value : TSaveValues;
begin
  value := TSaveValues.Create;
  value.CopyPupProperiesFrom(tb1);
  value.CopyPupProperiesFrom(chk1);
  value.CopyPupProperiesFrom(edt1);
  value.SaveToXML('Settings.xml');
  value.Free;
end;

end.

http://www.delphipraxis.net/internal...148&highlight=




.

stoxx 13. Mär 2009 03:02

Re: Werte in .ini speichern?
 
Delphi-Quellcode:
//==============================================================================
// oder so noch einfacher die kompletten Komponenten .. ohne TSaveValues :-)
//==============================================================================

procedure TForm9.btn2Click(Sender: TObject);
begin

  tb1.SaveToXMLContainer('trackbar');
  chk1.SaveToXMLContainer('Checkbox');
  edt1.SaveToXMLContainer('Edit');


end;

AlexII 13. Mär 2009 18:44

Re: Werte in .ini speichern?
 
Und wieso ist dein Vorschlag besser als .ini?

stoxx 13. Mär 2009 20:38

Re: Werte in .ini speichern?
 
Zitat:

Zitat von AlexII
Und wieso ist dein Vorschlag besser als .ini?

ich muss nicht mehr nachdenken.
Schreibarbeit gespart
= Zeitersparnis ..
schneller
flexibler
geht für alles

AlexII 13. Mär 2009 20:52

Re: Werte in .ini speichern?
 
Hm...ok..hört sich interessant an, muss ich mal gucken, vllt werd das nutzen.


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