Avatar billede friiiiis Novice
12. marts 2005 - 13:27 Der er 4 kommentarer og
1 løsning

Fejlmeddelelse v/ "closefile(F)" ved downloadning af fil via HTTP

Hej,

jeg får en fejlmeddelelse i næst nederste kodelinie "CloseFile(F)" - Hvad gør jeg galt...??

function TMainFunctionForm.DownloadURL(const aUrl: string): Boolean;
var
  hSession: HINTERNET;
  hService: HINTERNET;
  lpBuffer: array[0..1024 + 1] of Char;
  dwBytesRead,akk,dwindex,dwcodelen: DWORD;
  LocalFile:string;
  F : File;
  filesize : DWord;
  dwcode:pointer;
  res : pchar;
begin
  Result := False;
  LocalFile := 'C:\akljsdh.avi';
  Assignfile(F,LocalFile);
  Rewrite(F,1);
  akk := 0;
  dwcodeLen := 20;
  dwIndex := 0;
  hSession := InternetOpen('alds', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);

  try
    if Assigned(hSession) then
    begin
      hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, INTERNET_FLAG_RELOAD, 0);
      HttpQueryInfo(hService, HTTP_QUERY_CONTENT_LENGTH, @dwcode, dwcodeLen, dwIndex);
      res := pchar(@dwcode);
      edit1.text := res;
      filesize := StrToInt(res);
      if Assigned(hService) then
      begin
        Application.processmessages;
        try
          while True do
          begin
            dwBytesRead := 1024;
            InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead);
            BlockWrite(F, lpbuffer, dwBytesRead);
            if dwBytesRead = 0 then break;
            akk := akk + dwBytesRead;
            Application.ProcessMessages;
            ProgressBar1.Position := Round(akk/filesize * 100);
          end;
          Result := True;
        finally
          InternetCloseHandle(hService);
        end;
      end;
    end;
  finally
    InternetCloseHandle(hSession);
  end;
  CloseFile(F);
end;
Avatar billede roz Nybegynder
12. marts 2005 - 14:55 #1
Hvad siger fejlen?
Avatar billede friiiiis Novice
12. marts 2005 - 15:06 #2
der kommer ingen fejlmedelelse i form af en dialogbox... bare en windows lyd som indikere at der er sket en fejl...
Avatar billede doc404 Novice
12. marts 2005 - 22:29 #3
Du bruger nogle parametre galt..

dwcode skal være en buffer resultatet kan afleveres i og dwcodelen skal indeholde længden af bufferen. Du bruger en pointer som buffer! Den fylder 4 bytes, så et eller andet bliver overskrevet - og det crasher..

HttpQueryInfo(hService, HTTP_QUERY_CONTENT_LENGTH, @dwcode, dwcodeLen, dwIndex);
      res := pchar(@dwcode);

Skift det ud med:

HttpQueryInfo(hService, HTTP_QUERY_CONTENT_LENGTH, @lpBuffer, dwcodeLen, dwIndex);
edit1.text := lpBuffer;
filesize := StrToInt(lpBuffer);
Avatar billede friiiiis Novice
12. marts 2005 - 23:06 #4
DET virkede!!! MANGE MANGE tak for hjælpen - Koden skal bruges til noget automatisk opdatering af et program, så det var lidt kritisk da det ikke virkede...
Avatar billede friiiiis Novice
12. marts 2005 - 23:08 #5
Hvis du også lige sender et svar til spøgsmålet herunder, så kan du lige så godt også få de 100 point... - endnu en gang tak for hjælpen...

http://www.eksperten.dk/spm/599356
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester