Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Optionen für Programm Speichern (https://www.delphipraxis.net/72954-optionen-fuer-programm-speichern.html)

Andidreas 10. Jul 2006 07:53


Optionen für Programm Speichern
 
hi @ all,

ich hab en programm des sowohl auf nem server als auch auf nem pc läuft...
da die pfade im programm für denn server anders heißen wie am pc, wollt dem user ne form anbieten in dem er wählen kann wo er sich befindet...

jetzt weiß ich nur nicht wie ich des speichern soll was der benutzer ausgwählt hat...

als .ini datei????
wie würd ich mit ner .ini datei arbeiten??? genauso wie mit nem .txt file???

Die Muhkuh 10. Jul 2006 07:56

Re: Optionen für Programm Speichern
 
Hi Andidreas,

ich benutze zum Speichern von Optionen immer XML-Dateien.

Hier mal meinen Aufbau der Klasse:

Delphi-Quellcode:
unit uoptions;

interface

uses
  XMLIntf, XMLDoc, SysUtils;

type
  TOptions = class(TObject)
  private
    FXMLDoc: IXMLDocument;
    FLanguage: String;
    FFileName: String;
  public
    constructor Create(const OptionsFileName: String);
    destructor Destroy; override;

    procedure Load;
    procedure Save(SaveInFile: Boolean = false);

    // Optionen
    property Language: String read FLanguage write FLanguage;
  end;

implementation

{ TOptions }

constructor TOptions.Create(const OptionsFileName: String);
begin
  FFileName := OptionsFileName;

  FXMLDoc := TXMLDocument.Create(FFileName);
  FXMLDoc.LoadFromFile(FFileName);

  if (not (FXMLDoc.DocumentElement.NodeName = 'settings')) then
  begin
    raise Exception.Create('Not a valid settingsfile');
  end;

  FXMLDoc.Active := true;
end;

destructor TOptions.Destroy;
begin
  FXMLDoc.SaveToFile(FFileName);
  FXMLDoc.Active := false;
  inherited;
end;

procedure TOptions.Load;
  function DoLoad(NodeName: String; Default: String = ''): String;
  var
    Node: IXMLNode;
  begin
    Node := FXMLDoc.DocumentElement.ChildNodes.FindNode(NodeName);

    if Node <> nil then
      Result := Node.Text
    else
      Result := Default;
  end;
begin
  // Laden
  Language := DoLoad('language', 'de');
end;

procedure TOptions.Save(SaveInFile: Boolean = false);
  procedure DoSave(NodeName: String; Text: String);
  var
    Node: IXMLNode;
  begin
    Node := FXMLDoc.DocumentElement.ChildNodes.FindNode(NodeName);

    if Node = nil then
      Node := FXMLDoc.DocumentElement.AddChild(NodeName);

    Node.Text := Text;
  end;
begin
  // Speichern
  DoSave('language', Language);

  if SaveInFile then
    FXMLDoc.SaveToFile(FFilename);
end;

end.
Das ist jetzt nicht das nonplusultra, aber vielleicht ein kleiner Denkanstoß.

RavenIV 10. Jul 2006 07:57

Re: Optionen für Programm Speichern
 
Entwerder speicherst Du die Einstellungen in der Registry (nicht gerne gesehen weil unpraktisch) oder Du nimmst eine ini-Datei.

Für ini's gibt es TInifile.
Gib einfach in der Delphi-Hilfe mal TInifile ein. Dort ist alles beschrieben...

Die Muhkuh 10. Jul 2006 07:58

Re: Optionen für Programm Speichern
 
Zitat:

Zitat von RavenIV
Entwerder speicherst Du die Einstellungen in der Registry (nicht gerne gesehen weil unpraktisch)

Unpraktisch ist es nicht (finde ich). Ist ja im Endeffekt die gleiche Handhabung wie mit der Ini. Bloß: Keiner räumt danach auch wieder auf und löscht das Zeugs aus der Registry.

RavenIV 10. Jul 2006 08:20

Re: Optionen für Programm Speichern
 
Registry hat einen weiteren Nachteil:
Wenn die Software auf einen anderen PC umzieht, muss man das mühsam aus der Registry exportieren (sofern man es überhaupt findet) und am neuen PC einbauen.

Eine ini kopiert man einfach mit dem exe und alles ist wieder wie gewohnt.

Die Muhkuh 10. Jul 2006 08:22

Re: Optionen für Programm Speichern
 
Zitat:

Zitat von RavenIV
Registry hat einen weiteren Nachteil:
Wenn die Software auf einen anderen PC umzieht, muss man das mühsam aus der Registry exportieren (sofern man es überhaupt findet) und am neuen PC einbauen.

Ah stimmt. Soweit habe ich gar nicht gedacht. Ist also doch unpraktisch.

mr-unbekannt 10. Jul 2006 09:04

Re: Optionen für Programm Speichern
 
Zitat:

Keiner räumt danach auch wieder auf und löscht das Zeugs aus der Registry.
naya... die paar bytes?!?

ich arbeite eigentlich lieber mit der registry..

Zitat:

Registry hat einen weiteren Nachteil:
Wenn die Software auf einen anderen PC umzieht, muss man das mühsam aus der Registry exportieren (sofern man es überhaupt findet) und am neuen PC einbauen.
nö: man kann doch Registry-Einträge im Form-Create-Ereignis reinschreiben und überprüfen lassen

Luckie 10. Jul 2006 09:07

Re: Optionen für Programm Speichern
 
Zitat:

Zitat von RavenIV
Registry hat einen weiteren Nachteil:
Wenn die Software auf einen anderen PC umzieht, muss man das mühsam aus der Registry exportieren (sofern man es überhaupt findet) und am neuen PC einbauen.

Eine ini kopiert man einfach mit dem exe und alles ist wieder wie gewohnt.

Nur dumm, wenn in der Ini Pfade drinnestehen, die nur für diesen einen PC gültig sind. Dann darfst du nämlich vorher in der Ini rumeditieren. Man müsste also vorher prüfen, ob die Pfade stimmen und wenn nicht einen Dialog anzeigen, um sie zu korrigieren. Und das kannst du aber auch mit der Registry machen, wenn die Einträge dort fehlen.

freak4fun 10. Jul 2006 09:10

Re: Optionen für Programm Speichern
 
Alle Speicherarten haben ihre Vor- und Nachteile. Also musst du dir darüber klar werden, welche Ansprüche du an deine Speicherart stellst und dann die beste wählen. Pauschal kann man das nicht sagen, denke ich. :)

MfG
freak

pacman1986 10. Jul 2006 09:13

Re: Optionen für Programm Speichern
 
Zitat:

Zitat von mr-unbekannt
naya... die paar bytes?!?

Wenn jeder so denkt dann ist die registry nach einer bestimmten weile ziemlich zugemuellt ...

Zitat:

Zitat von mr-unbekannt
nö: man kann doch Registry-Einträge im Form-Create-Ereignis reinschreiben und überprüfen lassen

dann stellt es neue her und die alten sind trtzdm futsch mit anderen worten die optionen sind futsch.


Zitat:

Zitat von Luckie
Nur dumm, wenn in der Ini Pfade drinnestehen, die nur für diesen einen PC gültig sind. Dann darfst du nämlich vorher in der Ini rumeditieren. Man müsste also vorher prüfen, ob die Pfade stimmen und wenn nicht einen Dialog anzeigen, um sie zu korrigieren. Und das kannst du aber auch mit der Registry machen, wenn die Einträge dort fehlen.

an sich hast du recht aber wer nimm heutzutage noch statische pfad auswahl.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:14 Uhr.
Seite 1 von 2  1 2      

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