Problemy częściowo zwiazane z ini :D

0

Tworze program do katalogowania stron www w oparciu na plikach INI ( wiem że to <font color="red">marnotrastwo</span> pamięci i czasu). Po kliknięciu w listboksie na pozycje otwiera się strona w porzeglądarce internetowej. Aby <font color="red">użytkownik</span> mógł sobie wybrać w jakiej przeglądarce ma się otwierać strona dodałem w innym pliku INI lokalizacje do Przeglądarki. I natrafiłem na problem. Kliknięcie na pozycje powoduje błąd. Co jest nie tak w tym kodzie ?

procedure TForm1.ListBox1DblClick(Sender: TObject);
var INI : TINIFile;
P : PChar;
esa : String;
begin
INI := TINIFile.Create('Bazmo.baz'); //wczytanie do ListBoxa sekcji głownych adresów
DirI := TINIFile.Create('Bazconfig.pro'); // wczytanie pliku z konfiguracją programu
esa := DirI.ReadString('Explorer','dir',''); // przydzielenie lokalizacji programu internetowego do zmiennej
try
P := PChar('http:'+INI.ReadString(ListBox1.Items[ListBox1.ItemIndex], 'www', ''));
ShellExecute(Handle,'open',esa,PChar(P), nil, SW_SHOW);
finally
INI.Free;
end;
end;

Przepraszam, że ten kod jest napisany niepoprawnie. z góry dzięki za pomoc i chęci w poprawieniu tego [cya] [cya] [cya]

0

procedure TForm1.ListBox1DblClick(Sender: TObject);
var INI : TINIFile;
P : PChar;
esa : String;
begin
INI := TINIFile.Create('Bazmo.baz'); //wczytanie do ListBoxa sekcji głownych adresów
DirI := TINIFile.Create('Bazconfig.pro'); // wczytanie pliku z konfiguracją programu
esa := DirI.ReadString('Explorer','dir',''); // przydzielenie lokalizacji programu internetowego do zmiennej

A gdzie:

esa:=TIniFile.Create

I ponadto pamiętaj o tym, że tyle razy, ile 'tworzysz' plik ini, tyle samo razy musi być free.

To raz... Druga sprawa to: Po kiego ładujesz do ini adresy www???
Lepiej to zrobić w innym zwykłym nawet tekstowym pliku.

0

To raz... Druga sprawa to: Po kiego ładujesz do ini adresy www???
Lepiej to zrobić w innym zwykłym nawet tekstowym pliku.
A jak inaczej moge zapisywać i odczytywać wpisy z pliku ? Z plikami typowymi nie moge sobie poradzić.

W jaki sposób moge taki adres ładować ze zwykłego pliku ??
:D :D :D :D :D :D :D :D :D :D :D :D

0

W jaki sposób moge taki adres ładować ze zwykłego pliku ??
:D :D :D :D :D :D :D :D :D :D :D :D

Normalnie ;)

Do tego służy instrukcja: readln(zmienna_plikowa, zmienna_pod_ktora_Zapisac_wartosc_z_pliku);

poczytaj o plikach tekstowych...

0

A gdzie:

esa:=TIniFile.Create

Szczególnie, że:
esa: string :)

0

Juhas ta twoja poprawka ni działa, nie wiem dlaczego. Może coś z tym innego trzeba zrobić :D

0

DirI := TINIFile.Create('Bazconfig.pro'); // wczytanie pliku z

Skad sie wzielo DirI ?? zadeklarowane jako zmienna globalna ?? hm...

INI := TINIFile.Create('Bazmo.baz'); // wczytanie do ListBoxa sekcji głownych adresów
DirI := TINIFile.Create('Bazconfig.pro'); // wczytanie pliku z konfiguracją programu

Przeciez te 2 linijki nic nie wczytuja !

Opisz dokladnie co ma robic ta procedura to postaram sie napisac kod.

0

Opisz dokladnie co ma robic ta procedura to postaram sie napisac kod.

Program ma pobierać z jednego pliku INI adresy stron internetowych (bazmo.baz) i wstawiać nazwy sekcji do komponentu list box. Po kliknięciu na ListBoksa otwierana jest przeglądarka z wybraną stroną internetowa.
Aby użytkownik mógł zobie zmienić przeglodarke stron www w której ma być otwierana strona z pliku Bazconfig.pro funkcja miała być pobrana lokalizacja przeglondarki. (karzda osoba ktróra chciałaby sobie zmienić przeglondarke muisałaby tylko zmienic jeden wpis).

wygląd pliku bazmo.baz

[wyświetlana nazwa strony]
www= adres strony interetowej
opi= opis strony/ luźne notatki do niej (tą pozycje można pominąć)

naprzykład
[ portal internetowy]
www.onet.plet.pl
opi= To jest portal internetowy z bardzo fajnymi skrzynkami pocztowymi

wyglą pliku Bazconfig.pro
[Explorer]
dir= dokładna ścierzka dostępu do przegondarki

Mam nadzieje że rozjaśniłem sprawe [cya] [cya]

0

Tak rozjasniles. Ale ja proponuje zrobic to na jednym INI.
Przykad:

[Serwis 4programmers]
www.4programmers.net.net
viewer=explorer.exe
opis=super stronka o programowaniu

Sciezka do przegladarki powinna byc pelna ale w wypadku explorera nie musi byc.

i kod:

var
Ini: TIniFile;

procedure TForm1.FormCreate(Sender: TObject);
begin

// tworzymy INI i wczytujemy stronki
Ini := TIniFile.Create('c:\bazmo.baz');
Ini.ReadSections(ListBox.Items);

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin

// oczywiscie trzeba zwolnic pamiec
Ini.Free;

end;

procedure TForm1.ListBoxDblClick(Sender: TObject);
var
Viewer, Section: String;

begin

// nazwa sekcji w INI (nazwa wyswietlana)
Section := ListBox.Items.Strings[ListBox.ItemIndex];
// wczytujemy sciezke do przegladarki,
// domyslna przegladarka niech bedzie IE
Viewer := Ini.ReadString(Section, 'viewer', 'explorer.exe');

ShellExecute(Handle, 'open', PChar(ExtractFilename(Viewer)),
PChar('http://'+Ini.ReadString(Section, 'www', '')),
PChar(ExtractFileDir(Viewer)), SW_SHOWNORMAL);

end;

0

Juhas ta twoja poprawka ni działa, nie wiem dlaczego. Może coś z tym innego trzeba zrobić :D

A pokaż jaki masz kod... Czytałeś w ogóle o plikach tekstowych?

0

Dzięki MatroX twoje rozwiązane jest super :d i bardzo dobrze działa. Te błędy w kodzie są wynikiem mojego małego niechlujsctwa.
Wisze ci dużego [browar]

[cya] [cya] [cya]

1 użytkowników online, w tym zalogowanych: 0, gości: 1