Здравствуйте! как процедуру упаковать в 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;
здесь устраивает сама загрузка из файла, НО
не устраивает как это показано в progressbar
таким же образом можно :
Код:
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