Вверх ↑
Этот топик читают: Гость
Ответов: 241
Рейтинг: 45
#1: 2006-12-04 02:00:32 ЛС | профиль | цитата
Все никак руки не доходили переделать, вот наконец собрался.
Скорость кодирования увеличена как минимум вдвое.
карма: 0

0
файлы: 1s2h_11.rar [2.6KB] [563]
vip
#1.1контекстная реклама от партнеров
Ответов: 241
Рейтинг: 45
#2: 2006-12-07 01:17:50 ЛС | профиль | цитата
Считаешь их наличие целесообразным?

[size=-2]------ Добавлено в 01:17
Вот, если кому необходимы те "точки"
карма: 0

0
файлы: 1s2h12.rar [2.9KB] [366]
Ответов: 241
Рейтинг: 45
#3: 2006-12-07 15:53:56 ЛС | профиль | цитата
Не сильно. Ощутимую разницу например при конвертации файла размером 50mb ты вряд ли заметишь.
Увеличение скорости достигнуто и не за счет убирания этих точек.
Мне лично эти точки не нужны, поэтому использую версию 1.1
карма: 0

0
Ответов: 9906
Рейтинг: 351
#4: 2006-12-07 17:06:32 ЛС | профиль | цитата
Wolfik писал(а):
Не сильно

Сильно. Минимально подключенное событие будет обрабатываться дольше, чем генерация одного символа.

Грамотно, просто делается нижняя точка типа Position (счетчик цикла, в общем), которую можно прочитать в параллельном потоке, срабатывающем 10..100 раз в секунду (к примеру). И не заморачиваться со всякими там Count
карма: 9

0
Ответов: 241
Рейтинг: 45
#5: 2006-12-08 13:03:39 ЛС | профиль | цитата
Galkov, спасибо за сведения

[size=-2]------ Добавлено в 13:03
Я кстати имел ввиду, что скорость не сильно уменьшится при не активированной дополнительной точке
карма: 0

0
Ответов: 241
Рейтинг: 45
#6: 2007-02-01 15:46:30 ЛС | профиль | цитата
Добавлено пара новых методов для упрощения конвертирования + новая иконка + небольшие доработки
карма: 0

0
файлы: 1SH_1.4.rar [2.2KB] [394]
Ответов: 9906
Рейтинг: 351
#7: 2007-02-27 10:15:26 ЛС | профиль | цитата
Wolfik, вот "причесал" немного последний вариант и положил на SVN
Посмотри...
FPos в качестве глобального плохо...
Вот такая штука не будет работать code_1019
карма: 9

0
файлы: 1code_1019.txt [2.6KB] [477]
Ответов: 241
Рейтинг: 45
#8: 2007-02-28 20:34:27 ЛС | профиль | цитата
Galkov, посмотрел, понял, осознал свои ошибки
Один вопрос небольшой: в каких случаях нужно использовать _hi_CreateEvent?
карма: 0

0
Ответов: 9906
Рейтинг: 351
#9: 2007-02-28 20:47:34 ЛС | профиль | цитата
Когда оно последнее, грубо говоря...
На самом деле, _hi_CreateEvent не совершает никаких вызовов.
Он просто дает поручение ПРЕДЫДУЩЕМУ _hi_onEvent сделать ЕЩЕ ОДИН вызов события.
Это поручение реализовано установкой поля TData.next на указатель этого следующего event-а, и 7-го бита в TData.data_type

А сделано для того, чтобы уменьшить вложенность по стеку длинной цепочки элементов (обычно ограничение по стеку на уровне нескольких тысяч).
И делать _hi_CreateEvent НЕЛЬЗЯ, если необходимо обязательно произвести в этом же методе какие-то действия ПОСЛЕ события
К примеру
procedure THIConvertor._work_doConvert12(var _Data:TData; Index:word);//StrToStream
var S:string;
St:PStream;
len:cardinal;
begin
S := ReadString(_Data,_data_Data);
St := NewMemoryStream;
len := Length(S);
St.Write(s[1],len);
St.Position := 0;
_hi_OnEvent(_event_onResult,St); //Тут НИЗЯ!!!
St.free;
end;
карма: 9

0
Разработчик
Ответов: 26072
Рейтинг: 2122
#10: 2007-02-28 21:12:50 ЛС | профиль | цитата
Galkov, значит, если _hi_CreateEvent последнее, то его можно использовать всегда? Или, все же есть ограничения?
карма: 22

0
Ответов: 9906
Рейтинг: 351
#11: 2007-02-28 21:26:57 ЛС | профиль | цитата
Да.
Обязательно должен быть тот самый предыдущий _hi_onEvent
Вот здесь - нельзя:
procedure THIButton._OnClick;
begin
_hi_OnEvent_(_event_onClick,_prop_Data);
end;
Потому-что нет того самого ПРЕДЫДУЩЕГО - этот самый первый в цепочке
Собственно, как-то я не очень понимаю запоминание неких "правил"
Надо просто понимать смысл происходящего, тогда оно само запомнится. Причем так, что забыть будет просто невозможно...

А смысл здесь:
procedure __hi_OnEvent(const PointEvent:THI_Event;var Data:TData);
var P:PHI_Event;
begin
P := @PointEvent;
while Assigned(P.Event) do begin
{$ifdef _DEBUG_}CallEvent(2,P^,Data);{$endif}
P.Event(Data,P.Index);
if(Data.data_type and $80)=0 then break;
dec(Data.data_type,$80);
P := PHI_Event(Data.next);
end;
end;
Всякий вызов события придет именно сюда, и мимо никак не пройдет.
И видно, что тот же самый THIButton._OnClick может вызвать больше одного события.
Вот эти следующие события и формируют _hi_CreatEvent-ы разного калибра...

Понимаешь этот небольшой код - и все само собой запомнится
карма: 9

0
Разработчик
Ответов: 26072
Рейтинг: 2122
#12: 2007-02-28 22:04:24 ЛС | профиль | цитата
Galkov писал(а):
Надо просто понимать смысл происходящего, тогда оно само запомнится

Согласен на все 100%. Спасибо за разъяснения.
карма: 22

0
Ответов: 241
Рейтинг: 45
#13: 2007-02-28 22:32:32 ЛС | профиль | цитата
nesco писал(а):
Спасибо за разъяснения.

Присоединяюсь.
карма: 0

0
Разработчик
Ответов: 26072
Рейтинг: 2122
#14: 2007-07-08 16:08:33 ЛС | профиль | цитата
Вроде, такой компонент в пакете есть? А этот, тогда на кой?
карма: 22

0
Ответов: 3655
Рейтинг: 69
#15: 2007-07-08 16:12:46 ЛС | профиль | цитата
nesco писал(а):
Вроде, такой компонент в пакете есть? А этот, тогда на кой?

Этот по словам Автора быстрее работает.
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)