Autor |
Beitrag |
Constan
      
Beiträge: 80
Win XP, Suse 10.1
Delphi 7
|
Verfasst: Do 17.11.05 00:12
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
      
Beiträge: 849
|
Verfasst: Do 17.11.05 00:38
_________________ Ciao, Sprint.
|
|
Constan 
      
Beiträge: 80
Win XP, Suse 10.1
Delphi 7
|
Verfasst: 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
      
Beiträge: 194
XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
|
Verfasst: 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 
      
Beiträge: 80
Win XP, Suse 10.1
Delphi 7
|
Verfasst: 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
      
Beiträge: 194
XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
|
Verfasst: 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 
      
Beiträge: 80
Win XP, Suse 10.1
Delphi 7
|
Verfasst: 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 
      
Beiträge: 80
Win XP, Suse 10.1
Delphi 7
|
Verfasst: 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
      
Beiträge: 194
XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
|
Verfasst: 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
      
Beiträge: 1448
Erhaltene Danke: 3
W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
|
Verfasst: 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
_________________ ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
|
|