![]() |
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:
Danke schon mal für die Comments im voraus
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; mfg |
Re: Frage zu IniFile
Dann prüfe eben nicht nur den Typ (TEdit), sondern auch noch den Namen der Komponenten.
|
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? |
Re: Frage zu IniFile
Delphi-Quellcode:
Was mache ich falsch :wall: ?
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; |
Re: Frage zu IniFile
Delphi-Quellcode:
if TEdit(Components[i]).Name = '' then
|
Re: Frage zu IniFile
wie trenne ich es indem ich zwei Edits speichern will?
Delphi-Quellcode:
?
if TEdit(Components[i]).Name = 'bla','blub' then
|
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; |
Re: Frage zu IniFile
Delphi-Quellcode:
if (TEdit(Components[i]).Name = '123') or (TEdit(Components[i]).Name = 'xyz') then
|
Re: Frage zu IniFile
Hallo,
Zitat:
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 22:46 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