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

Вниз

LoadFromFile   Найти похожие ветки 

 
SMATMP ©   (2005-10-20 09:06) [0]

Уважаемые мастера! Необходимо загрузить содержимое файла в компонент. Возможно ли для отслеживания процента загрузки использовать промежуточный буфер или камим-либо образом отследить процент выполнения LoadFromFile? Функцию LoadFromClipboard использовать не хотелось бы, если при этом пропадает его предыдущее содержимое.

Заранее спасибо.


 
Плохиш ©   (2005-10-20 10:44) [1]

Возможно, но для этого нужен программист, имеющий логическое мышление.


 
SMATMP ©   (2005-10-21 11:09) [2]

Что это значит? Программист без логики что стул без ножек...


 
Digitman ©   (2005-10-21 12:02) [3]


> Программист без логики что стул без ножек


вот именно.

поэтому, если ты не стул без ножек, вдумайся в абстракность сказанного тобой - "загрузить содержимое файла в компонент"


 
SMATMP ©   (2005-10-21 13:18) [4]

Ну насколько я понимаю - и TImage и TMemo являются компонентами приложения? С помощью LoadFromFile можно заполнить их свойства Picture (Bitmap) и Text? При этом происходит загрузка содержимого файла в компонент? Где здесь нет логики? Мне только необходимо оценить количественно этот процесс и всё.


 
Digitman ©   (2005-10-21 13:26) [5]


> SMATMP ©   (21.10.05 13:18) [4]


> При этом происходит загрузка содержимого файла в компонент?


нет.

при этом происходит чтение из файла инф-ции, которую каждый из этих компонентов интерпретирует по-разному.

к примеру, вот я как разработчик некоего компонента TDummyComponent объявил и реализовал его метод LoadFromFile() так :

procedure TDummyComponent.LoadFromFile(const FileName: String);
begin
 ShowMessage("You"re dummy !");
end;

а теперь скажи, как ты себе мыслишь тот самый "процент" ..


 
clickmaker ©   (2005-10-21 14:12) [6]


> Возможно ли для отслеживания процента загрузки использовать
> промежуточный буфер или камим-либо образом отследить процент
> выполнения LoadFromFile

написать наследника компонента с переопределенной LoadFromFile, где ты сам будешь сообщать проге процент


 
SMATMP ©   (2005-10-21 15:24) [7]

В основном для Digitman.

begin
ShowMessage("You"re dummy !");
end;


Для загрузки инфы из файла процедура должна структуру немного сложней иметь насколько я понимаю. Как минимум чтение блоками в память и из нее. Скажем есть же у компонентов обработчик события OnProgress. Оно не всегда действительно работает, но принципиально такое возможно, скажем для JPEG в Bitmap (TImage).
Не знаю как это реализовано, но есть. Поэтому и спрашиваю - как это отследить для LoadFromFile или как написать аналог этой процедуры с количественным отслеживанием процесса загрузки.


 
Digitman ©   (2005-10-21 15:33) [8]


> SMATMP ©   (21.10.05 15:24) [7]


судя по твоим познаниям в этой области, ты поставил себе непосильную на дан.момент задачу.


 
clickmaker ©   (2005-10-21 15:33) [9]


> Поэтому и спрашиваю - как это отследить для LoadFromFile
> или как написать аналог этой процедуры с количественным
> отслеживанием процесса загрузки

ты ж сам сказал "чтение блоками в память".
Вот и читай, после каждого блока увеличивай прогресс. Ну типа, прочел блок - увеличил позицию ProgressBar


 
SMATMP ©   (2005-10-21 15:50) [10]

Как быстро прочиталь блок в память? (если это правильный путь) и как его потом загрузить в компонент (или в свойство компонента)?
Быстро - я имею в виду, что открыв вайл и читая из него, скажем, по одному байту скорость будет не ахти. По сравнению с этим LoadFromFile будет работать мнгновенно и идея оценки процента загрузки отпадает как абсурдная. Если можно - код.
Может быть эта тема должна звучать по другому, скажем как работать с буфером и что-то в этом роде?


 
clickmaker ©   (2005-10-21 16:16) [11]


> SMATMP ©   (21.10.05 15:50) [10]

если уж ты замутил с прогрессом, значит подразумеваецца, что у тебя данных до фига и читацца они будут достаточно долго. Иначе - "идея оценки процента загрузки отпадает как абсурдная".
А уж какими блоками читать - тебе решать. Можно и по 8 кило, можно и по 64. Зависит от общего объема данных


 
Leonid Troyanovsky ©   (2005-10-21 16:24) [12]


> SMATMP ©   (21.10.05 15:50) [10]
> Как быстро прочиталь блок в память? (если это правильный
> путь) и как его потом загрузить в компонент (или в свойство
> компонента)?


У тех компонентов, которые имеют LoadFromFile есть и метод LoadFromStream.
Поэтому, правильней всего, сделать своего потомка TFileStream,
переопределив (override) ему метод Read, который после вызова
Result := inherited Read(Buffer, Count);  // прочтен буфер
известит вызывающего, например:
if Assigned(OnRead) then OnRead(Self);
где OnRead: TNotifyEvent назначается, например, в конструкторе.

Ну, а создавший этот поток при срабатывании OnRead может узнать,
например, текущую позицию (Sender as TMyFileStream).Position.

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2005-10-21 16:27) [13]

clickmaker ©   (21.10.05 16:16) [11]
Не обязательно, например если я хочу, что бы прогресс имел минимум 10 шагов, то уже устроит файл размером в 10 байт и более и уж не составит проблемы определить размер блока для прогресса. И даже визуальность можно обеспечить с помощью задержек.

Тут уж действительно надо начинать с ножек.


 
clickmaker ©   (2005-10-21 16:33) [14]


> визуальность можно обеспечить с помощью задержек

а нафига?
типа как в Диггере написанном под ХТ и запущенном на 386? там, помницца, спецальный замедлитель проца прикручивали


 
SMATMP ©   (2005-10-21 16:40) [15]

Спасибо, LVT! Коть какой-то конструктив. Буду дерзать. Про Диггера тоже неплохо. Только речь о том, чтобы нанести минимум ущерба производительности, а не максимум.

"Дорогу одолеет идущий"
Всех благ



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

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

Наверх




Память: 0.51 MB
Время: 0.069 c
1-1130156823
Its2L8
2005-10-24 16:27
2005.11.13
Автоматическая сборка проекта


2-1129720063
Df23
2005-10-19 15:07
2005.11.13
Не понимаю, почему так.


11-1111063036
Ал
2005-03-17 15:37
2005.11.13
Как использовать TSmoothDIB


1-1130239532
DelphiLexx
2005-10-25 15:25
2005.11.13
МасштабированиеTImahe.Canvas


1-1130164347
Katya2100000000
2005-10-24 18:32
2005.11.13
Лёгкий вопрос