Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Frage zu IniFile (https://www.delphipraxis.net/146822-frage-zu-inifile.html)

Ouou 27. Jan 2010 13:05


Frage zu IniFile
 
Hi Leute,

ich beschäftige mich seit einiger zeit mit der inifile, haut auch alles wunderbar hin bis jetzt. in meinem projekt speichere ich nun alle einträge die ich in meinen edits habe in die inifile. Nun meine frage: Angenommen man hat 10 Edits in denen ein eintrag steht aber man will nur 3 edits in der ini speichern... funktioniert das, dass man nur 3 werte in der inifile speichern kann?

Hier ist mein vorhandener Code indem ich auf alle Edits zugreife:

Delphi-Quellcode:
var Ini: TIniFile;
    i:  Integer;
begin
  ini := TIniFile.Create('C:\Beispiel.ini');
  try
    // Zum Speichern
    For i := 0 to ComponentCount - 1 do
    begin
      If Components[i] Is TEdit then

        ini.WriteString('Daten'+FormatDateTime('yyyy',Summen.Date),(Components[i] as TEdit).name,(Components[i] as TEdit).text);
    end;
  finally
    ini.Free;
  end;
end;
Danke schon mal für die Comments im voraus

mfg

himitsu 27. Jan 2010 13:09

Re: Frage zu IniFile
 
Dann prüfe eben nicht nur den Typ (TEdit), sondern auch noch den Namen der Komponenten.

Ouou 27. Jan 2010 13:28

Re: Frage zu IniFile
 
könntest du mir eine kleine hife geben wie ich des hinbekomm?
würde doch mit findcomponent funktionieren oder täusch ich mich da?

Ouou 27. Jan 2010 13:53

Re: Frage zu IniFile
 
Delphi-Quellcode:
var Ini: TIniFile;
    i:  Integer;
begin
  ini := TIniFile.Create('C:\Versuch.ini');
  try
    // Zum Speichern
    For i := 0 to ComponentCount - 1 do
    begin
      If Components[i] Is TEdit then
        TEdit(FindComponent('Hallo' + IntToStr(i))).Text);
        ini.WriteString('Daten'+FormatDateTime('yyyy',Summen.Date),(Components[i] as TEdit).name,(Components[i] as TEdit).text)
      else if Components[i] is TDateTimePicker then
        ini.WriteString('Summen',(Components[i] as TDateTimePicker).name,FormatDateTime('yyyymm',(Components[i] as TDateTimePicker).Date));
    end;
  finally
    ini.Free;
  end;
end;
Was mache ich falsch :wall: ?

Andreas L. 27. Jan 2010 13:55

Re: Frage zu IniFile
 
Delphi-Quellcode:
if TEdit(Components[i]).Name = '' then

Ouou 27. Jan 2010 14:17

Re: Frage zu IniFile
 
wie trenne ich es indem ich zwei Edits speichern will?

Delphi-Quellcode:
if TEdit(Components[i]).Name = 'bla','blub' then
?

Ouou 27. Jan 2010 15:36

Re: Frage zu IniFile
 
wie kann man es trennen wenn man zb. 2 oder 3 edits in die ini nur speichern will?

Delphi-Quellcode:
begin
      if TEdit(Components[i]).Name = 'prodLK',??? then
          ini.WriteString('Daten'+FormatDateTime('yyyy',Summen.Date),(Components[i] as TEdit).name,(Components[i] as TEdit).text)

    else if Components[i] is TDateTimePicker then
          ini.WriteString('Summen',(Components[i] as TDateTimePicker).name,FormatDateTime('yyyymm',(Components[i] as TDateTimePicker).Date));
    end;
  finally
    ini.Free;
  end;
end;

Andreas L. 27. Jan 2010 16:08

Re: Frage zu IniFile
 
Delphi-Quellcode:
if (TEdit(Components[i]).Name = '123') or (TEdit(Components[i]).Name = 'xyz') then

hoika 28. Jan 2010 09:43

Re: Frage zu IniFile
 
Hallo,

Zitat:

aber man will nur 3 edits in der ini speichern
Wenn du nur 3 Edits reinschreiben willst,
warum nimmst du dann nicht 3 WriteString's,
statt dich mühselig durch alle Komponenten zu hangeln ?

Wenn es denn unbedingt sein soll,
packe die 3 Edit-Namen in eine StringList und vergleiche den aktuellen Edit.Name
ähnlich wie in #8.

Aber ich würde das etwas anders machen

Delphi-Quellcode:
var
  Edit: TEdit;
  StrList: TStringList;
begin
  StrList:= TStringList.Create;  // try finally selber einfügen ...
  StrList.Add('Edit1');
  StrList.Add('Edit5');
 

  ..

  if Components[i] is TEdit then
  begin
    Edit:= TEdit(Components[i]);
    if StrList.IndexOf(Edit.Name)<>-1 then
    begin
      Ini. WriteString ...
    end;

...
  StrList.Free;

end;

Warum so umständlich ?
Neu zu speichernde Editoren können einfach per StrList.Add eingefügt werden,
an genau einer Stelle.

Der Code bei if Components[i] is TEdit then
sorgt dafür, dass du dort auch mal einen Breakpoint setzen kannst,
wenn etwas nicht klappt. Du hast dann sofort den Edit.Name.


Heiko


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