Текущий архив: 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.49 MB
Время: 0.033 c