Letöltésprogramozás

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