witam,
wie ktoś może, jak to uczynić?
wiem jedynie przez indy (GET) pobrać tekst... np: do memorystream ale wazne dla mnie zeby to byl obrazek i zeby nie bylo go widac na dysku...
witam,
wie ktoś może, jak to uczynić?
wiem jedynie przez indy (GET) pobrać tekst... np: do memorystream ale wazne dla mnie zeby to byl obrazek i zeby nie bylo go widac na dysku...
Wszystkie pliki na stronie sa kopiowane to twojej pamieci cache przegladarki. Nie da sie prosto z ftp/http wyswietlic obrazki.
Chyba musisz najpierw sciagnac obrazek, a nastepnie dac do image
{Modyfikacja kodu Adama Boducha z Listingu 11 Kompendium}
uses WinInet;
procedure Download(const URL: String; var Memory:TMemoryStream);
var
Buffer : array[1..1024] of Byte; // bufor zawierający ściągnięty fragment pliku
hSession, hURL : HINTERNET;
dwRead : DWORD; // ilość odczytanych danych
dwSize : DWORD; // rozmiar pliku
pBuf : Pointer;
dwBufLen : DWORD;
dwIndex : DWORD;
begin
{ otwieranie połączenia }
hSession := InternetOpen('Fast Download',
INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
Application.ProcessMessages;
try
{ otwarcie podanego adresu URL }
hURL := InternetOpenURL(hSession, PChar(URL), nil, 0, 0, 0);
Application.ProcessMessages;
dwBufLen := 1024;
dwIndex := 0;
GetMem(pBuf, dwBufLen);
{ pobranie informacji na temat wielkości pliku }
HttpQueryInfo(hURL, HTTP_QUERY_CONTENT_LENGTH,
pBuf, dwBufLen, dwIndex);
dwSize := StrToInt(StrPas(pBuf)); {zmienna dwSize zawiera rozmiar Pliku}
FreeMem(pBuf, dwBufLen);
try
Memory:=TMemoryStream.Create;
try
Memory.Position :=0;
Memory.Size :=DwSize;
repeat
{ pobieranie kolejnych fragmentów pliku }
InternetReadFile(hURL, @Buffer, SizeOf(Buffer), dwRead);
Memory.WriteBuffer( Buffer, dwRead); // zapisanie buforu do pliku
Application.ProcessMessages;
until dwRead = 0;
finally
Memory.Position :=0;
end;
finally
InternetCloseHandle(hSession);
end;
finally
InternetCloseHandle(hURL);
end;
end;
i gdzieś w kodzie
var
MS:TMemoryStream;
Rysunek:TJpegImage; {do uses jpeg}
procedure TMainForm.btnDownloadClick(Sender: TObject);
begin
MS:=TMemoryStream.Create;
Download('http://helion.pl/okladki/65x85/wstpch.jpg', MS);
Rysunek:=TJpegImage.Create;
Rysunek.LoadFromStream(MS);
MS.Free;
Image1.Picture.Assign(Rysunek);
Rysunek.Free;
end;
;-P
piękne dzięki Piotrekdp [browar]
mam coś podobnego ale z tekstowymi pliczkami i nie bardzo wiedziałem co z tym zrobić ;)
dokładnie o to mi chodziło ;)