|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
как прописать в DLL код загрузки
Здравствуйте! как процедуру упаковать в dll на 64б D11 Alex
под 32б работает отлично, но на 64б пишет не найдет файл. может и сам код устарел.? нужно чтобы большой файл (огромный), загружался в memo и это отображалась в progressbar пр: Код:
procedure TForm1.LoadFile(const FileName: string); const BufferSize = 65536; var StrBuffer: array[0..BufferSize - 1] of Char; F: file; MemoryStream: TMemoryStream; Result, Max, Curr, Progress: Integer; begin AssignFile(F, FileName); Reset(F, 1); Curr := 0; Max := FileSize(F) div BufferSize + 1; MemoryStream := TMemoryStream.Create; try repeat BlockRead(F, StrBuffer, BufferSize, Result); MemoryStream.Write(StrBuffer, Result); Inc(Curr); Progress := Curr * 100 div Max; ProgressBar1.Position := Progress; Application.ProcessMessages; until Result <= 0; MemoryStream.Seek(0, soBeginning); Memo1.Lines.LoadFromStream(MemoryStream); finally MemoryStream.Free; end; CloseFile(F); ProgressBar1.Position := 0; form1.Caption:= ' Super_dll' + inttostr(Memo1.Lines.Count); Button1.Enabled:=true; // form1.progressbar4.Position:=0; end; таким же образом можно : Код:
function GetFileSize(FileName: string): Int64; var f:TMemoryStream;SizeOfApp: Int64; begin F:=TMemoryStream.Create; try F.LoadFromFile(FileName); form1.ProgressBar1.Max:=F.Size; form1.ProgressBar1.Position:=F.Size; form1.memo1.Lines.LoadFromStream(f); // F.Seek(0, soBeginning); finally form1.Caption:= inttostr(SizeOfApp); F.Free; end; end; Может кто подсказать как это сделать по байтам. пр: файл весит 500кб значит progressbar.max=500; и кусками загружать с отображением сколько байт загрузилось .... НЕ Progressbar=progressbar+1 |