Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.038 c
1-1129788909
Zhekson
2005-10-20 10:15
2005.11.13
Как на определённое время повесить надпись поверх всех окон?


2-1129910821
Spinu Oleg
2005-10-21 20:07
2005.11.13
Указатели


8-1110227158
Sash1988
2005-03-07 23:25
2005.11.13
Графика в OpenGL


8-1119530862
Ш-К
2005-06-23 16:47
2005.11.13
Как сделать изображение бледнее?


2-1130341177
Dudee
2005-10-26 19:39
2005.11.13
Ещё одна беда со StringGrid ом





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский