ďťż

Ładny brzuch

[Przedrostek to DELPHI tylko sie nie zmieścił]

Witam.
Mam taką procedurę:

procedure TForm1.ListBox1DblClick(Sender: TObject);
var Plik : TIniFile;
begin
Plik:=TIniFIle.Create (ListBox1.Items.);
Form3.Edit1.Text:=Plik.ReadString('main', 'Serwer', Form3.Edit1.Text);
Form3.Show;
end;

I co ma być w podkreślonym miejscu,
aby plikiem INI z którego będą odczytywane dane była nazwa aktualnie zaznaczonego pliku w ListBox1.

Pliki do ListBox1 dodaję za pomocą procedury:

procedure TForm1.Button3Click(Sender: TObject);
var
SR : TSearchRec;
Found : Integer; // liczba znalezionych plikow
begin
Found := FindFirst('*.ini', faAnyFile, SR); // odnajdz
while (Found = 0) do // dopoki liczba znalezionych plikow nie
// bedzie rowna 0
begin
ListBox1.Clear;
ListBox1.Items.Add(SR.Name ); // dodaj do ListBox1 znaleziony plik
Found := FindNext(SR); // szukaj dalej
end;
FindClose(SR); // zakoncz wyszukowanie
end;

Proszę o pomoc i pozro,
gonet99
Użytkownik gonet9 edytował ten post 02 lipiec 2006, 12:30


for i:=listbox1.items.count-1 downto 0 do

if listbox1.selected[i] then
Plik:=TIniFIle.Create (ListBox1.Items[i].);

Powinno działać, ale nie testowane.

OK, tylko że ten kod mi jakoś nie działa. CO jest w nim źle??
procedure TForm1.ListBox1DblClick(Sender: TObject);
var
Plik : TIniFile;
i : Integer;
begin
for i:=listbox1.items.count-1 downto 0 do

if listbox1.selected[i] then
Plik:=TIniFIle.Create (ListBox1.Items[i]);
Form3.Edit1.Text:=Plik.ReadString('main', 'Serwer', Form3.Edit1.Text);
Form3.Show;
end;

(Musi wszytsać wartość z sekcji main, klucz Serwer, [Ten zapis to 192.168.1.133], a później ma otworzyć Form3)

procedure TForm1.ListBox1DblClick(Sender: TObject); var Plik : TIniFile; i : Integer; begin for i:=listbox1.items.count-1 downto 0 do if listbox1.selected[i] then begin Plik:=TIniFIle.Create (ListBox1.Items[i]); Form3.Edit1.Text:=Plik.ReadString('main', 'Serwer', Form3.Edit1.Text); Form3.Show; Pilk.Free; end; end;
// na przyszłość pisz dlaczego nie działa - jaki błąd ;)
Użytkownik lukexpert edytował ten post 02 lipiec 2006, 12:41


A gdzie zapisujesz do pliku INI dane??:|

PLik INI narazie robię ręcznie, a wygląda on tak:
[main]
Serwer=192.168.1.255

Chyba niepotrzebnie dajecie wszystko w pętlę. Można prościej:

if ListBox1.ItemIndex < 0 then  EXIT;  Plik:=TIniFIle.Create(ListBox1.Items[ListBox1.ItemIndex]);  try    Form3.Edit1.Text:=Plik.ReadString('main', 'Serwer', Form3.Edit1.Text);  finally    Plik.free;  end;  Form3.Show;
Użytkownik p1101 edytował ten post 02 lipiec 2006, 16:23
Ale to jest pokrecone :)
Użytkownik angelo edytował ten post 02 lipiec 2006, 18:32
procedure TForm1.ListBox1DblClick(Sender: TObject); var Plik : TIniFile; i : Integer; begin for i:=listbox1.items.count-1 downto 0 do if listbox1.selected[i] then begin Plik:=TIniFIle.Create (ListBox1.Items[i]+'.ini'); try Form3.Edit1.Text:=Plik.ReadString('main', 'Serwer', ''); Form3.Show; finally Pilk.Free; end; end;
Teraz powinno działać:). A jeżeli pliki INI są tam gdzie projekt ,a chyba tak ma byc to musi przy tworzeniu byc nie

Plik:=TIniFIle.Create (ListBox1.Items[i]+'.ini'); ale Plik:=TIniFIle.Create (ExtractFilePath(Application.ExeName)+ListBox1.Items[i]+'.ini');
Taki OT, ale nie mogę się powstrzymać co wnosi ten post wyżej do tematu?.....
Użytkownik MAtifreeman edytował ten post 02 lipiec 2006, 18:59
nie wiem czemu ale to dalej nie działa. Wypełnia jedynie to pole tak: " "
(wartość domyślna jeśli plik/wartość nie zostanie odczytany)

A jeśli zmienisz na readInteger??Albo zrób readFloat może jako taką liczbe to potraktuje:).
Użytkownik MAtifreeman edytował ten post 02 lipiec 2006, 19:16
NIe działa :(
[Error] Unit1.pas(89): Incompatible types: 'Integer' and 'TCaption'

No to daj IntToStr(tutaj umieszczasz tego integera);

A myślisz że nie próbowałem??

To jak narazie nie używasz tego swojego kodu z dodawaniem który pokazałeś na początku??wiesz tego z button3.Click??

edit:
Ok, zobaczyłem w jaki sposób dodajesz pliki do ListBox.

Wczytywanie:
procedure TForm1.ListBox1DblClick(Sender: TObject); var Plik: TINIFile; begin if ListBox1.ItemIndex < 0 then EXIT; Plik:=TIniFIle.Create(ExtractFilePath(Application.ExeName) + ListBox1.Items[ListBox1.ItemIndex]); try   Form3.Edit1.Text:=Plik.ReadString('main', 'Serwer', 'wartosc domyslna'); finally   Plik.free; end; Form3.Show; end;

A w ładowaniu plików usuń ListBox1.Clear; z pętli i wstaw to na poczatku procedury, bo jak narazie to zawartość ListBoxa jest czyszczona po każdym przebiegu, przez co dodaje tylko ostatni plik jaki znajdzie.

Działa na 100% bo sprawdzałem u siebie.
Użytkownik p1101 edytował ten post 02 lipiec 2006, 19:52
Dzięki @p1101,Bozia Ci to w dzieciach wynagrodzi. Dzięki dzięki dzięki i jeszcze raz dzięki.

PS: Mam kod:

procedure TForm2.Button1Click(Sender: TObject);
var Plik : TIniFile;
begin
Plik:=TIniFile.Create (Edit2.Text + '.ini');
Plik.WriteString ('socket', 'serwer', Edit1.Text);
Plik.WriteString ('ftp', 'host', Edit3.Text);
Plik.WriteString ('ftp', 'login', Edit4.Text);
Plik.WriteString ('ftp', 'hasło', Edit5.Text);
Plik.Free;
Form2.Close;
end;

i czemu on nie tworzy automatycznie pliku ini o nazwie np. blablabla.ini?? CO zeobić, żeby go utworzył??
Użytkownik gonet9 edytował ten post 02 lipiec 2006, 20:07
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •