![]() |
|
#1
|
||||
|
||||
![]() Есть ли какой нибудь исходник для работы с файлами которые находятся в интернете? Работать как с TStream, там Seek CopyFrom Read Write... нужно для многопоточной закачки файла, как в Download Master
TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#2
|
||||
|
||||
![]() Тебя разделом "Исходники" данного сайта пользоваться научить?
тут посмотри, похоже, то что тебе надо. Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
||||
|
||||
![]() Цитата:
зы: и нефига дутся, невывезбы я такое сразу TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#4
|
||||
|
||||
![]() хм, люди памагите, хочу получить размер файла из интернета, пишу
Код:
var url,sess: HINTERNET; begin lblUrlSize.Caption := '0'; sess := InternetOpen('iexplorer',INTERNET_OPEN_TYPE_PRECONFIG, nil,nil,0); url := InternetOpenUrl(sess,pchar('http://'+edtUrl.Text),nil,0,0,0); try // working if(url=nil)then Exit; fs := InternetSetFilePointer(url,0,nil,FILE_END,0); lblUrlSize.Caption := FloatToStr(fs)+' bytes'; finally InternetCloseHandle(url); InternetCloseHandle(sess); end; Вот например файл со своего сайта (adworld.ucoz.ru/adworld_soft/quick_menu/QM_13.exe, весит 500 с лишним кб) он пооказывает цифру 4,294,967,295. Я ваще запутался, помогите TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#5
|
||||
|
||||
![]() Цитата:
![]() TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#6
|
||||
|
||||
![]() Тут вот посидел пол часика и сделал его, TNetStream! Для отцов паскаля это не новость, но для меня это маленькая победа
![]() Код:
unit NetStream; interface uses Windows, WinInet, Classes; type EInternetStreamError = EStreamError; TNetStream = class(TStream) private fFile, fSession: HINTERNET; public constructor Create(AUrl: String; AUser: String = ''; APass: String = ''); destructor Destroy; override; function Read(var Buffer; Count: Longint): Longint; override; function Write(const Buffer; Count: Longint): Longint; override; function Seek(Offset: Longint; Origin: Word): Longint; overload;override; function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; overload; override; end; implementation constructor TNetStream.Create(AUrl: String; AUser: String = ''; APass: String = ''); begin inherited Create; fSession := InternetOpen(pchar('iexplorer'),INTERNET_OPEN_TYPE_PRECONFIG,nil, nil,INTERNET_FLAG_NEED_FILE); if(fSession=nil)then raise EInternetStreamError.Create('Session can''t create'); fFile := InternetOpenUrl(fSession,pchar(AUrl),nil,0,INTERNET_FLAG_NEED_FILE,0); if(fFile=nil)then raise EInternetStreamError.Create('File not found'); end; destructor TNetStream.Destroy; begin InternetCloseHandle(fFile); InternetCloseHandle(fSession); inherited Destroy; end; function TNetStream.Read(var Buffer; Count: Longint): Longint; var r: Cardinal; begin InternetReadFile(fFile,@Buffer,Count,r); Result := r; end; function TNetStream.Write(const Buffer; Count: Longint): Longint; var r: Cardinal; begin InternetWriteFile(fFile,@Buffer,Count,r); Result := r; end; function TNetStream.Seek(Offset: Longint; Origin: Word): Longint; var mm: Cardinal; begin case Origin of soFromBeginning: mm := FILE_BEGIN; soFromCurrent: mm := FILE_CURRENT; soFromEnd: mm := FILE_END; else mm := FILE_CURRENT; end; Result := InternetSetFilePointer(fFile,Offset,nil,mm,0); end; function TNetStream.Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; var mm: Cardinal; begin case Origin of soBeginning: mm := FILE_BEGIN; soCurrent: mm := FILE_CURRENT; soEnd: mm := FILE_END; else mm := FILE_CURRENT; end; Result := InternetSetFilePointer(fFile,Offset,nil,mm,0); end; end. ![]() TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#7
|
||||
|
||||
![]() и снова помогите, со всем что выше мною написано разобрался, теперь проблема в следующем: качаю файл... приостановил, потом при возобновлении он долго думает и минуты через 2 начинает докачивать, в DM он намного шустрее думает, есть решение?
TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |