AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

In INI Datei abspeichern

Ein Thema von mindforce · begonnen am 10. Mär 2006 · letzter Beitrag vom 12. Mär 2006
 
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.259 Beiträge
 
Delphi 2006 Professional
 
#17

Re: In INI Datei abspeichern

  Alt 11. Mär 2006, 18:36
So,

bevor ich mir das noch länger ansehen muss hier mal ein kleiner Auszug aus meiner "Form-Übersetzungs-Klasse":

Delphi-Quellcode:
uses
  TypInfo, IniFiles;

var
  apppath: string;

function MyGetWideStrProp(Instance: TObject; const PropName: String): WideString;
resourcestring
  SUnknownProperty = 'Eigenschaft %s existiert nicht.';
var
  PropInfo: PPropInfo;
begin
  PropInfo := GetPropInfo(Instance, PropName);
  if PropInfo = nil then
  begin
    raise EPropertyError.CreateResFmt(@SUnknownProperty, [PropName]);
  end;
  result := GetWideStrProp(Instance, PropName);
end;

procedure MySetWideStrProp(Instance: TObject; const PropName: String; const Value: WideString);
resourcestring
  SUnknownProperty = 'Eigenschaft %s existiert nicht.';
var
  PropInfo: PPropInfo;
begin
  PropInfo := GetPropInfo(Instance, PropName);
  if PropInfo = nil then
  begin
    raise EPropertyError.CreateResFmt(@SUnknownProperty, [PropName]);
  end;
  SetWideStrProp(Instance, PropInfo, Value);
end;

procedure WriteIni(aForm: TForm; aType: TClass; const aProperty: string = 'Text');
var
  CurrentCompo: TComponent;
  ndx: integer;
  EditValueIni: TIniFile;
begin
  EditValueIni := TIniFile.Create(apppath + 'data.ini');
  try
    for ndx := 0 to Pred(aForm.ComponentCount) do
    begin
      CurrentCompo := aForm.Components[ndx];
      if (CurrentCompo is aType) then
      begin
        EditValueIni.WriteString(CurrentCompo.ClassName, CurrentCompo.Name, MyGetWideStrProp(CurrentCompo, aProperty));
      end;
    end;
  finally
    EditValueIni.Free;
  end;
end;

procedure ReadIni(aForm: TForm; aType: TClass; const aProperty: string = 'Text');
var
  CurrentCompo: TComponent;
  ndx: integer;
  EditValueIni: TIniFile;
  newText: string;
begin
  EditValueIni := TIniFile.Create(apppath + 'data.ini');
  try
    for ndx := 0 to Pred(aForm.ComponentCount) do
    begin
      CurrentCompo := aForm.Components[ndx];
      if (CurrentCompo is aType) then
      begin
        newText := EditValueIni.ReadString(CurrentCompo.ClassName, CurrentCompo.Name, '');
        MySetWideStrProp(CurrentCompo,aProperty,newText);
      end;
    end;
  finally
    EditValueIni.Free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  apppath := IncludeTrailingBackslash(ExtractFilePath(ParamStr(0)));
  ReadIni(self,TEdit,'Text');
end;


procedure TForm1.FormDestroy(Sender: TObject);
begin
  WriteIni(self,TEdit,'Text');
end;
Was macht der Code?
Ganz einfach, er schreibt alle PropertyValues (Text oder Caption) einer TComponent der Form in eine Ini bzw. liest sie wieder.
Wenn man zusätzlich noch
ReadIni(self,TLabel,'Caption'); bzw.
WriteIni(self,TLabel,'Caption'); im Create / Destroy verwendet würden auch die Captions der Labels gespeichert und geladen werden.

@mindforce:
Normalerweise hätte ich das jetzt nicht gemacht. Du lernst NICHTS wenn Du einfach nur Code aus dem Forum in dein Projekt kopierst.
Ich bitte Dich eindringlich darum dir die Tips welche die User dir geben auch genau zu lesen und zu verstehen versuchen.

Und bitte bleibe etwas freundlicher!
Stephan B.
"Lasst den Gänsen ihre Füßchen"
 
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:10 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