![]() |
Mehrere Namen In IniFile speichern
hallo,
ich habe ein Testprogram geschrieben.Es ist so dass,wenn man das program startet dann öffnet sich ein fenster wo man sein UserName und Firma eintragen muss.ich speichere diese Daten in einem IniFile.Mein problem ist:jedes mal das ich ein Name eintrage,wird der vorherige Name überschrieben.wie kann ich machen,dass diese Namen drin bleiben? diese namen laden ich später in einem Editfeld.kann den Editfeld sich diese namen merken? danke |
Re: Mehrere Namen In IniFile speichern
Nein, dein Editfeld hat nur während der Laufzeit einen Speicherbereich im Arbeitsspeicher, der beim Beenden gelöscht wird. Also musst du Daten die du länger haben willst mit dem Dateisystem speichern.
Wenn du mehrere Werte in einer INI-Datei speichern willst, musst du verschiede Bezeichner verwenden [section] bez1=Firma1 bez2=Firma2 bez3=Firma3 usw.... gruß mr47 |
Re: Mehrere Namen In IniFile speichern
das liegt daran, das eine ini file nur da ist um einzelne variablen zu speichern, und nicht konkrete listen.
mein tip, verwende eine TStringlist als variable, wo die user daten reinkommen, durch ';' getrennt (oder ähnlichem) die kann man mit einfachen befehlen speichern und auslesen
Delphi-Quellcode:
var sl: TStringlist;
Delphi-Quellcode:
die listen kann man auch relativ gut sortieren lassen, aber das wirst du selbst herausfinden
Begin
... sl:=TStringlist.create; sl.loadfromfile('liste.txt'); .. sl.append(user+';'+firma); .. sl.savetofile('liste.txt'); sl.free; .. end; natürlich muss die datei am anfang vorhanden sein, sonst kannst du sie nicht öffnen |
Re: Mehrere Namen In IniFile speichern
hallo Panzerfisxcher
[try Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+ '\IniFiles\' + 'Informationen.ini'); Ini.WriteString('TESTINFOS', 'Pruefer', Ed_Benutzername.Text); finally Ini.Free; end; try Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+ '\IniFiles\' + 'Informationen.ini'); Ini.WriteString('TESTINFOS', 'Pruefer', Ed_Company.Text); finally Ini.Free; end; ] danke für deine Idee,aber ich verstehe ,das mit TStringlist nicht genau.so sieht mein Quellcode aus. [Testinfos] Name = Wolf Firma= MMc könntest du mir bitte mehr erklären,was du meinst? danke |
Re: Mehrere Namen In IniFile speichern
also prinzipiell kannst du zum speichern auch ne ini datei verwenden, ist halt nur mehr aufwandt (finde ich)
sollte dann ca so aussehen
Delphi-Quellcode:
bzw zum schreiben:type info = record user,company,entry:String[255];end; var testinfo:array[0..100] of info; ... for i:=0 to usermax do begin try ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+ '\IniFiles\' + 'Informationen.ini'); Ini.ReadString(testinfo[i].entry, 'Name', Testinfo[i].user); Ini.ReadString(testinfo[i].entry, 'Firma', Testinfo[i].company); finally Ini.Free; end; end; ..
Delphi-Quellcode:
oder du machst das mit ner Stringlist,
for i:=0 to usermax do begin
try ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+ '\IniFiles\' + 'Informationen.ini'); Ini.WriteString(testinfo[i].entry, 'Name', Testinfo[i].user); Ini.WriteString(testinfo[i].entry, 'Firma', Testinfo[i].company); finally Ini.Free; end; end;
Delphi-Quellcode:
in beiden varianten hast du nun die liste der namen und firmen in nem array stehen, lediglich das dateiformat unterscheidet sich, die Stringlist file sieht wie folgt aus:
type info = record user,company:String[255];end;
var testinfo:array of info; sl:TStringlist; .. sl:=TStringlist.create; sl:=loadfromfile('{Pfad/Dateiname}'); setlength(testinfo,sl.count-1); ... for i:=0 to sl.count-1 do begin //lesen testinfo[i].user:=copy(sl[i],1,pos(';',sl[i])-1); testinfo[i].company:=copy(sl[i],pos(';',sl[i])+1,length(sl[i])-pos(';',sl[i])-1); end; {lass dich von dem ganzen zeug nicht irritieren, das nur zum unterscheiden zw. name und firma (also einmal text bis zum semikolen, bzw. von da bis zum ende} .. sl.clear; //bzw schreiben for i:=0 to usermax do sl.append(testinfo[i].user+';'+testinfo[i].company); sl.savetofile('{Pfad/Dateiname}'); ... name1;firma1 name2;firma2 name2;firma3 und die inifile: [Testinfo[1].entry] Name = name1 Firma= firma1 [Testinfo[2].entry] Name = name2 Firma= firma2 [Testinfo[3].entry] Name = name3 Firma= firma3 was du im endeffekt nimmst ist egal, die version mit der TStringlist hat den vorteil, das du das array nicht beschränken musst (dynamic array) , bei der inifile weißt du nicht im vornherein, wieviele einträge drinne stehen. noch ne idee wäre das in ner data file zu speichern, du deklarierst deine einträge in nem record und speicherst das record in ne *.dat datei, mit der kannste auch arbeiten, musst dich aber ein bissel reinfuchsen, funnzt aber auch mit normalen pascal, also das ist so die grundlage schlecht hin, aber nicht sehr benutzerfreundlich, und die datei ist im endeffekt schlecht gegliedert und kann schlecht bearbeitet werden |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:27 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