AGB  ·  Datenschutz  ·  Impressum  







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

Mehrere Namen In IniFile speichern

Ein Thema von DJAYS · begonnen am 21. Sep 2006 · letzter Beitrag vom 21. Sep 2006
Antwort Antwort
DJAYS

Registriert seit: 13. Sep 2005
Ort: Nürnberg
28 Beiträge
 
Delphi 5 Standard
 
#1

Mehrere Namen In IniFile speichern

  Alt 21. Sep 2006, 15:49
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
I like Programing, but it hates me!wat am I gonna do?
  Mit Zitat antworten Zitat
Benutzerbild von mr47
mr47

Registriert seit: 6. Dez 2004
Ort: Stuttgart
644 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Mehrere Namen In IniFile speichern

  Alt 21. Sep 2006, 16:03
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
  Mit Zitat antworten Zitat
panzerfischer

Registriert seit: 18. Sep 2006
Ort: Ilmenau
33 Beiträge
 
#3

Re: Mehrere Namen In IniFile speichern

  Alt 21. Sep 2006, 16:08
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

var sl: TStringlist;
Delphi-Quellcode:
Begin
...
sl:=TStringlist.create;
sl.loadfromfile('liste.txt');
..
sl.append(user+';'+firma);
..
sl.savetofile('liste.txt');
sl.free;
..
end;
die listen kann man auch relativ gut sortieren lassen, aber das wirst du selbst herausfinden

natürlich muss die datei am anfang vorhanden sein, sonst kannst du sie nicht öffnen
  Mit Zitat antworten Zitat
DJAYS

Registriert seit: 13. Sep 2005
Ort: Nürnberg
28 Beiträge
 
Delphi 5 Standard
 
#4

Re: Mehrere Namen In IniFile speichern

  Alt 21. Sep 2006, 16:43
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
I like Programing, but it hates me!wat am I gonna do?
  Mit Zitat antworten Zitat
panzerfischer

Registriert seit: 18. Sep 2006
Ort: Ilmenau
33 Beiträge
 
#5

Re: Mehrere Namen In IniFile speichern

  Alt 21. Sep 2006, 17:18
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:

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;

..
bzw zum schreiben:
Delphi-Quellcode:
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;
oder du machst das mit ner Stringlist,
Delphi-Quellcode:
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}');

...
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:

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
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:53 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