![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
<Spawn> |
|
||||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
При перехвате пакета перекидываю его в свою прогу при помощи WM_COPYDATA. Но как не пытался не получалось сделать сохранение всех данных CopyMemory или Move. Пришлось в цикле сохранять, но скорость тут очень критична, поскольку нельзя на долго приостанавливать пакет, так как тормоза тогда будут... А WM_COPYDATA можно использовать только с SendMessage.
Сейчас так:
А хотелось бы что бы было например так:
Это сообщение отредактировал(а) <Spawn> - 3.9.2003, 08:55 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
||||
|
|||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
надо так:
CopyMemory(@Packets[CurrentPacketN-1].Buf[0],@Buf,Len); -------------------- С уважением, г-н Посол. |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
p0s0l Access Violetion
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Как ни странно, но на этот цикл уходит не больше 10 млс(а за частую вообще 0 показывает!!!). Как такое может быть, ведь в нем 8192 итерации?(Проверял при помощи GetTickCount):
StartTime:=GetTickCount; pb:=PByte(buf); for i:=0 to len-1 do begin Packets[CurrentPacketN-1].Buf[i]:=pb^; Inc(pb); end; Dec(pb,len); EndTime:=GetTickCount; AddMessage(Format('time - %d',[EndTime-StartTime])); Это сообщение отредактировал(а) <Spawn> - 4.9.2003, 07:59 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
p0s0l |
|
||||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Я плохо посмотрел, надо было так:
CopyMemory(@Packets[CurrentPacketN-1].Buf[0],pointer(Buf),Len);
Еще бы! Это же тебе не спектрум...
Просто дискретность GetTickCount равняет 10 мс, т.е. если прошло 9 мс, то GetTickCount выдаст 0. -------------------- С уважением, г-н Посол. |
||||
|
|||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Хм. Так действительно все работает. Спасибо )
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |