Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.21;
Скачать: CL | DM;

Вниз

Отображение большого файла   Найти похожие ветки 

 
tttyu ©   (2005-08-04 10:23) [0]

У меня есть достаточно большой файл(не текстовый). Так вот после его загрузки в массив, происходит вывод его на экран, что идёт достаточно долго. Что можно сделать чтоб вывод шел быстрее. ТО есть например,кто работал с PonyProg"om, тот знает насколько быстро там грузятся файл огромные.
Спасибо


 
palva ©   (2005-08-04 10:31) [1]

Можно грузить только ту часть файла, которая отображается на экране. Но это требует квалифицированного программирования типа страничной организации, подкачки страниц. Нужна также идейная проработка, которая зависит от предполагаемых действий пользователя при просмотре файла.


 
ЮЮ ©   (2005-08-04 10:33) [2]

>Что можно сделать чтоб вывод шел быстрее

Мы же не знаем, что ты делаешь для того, чтобы вывод был такой медленный :)

Да и грузить весь файл смысла нет, достаточно лишь то, что видно на экране


 
GLFox ©   (2005-08-04 10:34) [3]

Зависит от того, какими компонентами пользуешься и метод выгрузки. Короче, надо бы поподробнее...


 
tttyu ©   (2005-08-04 10:55) [4]

Ну хорошо, а имеет ли смысл скажем грузить вверх и вниз по несколько строчек от позиции скролл бара?


 
ЮЮ ©   (2005-08-04 10:58) [5]

>tttyu ©   (04.08.05 10:55) [4]
Сколько байт информации выводится на экран?
И что позиционирование в нужном месте и считывание этого количества занимает так много времени, чтобы усложнять себе жизнь?


 
tttyu ©   (2005-08-04 11:01) [6]

11kb
Да,это слишком долго,нужно быстрее


 
ЮЮ ©   (2005-08-04 11:20) [7]

Сколько долго?

Время не засекал, но срабатывает мгновенно на 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.



Страницы: 1 вся ветка

Текущий архив: 2005.08.21;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.024 c
1-1122542872
sunsay
2005-07-28 13:27
2005.08.21
Проблема с видимостью полей объекта


1-1122919832
kingdom
2005-08-01 22:10
2005.08.21
Выпадающее меню.


6-1115489058
Ландграф Павел
2005-05-07 22:04
2005.08.21
получить статистику текущего соединения с интернет


9-1114438472
Bryke
2005-04-25 18:14
2005.08.21
Индексы текстурных координат


1-1122966066
rolex
2005-08-02 11:01
2005.08.21
На одном компе нужно "." а на другом "," !





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский