Avatar billede Bjarne Novice
05. marts 2007 - 16:16 Der er 9 kommentarer og
2 løsninger

Downloade fil fra internettet

Goddag.

Jeg vil gerne hente en tekstfil fra internettet vha. et delphi-program. Jeg har fundet følgende kode i en anden tråd her på eksperten:

function GetInetFile(const fileURL, FileName: String): boolean;
const BufferSize = 1024;
var
  hSession, hURL: HInternet;
  Buffer: array[1..BufferSize] of Byte;
  BufferLen: DWORD;
  f: File;
  sAppName: string;
begin
Result:=False;
sAppName := ExtractFileName(Application.ExeName);
hSession := InternetOpen(PChar(sAppName),INTERNET_OPEN_TYPE_PRECONFIG,nil, nil, 0);
try
  hURL := InternetOpenURL(hSession,PChar(fileURL),nil,0,0,0);
  try
  AssignFile(f, FileName);
  Rewrite(f,1);
  repeat
    InternetReadFile(hURL, @Buffer,SizeOf(Buffer), BufferLen);
    BlockWrite(f, Buffer, BufferLen)
  until BufferLen = 0;
  CloseFile(f);
  Result:=True;
  finally
  InternetCloseHandle(hURL)
  end
finally
  InternetCloseHandle(hSession)
end
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
GetInetFile('http://www.MinSide.dk/MinFil.txt','c:\MinFil.txt');
end;

Når jeg forsøger at compile, får jeg følgende fejl:

[Error] Unit1.pas(29): Undeclared identifier: 'Hinternet'
[Error] Unit1.pas(37): Undeclared identifier: 'InternetOpen'
[Error] Unit1.pas(37): Undeclared identifier: 'INTERNET_OPEN_TYPE_PRECONFIG'
[Error] Unit1.pas(39): Undeclared identifier: 'InternetOpenUrl'
[Error] Unit1.pas(44): Undeclared identifier: 'InternetReadFile'
[Error] Unit1.pas(50): Undeclared identifier: 'InternetCloseHandle'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

Jeg bruger Delphi 7. Er der en som kan se hvad der er galt, eller eventuelt har noget andet fungerende kode liggende?

På forhånd tak
Avatar billede kroning Nybegynder
05. marts 2007 - 16:30 #1
Hvorfor ikke benytte Indy komponenenter, så kan det klares med 1 linie:

IdHTTP.Get('http://www.MinSide.dk/MinFil.txt');
Avatar billede Bjarne Novice
05. marts 2007 - 17:12 #2
Det vil jeg da meget gerne.. Er der et komponent som skal installeres, eller hvordan fungerer ham "Indy"?
Avatar billede kroning Nybegynder
05. marts 2007 - 18:08 #3
Den er installeret i Delphi 7, muligvis ikke hvis du bruger personel. Men så kan den hentes her, og det er ganske gratis.
http://www.indyproject.org/
Avatar billede stone Forsker
05. marts 2007 - 20:40 #4
Tilføj wininet til USES er fejlene væk...
Avatar billede Bjarne Novice
05. marts 2007 - 23:38 #5
wininet fjernede fejlene, men den virker ikke rigtig efter at man downloader fil nummer to.
Er der en som vil give et eksempel på, hvordan man downloader en fil og gemmer dem på harddisken vha. Indy?
Avatar billede kroning Nybegynder
06. marts 2007 - 00:06 #6
Smid en TIdHTTP på din form og kald den IdHTTP1

var
    Tekst : TStringList;
begin
    Tekst:=TStringList.Create;
    Tekst.Text:=IdHTTP1.Get('http://www.MinSide.dk/MinFil.txt');
  Tekst.SaveToFile('c:\MinFil.txt');
end;
Avatar billede Bjarne Novice
06. marts 2007 - 00:14 #7
"Smid en TIdHTTP på din form og kald den IdHTTP1" - vil du ikke lige uddybe det? Er nybegynder i Delphi.
Avatar billede stone Forsker
06. marts 2007 - 08:21 #8
TIdHTTP er en component som du finder på fanebladet "indy"

efter du har indsat componentet på din form omdøber du componentet til IdHTTP1 under properties (venstre side)  gå ned til navn og skriv ændringen.
Avatar billede Bjarne Novice
06. marts 2007 - 17:37 #9
Kroning: Tak det virker perfekt.
Stone: Tak det hjalp.

Smid et svar, hvis I vil have point.
Avatar billede kroning Nybegynder
06. marts 2007 - 17:50 #10
k
Avatar billede stone Forsker
06. marts 2007 - 18:24 #11
tax
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