Entwickler-Ecke
Dateizugriff - INI lesen ganz einfach bitte.
Constan - Do 17.11.05 00:12
Titel: INI lesen ganz einfach bitte.
Falls wieder jemand meckert ja ich habe gesucht.
Ich habe eine INI mit den Inhalten
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| [IP] 192.168.1.10 192.168.1.11 192.168.1.14 [Name] Dennis Georg Peter |
so mein Code sieht so aus
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| function Get_Ini(IniFile:string):tstringlist; begin Result:=Tstringlist.Create; Result.LoadFromFile(IniFile); end;
procedure TForm1.Button1Click(Sender: TObject); begin OpenDialog1.Filter:='Ini-File (*.ini)|*.ini'; OpenDialog1.Execute; Memo1.ScrollBars:=ssVertical; Memo1.Clear; Memo1.lines:=Get_Ini(OpenDialog1.FileName); end;
end. |
so nun zu meinen beiden fragen :
1. wie sage ich ihm das er bestimmte werte lesen soll beispiel die erste IP 192.168.1.10 mit dem namen dennis und dies dann in ein label beispielsweise laden tut.
2. Der Opendialog gefällt mir nicht wie sage ich ihm das die datei da und da liegt
Vielleicht so?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var sl: TStringList; begin sl := TStringList.Create; sl.LoadFromFile('c:\test.ini'); Label1.Caption := sl.Strings; end; sl.Free; end; end; |
Bitte helft mir ein wenig.
Wenn ihr noch Infos braucht poste ich gerne.
Sprint - Do 17.11.05 00:38
Titel: Re: INI lesen ganz einfach bitte.
Constan hat folgendes geschrieben: |
Ich habe eine INI mit den Inhalten
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| [IP] 192.168.1.10 192.168.1.11 192.168.1.14 [Name] Dennis Georg Peter |
1. wie sage ich ihm das er bestimmte werte lesen soll beispiel die erste IP 192.168.1.10 mit dem namen dennis und dies dann in ein label beispielsweise laden tut. |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| uses IniFiles;
procedure TForm1.Button1Click(Sender: TObject); var IniFile: TMemIniFile; IP: TStringList; Name: TStringList; I: Integer; begin
if OpenDialog1.Execute then begin try IniFile := TMemIniFile.Create(OpenDialog1.FileName); IP := TStringList.Create; Name := TStringList.Create; try IniFile.ReadSectionValues('IP', IP); IniFile.ReadSectionValues('Name', Name); if (IP.Count > 0) and (IP.Count = Name.Count) then for I := 0 to IP.Count - 1 do ShowMessage(Name[I] + ' hat die IP: ' + IP[I]); finally IP.Free; Name.Free; IniFile.Free; end; except end; end;
end; |
Zitat: |
2. Der Opendialog gefällt mir nicht wie sage ich ihm das die datei da und da liegt |
In dem du den Dateinamen direkt in den Quelltext schreibst.
Constan - Do 17.11.05 18:22
Aha ok nur mal zum verständnis
Delphi-Quelltext
1: 2:
| if (IP.Count > 0) and (IP.Count = Name.Count) then for I := 0 to IP.Count - 1 do |
wenn ich also einen anderen Wert auslesen möchte muss ich in diesen Zeilen was ändern oder?
Dort sind ja 3 zahlen 0 0 1 ist dann
0 der erste wert?
1 der zweite wert?
2 der dritte wert?
woführ steht dann die - 1
sry für meine frage würde es aber gerne voll und ganz begreifen damit das für mich abgeschlossen ist.
stifflersmom - Do 17.11.05 18:55
Na ja, IP ist eine Stringlist und die Items in einer StringList sind "0"-basierend wie Du schon festgestellt hast.
Die Count-Eigenschaft ist allerdings NICHT "0"-basierend und deshalb zählt man mit
Delphi-Quelltext
1:
| for i :=0 to MeinerStringlist.Items.Count -1 |
Alles klar?
Constan - Do 17.11.05 19:10
Mein Quelltext sieht jetzt so aus nur liest er den dritten wert aus und nicht den ersten. welche eigenschaft muss man da ändern um andere auszulesen? und wie kommt er auf 3?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| procedure TForm1.Button1Click(Sender: TObject); var IniFile: TMemIniFile; IP: TStringList; Name: TStringList; I: Integer; begin try IniFile := TMemIniFile.Create('C:\e.ini'); IP := TStringList.Create; Name := TStringList.Create; try IniFile.ReadSectionValues('IP', IP); IniFile.ReadSectionValues('Name', Name); if (IP.Count > 0) and (IP.Count = Name.Count) then for I := 0 to IP.Count - 1 do Label1.Caption :=(Name[I] + ' hat die IP: ' + IP[I]); finally IP.Free; Name.Free; IniFile.Free; end; except end; end; |
stifflersmom - Do 17.11.05 19:26
Ganz einfach, mit Deinem Code
Delphi-Quelltext
1: 2:
| for I := 0 to IP.Count - 1 do Label1.Caption :=(Name[I] + ' hat die IP: ' + IP[I]); |
wird der Inhalt des Labels immer ÜBERSCHRIEBEN, und so bleibt eben nur der letzte Wert stehen.
Moin
Constan - Do 17.11.05 20:13
und wie muss ich es schreiben das er exakt wert X nehmen soll und diesen auch dann ins label einträgt ohne weiterzu laufen?
Constan - Fr 18.11.05 16:09
sry aber bei mir kommt immer 3 raus und wenn ich eine andere zahl änder zb die 1 dann stürtzt alles ab.
stifflersmom - Fr 18.11.05 18:18
Tut mir leid, ich verstehe jetzt nicht genau, was Du eigentlich willst.
Du kannst doch den Index des Elements, das Du ahebn willst, direkt angeben.
Soll in Label1 der erste Wert stehen, dann schreibst Du eben:
Delphi-Quelltext
1:
| Label1.Caption :=(Name[0] + ' hat die IP: ' + IP[0]); |
und das war's.
Moin
MSCH - Fr 18.11.05 19:37
hmmm,
ad 1 deine Ini-Datei ist keine :-),
da diese immer dem Schema-Folgt:
[Abschnitt]
Variable=Wert
In deinem Falle wäre
[IP]
0=192.168.1.10
1=192.168.1.11
2=192.168.1.14
[Name]
0=Dennis
1=Georg
2=Peter
die korrekte Darstellung. Sei's drum.
Anschließend nur ReadSektion() draufgehen und fertig.
like
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| var Sec,List:TStringList; I:Integer; begin S:= TStringList.Create; Ini.ReadSection('IP',S); List:= TStringList.Create; for I:=0 to S.Count-1 do List.add(Ini.ReadString('IP',S[i],'')); S.Free; ... |
grez
msch
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!