Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Ini-file-DB auslesen (https://www.delphipraxis.net/2439-ini-file-db-auslesen.html)

Jan 23. Jan 2003 15:54


Ini-file-DB auslesen
 
Hallo DP'ler,
ich habe eine INI-Datein, von der ich beim öffnen nicht weiß wieviele einträge die besitzt. Deswegen möchte ich die datei in einen dynamischen aray schreiben und dann auswerten, allerdings brauche ich dazu erstmal eine Möglichkeit die Menge aller sections oder values auslesen zu können, damit ich mit setlength meinen array bereitstellen kann. Weiss jemand wie das geht?
Gruß
Jan

X-Dragon 23. Jan 2003 16:08

Ich hab selbst mit INI-Dateien noch nicht gearbeitet, ich bastel mir immer selber was :), aber am einfachsten dürfte es sein, wenn du die Datei in eine StringListe einliest (TStrings.LoadFromFile).

Chewie 23. Jan 2003 16:08

Dellphi bietet dir die Klasse TIniFile, die den Umgang mit Ini-Dateien wesentlich vereinfacht. Schau mal in der Delphi-Hilefe nach, besonders die Funktion ReadSections dürfte dich da interessieren.

Jan 23. Jan 2003 16:32

Hallo Chewie,
wie ich den ganzen Kram lese und schreibe weiss ich schon, nur ich konnte auch in der Delphi Hilfe keinen Befehl finden mit dem ich die Anzahl der sections oder values in einer INI-Datei auslesen kann.
Gruß
Jan

Daniel B 23. Jan 2003 16:39

Hallo Jan,

mach eine Schleife mit "while not EOF Datei", solange das Ende der Datei nicht erreicht ist, weiter Lesen. Siehe OH zu EOF.

Grüsse, Daniel :hi:

Jan 23. Jan 2003 17:18

Hallo DanielB,
das ist natürlich extrem geschickt :]
Kannst Du mir denn sagen, wie man die Einträge in einem edit nacheinander auslesen kann? Ich kann die jetzt nur nach Namen auslesen.
Also ich verstehe nicht wie ich das anstellen soll.
Ich hab es jetzt schon anders (umständlicher gelöst), undzwar habe ich eine extra-section angelegt mit dem namen 'INFO' und dahinein habe ich dann die Anzahl der Einträge gespeichert, und bei jedem mal schreiben wird der Wert erhöht, aber das werde ich dann an diene version anpassen, sobald du mir da mehr zu sagen kannst.
Das ganze ist übrigends um für mein Twebbrowser Programm Logins zu speichern und diese können dann über ein Popupmenu aufgerufen werden, und sofort in die entsprechenden edits geschrieben werden.
BB!
Jan

P.S.: So nehme sich bitte mal einer meinem Problem im Internet/IP/LAN-Forum an!!! *bettel* http://www.delphipraxis.net/viewtopic.php?t=2672

Chewie 23. Jan 2003 17:37

Ach so, du willst die Anzahl aller Sections und Values haben? Dann würde ich so vorgehen: Zuerst via ReadSections alle Sections ermitteln und die StringList in einer Schleife durchgehen. Bei jedem Durchlauf dann via ReadSection die Values ermitteln, die Zahl in einer Variable speichern und zu der bisherigen Anzahl dazuaddieren. Dann hast du die Zahl aller Sections und Values.

Jan 23. Jan 2003 17:40

Hallo Chewie,
Ich muss nicht notwendiger Weise die Anzahl aller Sections und values haben, da ich auch eine einzige section machen könnte, und da dann lauter values rein, aber das mit der stringlist scheint tatsächlich die beste Methode zu sein, danke Dir vielmals.
Gruß
Jan

Daniel B 23. Jan 2003 17:54

Hallo Jan,

nochmal zum Verständniss. Wo sollen den die ganzen sachen angeziegt werden?

So wie ich es verstanden habe, hast Du sowas:

Code:
[Info]
Wert1=Zahl1
Wert2=Zahl2
Wert3=Zahl3
usw., usw....

Man kann das alles evtl. ohne den Umweg über eine StringList machen. Ich konnte aber noch nicht erkennen, wie wo wo die ganzen Einträge dann verfügbar sind.
ListBoxen, Edit, wieviele usw.
Noch ein paar Infos bitte.

Grüsse, Daniel :hi:

Jan 23. Jan 2003 17:58

Hallo Daniel B,
das ganze sieht so aus:

Code:
[info]
inilength=3

[account1]
user=username1
pw=passwort1

[account2]
user=username2
pw=passwort2

[account3]
user=username3
pw=passwort3
Die info section ist also im Moment nur dazu da meinem programm zu sagen wieviele Einträge es gibt.
Sobald das in Erfahrung gebracht wurde kann mein Prgramm dann die einzelnen accs so auslesen und in ein Popup-menu schreiben:

Code:
procedure tform1.loadaccs();
var inifile: tinifile;
    inilength, i : integer;
    NewItem: TMenuItem;
begin
  inifile:=tinifile.create(ExtractFilePath(Application.ExeName)+'/easywars.ini');
  inilength:=inifile.readInteger('info','length', 0);
  setlength(accarray, inilength);
  form1.popupmenu1.Items.Clear;
  for i:=0 to length(accarray)-1 do
  begin
    setlength(accarray[i],2);
    accarray[i][0]:=inifile.readstring('account'+inttostr(i+1),'user', 'error');
    accarray[i][1]:=inifile.readstring('account'+inttostr(i+1),'pw', 'error');
    NewItem := TMenuItem.Create(PopupMenu1);
    PopupMenu1.Items.Add(NewItem);
    NewItem.Caption := accarray[i][0];
    NewItem.Tag := i;
    NewItem.OnClick:= fillfields;
  end;
end;

Ich hoffe, dass das jetzt verständlich ist.
bye
Jan


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 Uhr.
Seite 1 von 2  1 2      

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