![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отображение большого файла
tttyu © (2005-08-04 10:23:00)У меня есть достаточно большой файл(не текстовый). Так вот после его загрузки в массив, происходит вывод его на экран, что идёт достаточно долго. Что можно сделать чтоб вывод шел быстрее. ТО есть например,кто работал с PonyProg'om, тот знает насколько быстро там грузятся файл огромные.
Спасибо
ЮЮ (2005-08-04 11:20:00) [1]Сколько долго?
Время не засекал, но срабатывает мгновенно на 700 Метровом файле:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
BUFFER_SIZE = 12000;
type
TForm1 = class(TForm)
Button1: TButton;
OpenDialog1: TOpenDialog;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
FStream: TFileStream;
FBuffer: array[0 ..BUFFER_SIZE - 1] of byte;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then begin
FreeAndNil(FStream);
FStream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
pos, cnt: Int64;
begin
if FStream = nil then exit;
pos := Random(FStream.Size);
FStream.Seek(pos, soFromBeginning);
cnt := FStream.Read(FBuffer, BUFFER_SIZE);
caption := IntToStr(pos) + ', ' + IntToStr(12000) + ', ' + IntToStr(cnt) end;
end.
tttyu (2005-08-04 11:01:00) [2]11kb
Да,это слишком долго,нужно быстрее
ЮЮ (2005-08-04 10:58:00) [3]>tttyu © (04.08.05 10:55) [4]
Сколько байт информации выводится на экран?
И что позиционирование в нужном месте и считывание этого количества занимает так много времени, чтобы усложнять себе жизнь?
tttyu (2005-08-04 10:55:00) [4]Ну хорошо, а имеет ли смысл скажем грузить вверх и вниз по несколько строчек от позиции скролл бара?
GLFox (2005-08-04 10:34:00) [5]Зависит от того, какими компонентами пользуешься и метод выгрузки. Короче, надо бы поподробнее...
ЮЮ (2005-08-04 10:33:00) [6]>Что можно сделать чтоб вывод шел быстрее
Мы же не знаем, что ты делаешь для того, чтобы вывод был такой медленный :)
Да и грузить весь файл смысла нет, достаточно лишь то, что видно на экране
palva (2005-08-04 10:31:00) [7]Можно грузить только ту часть файла, которая отображается на экране. Но это требует квалифицированного программирования типа страничной организации, подкачки страниц. Нужна также идейная проработка, которая зависит от предполагаемых действий пользователя при просмотре файла.