A programkészítés
során sokszor előfordul, hogy egy állományt – dokumentumot, program
frissítést, stb. – kell letölteni az internetről. Az alábbiakban
ismertetett eljárással, mindezt könnyen és gyorsan megoldhatjuk.
Alapötlet:
Készítsünk egy
olyan programot, ami letölti az általunk megadott web helyről egy
számunkra szükséges állományt. Mivel sokszor előfordul, hogy
különböző helyről kell állományokat letölteni, ezért a programhoz
készítünk egy paraméter állományt, melyben leírjuk, mely helyről hova
szeretnénk az állományt letölteni. Így a programunkat minden esetben
paraméterrel kell meghívni.
Paraméter állomány felépítése:
1.sor
letöltendő állomány helye és neve. Pl.: http://www.innen.hu/letoltendo.zip
2.sor helyi
meghajtón lévő elérési út állomány névvel. Pl.:c:\letoltott.zip
A példa magját az
URLMON unitban található UrlDownloadToFile függvény tartalmazza.
UrlDownloadToFile(nil, PChar(Forrás), PChar(Cél), 0, nil)
A függvény két
fontos paraméterrel rendelkezik az egyik a forrás –letöltendő- állomány
nevét a másik a cél állomány nevét tartalmazza. Természetesen teljes elérési
utat kell használni.
Most lássuk a példa programot:
A példa
folyamatként működik, de természetesen némi módosítással, a programban
használt függvény egy formra is feltehető.
Készítsünk egy függvényt
mely a UrlDownloadToFile függvényt használva ellenőrzi, a letöltés
sikerességét.
function
DownloadFile(SourceFile, DestFile: string): Boolean;
begin
try
Result := UrlDownloadToFile(nil,
PChar(SourceFile), PChar(DestFile), 0, nil) =
0;
except
Result := False;
end;
end;
A függvény igaz
(true) értékkel tér vissza, ha sikeres a letöltés, ellenkező esetben
természetesen hamis az érték (false).
Most nézzük a főprogramot:
Mivel a program
paraméterrel rendelkezik először
megnézzük, hogy a paramcount értéke mennyi. Ez a függvény adja vissza a
paraméterek számát. Ha 0 a visszatérési értéke azaz paraméter nélkül lett
elindítva a program, akkor megjelenik egy üzenet, melyben tájékoztatjuk a
felhasználót, hogy hibás a program indítása. Ha van paraméter, akkor azt
megnyitjük, mint ASCII állományt. Majd nagyon egyszerűen bolvassuk az
első két sorát az állománynak. Az 1. sor lesz a forrás - interneten-
lévő állomány neve a 2. sor a cél állomány neve. Ezekkel a paraméterekkel
hívjuk meg a DownloadFile függvényt. A fent említett módszer szerint jelezzük a
letöltés sikerességét vagy sikertelenségét.
if
paramcount=0 then
begin
MessageDlg('Nincs paraméter! (Pl.:
IDOWNLOAD PARAM.TXT)', mtError, [mbOk],0);
Application.Terminate;
end
else
begin
AssignFile(F, paramstr(1));
Reset(F);
Readln(F, S);
honnan:=s;
Readln(F, S);
hova:=s;
Readln(F, S);
CloseFile(F);
if
DownloadFile(honnan, hova) then
ShowMessage('Letöltés befejeződött!')
else
ShowMessage('Hiba a letöltésnél: ' + honnan+' !');
end;
A példa program
nem ellenőrzi a paraméterben lévő elérések tényleges helyességét,
valamint ha nincs Internet kapcsolat, akkor azt nem építi fel. Tehát a példa
használatakor is online módban kell lennünk.
Farkas
Szilárd - sziszi71@westel900.net