|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.12.2009, 21:32 | #1 |
-=PriZraK=-
Форумчанин
Регистрация: 12.12.2007
Сообщений: 399
|
Оптимизация функции...
Доброе время суток!
Помогите пожалуйста оптимизировать код данной функции. С её помощью файл разбивается на "куски" определённого размера. Я собираю прогу в которой одновременно можно "резать" больше 1-го файла. Но вот незадача...стоит начать "резать" этой функцией файл, как прога уже не отвечает. Я уже как мог экспериментировал с application.processmessages...не помогает. Пожалуйста, подскажите, как "разморозить" прогу во время выполнения одной или нескольких таких функций? Код:
Последний раз редактировалось prizrak1390; 10.12.2009 в 21:57. Причина: Ступил.... XD |
10.12.2009, 22:04 | #2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Странно...
Всегда помогало (да и просто необходимо для отображения хода операции) Код:
|
10.12.2009, 22:14 | #3 |
-=PriZraK=-
Форумчанин
Регистрация: 12.12.2007
Сообщений: 399
|
mihali4, да ладно уже с отображением прогресса. Я пробовал и Ваш вариант. Дошло до того, что почти после КАЖДОЙ строчки поставил application.processmessages...но что бы Вы думали? Файл режется, прогресс отображается...но прога висит. И процесс отображается лишь, когда создан новый "кусок". И в такой момент прога на одну секунду "отмерзает". Но потом опять анабиоз...
|
10.12.2009, 22:35 | #4 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Так пройдитесь по шагам и посмотрите, на какой строке у вас "морозит"...
|
10.12.2009, 22:48 | #5 |
-=PriZraK=-
Форумчанин
Регистрация: 12.12.2007
Сообщений: 399
|
Ну тут в глаза бросается:
Код:
|
10.12.2009, 22:55 | #6 |
Форумчанин
Регистрация: 15.02.2008
Сообщений: 621
|
prizrak1390, а почему бы вам эту ф-ию не запускать в отдельной нити (TThread помоему так пишеться)???? И Замараживаться перестанет =)
Помог? Ну так нажми на весы!
|
10.12.2009, 22:57 | #7 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Если память не подводит, это TStream, а CopyFrom, это функция перегонки данных (байт) из одной части в другую (будь то память файл и т.п.), т.е. ручками читаем и пишем например порциями в 1024 байта, и в это же время вызываем Application.ProcessMessages.
|
10.12.2009, 23:13 | #8 |
-=PriZraK=-
Форумчанин
Регистрация: 12.12.2007
Сообщений: 399
|
SNUPYуже думал об этом. Но хочется, как можно проще код сделать... Спасибо.
BOBAH13 То есть использовать blockread и blockwrite? Я не очень силен в этом. Помогите реализовать... А то я чую в дебри полезу..Ну или хоть дайте почитать нужную литературу... |
10.12.2009, 23:23 | #9 |
Форумчанин
Регистрация: 15.02.2008
Сообщений: 621
|
Замени sStream.CopyFrom(fs, SizeofFiles);
на это Код:
Помог? Ну так нажми на весы!
|
10.12.2009, 23:29 | #10 |
-=PriZraK=-
Форумчанин
Регистрация: 12.12.2007
Сообщений: 399
|
SNUPY,сейчас попробуемс
---- Вообщем...попробовал. Провел пару экспериментов даже, эффекта нету :'( Но за помощь все равно спасибо. Последний раз редактировалось prizrak1390; 10.12.2009 в 23:37. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Оптимизация | Viper1287 | Операционные системы общие вопросы | 7 | 13.09.2009 15:33 |
Оптимизация | Flangini | Microsoft Office Excel | 5 | 11.06.2009 11:48 |
Запуск процедуры из процедуры с дополнением | 1sal1 | Общие вопросы Delphi | 3 | 06.10.2008 21:54 |
Оптимизация кода. | MAKTECYMA | Общие вопросы C/C++ | 2 | 05.06.2008 16:48 |
Оптимизация | Terran | Общие вопросы Delphi | 3 | 03.05.2008 19:03 |