Autor Beitrag
Constan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 80

Win XP, Suse 10.1
Delphi 7
BeitragVerfasst: Do 17.11.05 00:12 
Falls wieder jemand meckert ja ich habe gesucht.

Ich habe eine INI mit den Inhalten
ausblenden 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
ausblenden 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?
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Do 17.11.05 00:38 
user profile iconConstan hat folgendes geschrieben:
Ich habe eine INI mit den Inhalten
ausblenden 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.

ausblenden volle Höhe 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 > 0and (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.

_________________
Ciao, Sprint.
Constan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 80

Win XP, Suse 10.1
Delphi 7
BeitragVerfasst: Do 17.11.05 18:22 
Aha ok nur mal zum verständnis

ausblenden Delphi-Quelltext
1:
2:
        if (IP.Count > 0and (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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194

XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
BeitragVerfasst: 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
ausblenden Delphi-Quelltext
1:
for i :=0 to MeinerStringlist.Items.Count -1					


Alles klar?
Constan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 80

Win XP, Suse 10.1
Delphi 7
BeitragVerfasst: 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?

ausblenden 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 > 0and (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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194

XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
BeitragVerfasst: Do 17.11.05 19:26 
Ganz einfach, mit Deinem Code

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 80

Win XP, Suse 10.1
Delphi 7
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 80

Win XP, Suse 10.1
Delphi 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194

XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
Label1.Caption :=(Name[0] + ' hat die IP: ' + IP[0]);					

und das war's.

Moin
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: 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
ausblenden 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;
  // List enhält jetzt alle Einträge 0..2 der IPs
  ...


grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?