Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Delphi x64
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.01.2023, 18:45
leon2009 leon2009 вне форума
Новичок
 
Регистрация: 18.03.2009
Сообщения: 71
Репутация: 10
Сообщение как прописать в 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;
здесь устраивает сама загрузка из файла, НО не устраивает как это показано в 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
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:02.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter