Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 30.06.2015, 05:30   #21
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

Цитата:
Сообщение от supernewbie Посмотреть сообщение
реализация логина на Delphi 7
На дельфи 7 всё работает.

Вот на ХЕ 7 не хочет, проэкт компилируется норм, без ошибок, но на втором пакете дисконект. Никак не найду проблемы.
cvillian вне форума   Ответить с цитированием
Старый 30.06.2015, 11:27   #22
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

В делфи ХЕ тип String теперь двухбайтный, если он где то используется в алгоритме , то это нужно учитывать.
Например заменив на AnsiString;
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
За это сообщение Yegor нажился спасибкой от:
Старый 30.06.2015, 16:34   #23
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

Цитата:
Сообщение от Yegor Посмотреть сообщение
В делфи ХЕ тип String теперь двухбайтный, если он где то используется в алгоритме , то это нужно учитывать.
Например заменив на AnsiString;
спасибо, буду пробовать
cvillian вне форума   Ответить с цитированием
Старый 30.06.2015, 17:56   #24
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 190
Сказал Спасибо: 4
Имеет 42 спасибок в 40 сообщенях
ScythLab пока неопределено
По умолчанию

И еще Char заменить на AnsiChar, а также Chr лучше заменить на AnsiChar
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием
За это сообщение ScythLab нажился спасибкой от:
Старый 01.07.2015, 10:01   #25
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

Да спасибо, помогло

Добавлено через 3 часа 32 минуты
В первом пакете GS (Init) идёт постоянный массив, я его смотрю черз WP PPC, т.е. он у меня есть в виде хекса. Никак не пойму во что мне его переконвертировать чтобы вставить в пакет. пакет это array of byte

Добавлено через 8 часов 47 минут
с этим вроде разобрался - HexToStr
теперь надо с числами что-то придумать, в WPF есть функция IntToBin, вот нужно что-то подобное

Последний раз редактировалось cvillian, 01.07.2015 в 10:01. Причина: Добавлено сообщение
cvillian вне форума   Ответить с цитированием
Старый 01.07.2015, 11:48   #26
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

Просто копируете данные в нужное место, например у нас есть массив
pck: array[1024] of byte;

Чтобы в него в нужное место поместить 4 байтное Int значение делаете:

Move(откуда, куда, количество байт);

Move(intVal, pck[100], SizeOf(intVal));

Эта конструкция скопирует значение переменной intVal в массив начиная с 100 позиции. Для других типов данных кроме текста, аналогично.


Можете также воспользоваться готовыми функциями из исходников пакетхака:

function ReadC(const pck: string; var index:integer):byte; stdcall;
function ReadH(const pck: string; var index:integer):word; stdcall;
function ReadD(const pck: string; var index:integer):integer; stdcall;
function ReadQ(const pck: string; var index:integer):int64; stdcall;
function ReadF(const pck: string; var index:integer):double; stdcall;
function ReadS(const pck: string; var index:integer):string; stdcall;
procedure WriteC(var pck: string; const v:byte; ind:integer=-1); stdcall;
procedure WriteH(var pck: string; const v:word; ind:integer=-1); stdcall;
procedure WriteD(var pck: string; const v:integer; ind:integer=-1); stdcall;
procedure WriteQ(var pck: string; const v: Int64; ind:integer=-1); stdcall;
procedure WriteF(var pck: string; const v:double; ind:integer=-1); stdcall;
procedure WriteS(var pck: string; const v: WideString; ind:integer=-1); stdcall;

Но они заточены на то что пакет хранится в переменной типа String.
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Старый 01.07.2015, 20:01   #27
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

Ну это когда нужно изменить пакет. Я говорю про то когда его нужно собрать. В WP PPC мого удобных функций для этого есть, надо видима придумывать что-то похожее. Я тоже думаю пакет в стринге держать.

Последний раз редактировалось cvillian, 01.07.2015 в 20:06.
cvillian вне форума   Ответить с цитированием
Старый 01.07.2015, 23:38   #28
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

Цитата:
Сообщение от cvillian Посмотреть сообщение
Ну это когда нужно изменить пакет. Я говорю про то когда его нужно собрать. В WP PPC мого удобных функций для этого есть, надо видима придумывать что-то похожее. Я тоже думаю пакет в стринге держать.
Эти функции именно и созданы чтобы его собрать.

procedure WriteC(var pck: string; const v:byte; ind:integer=-1); stdcall;
procedure WriteH(var pck: string; const v:word; ind:integer=-1); stdcall;
procedure WriteD(var pck: string; const v:integer; ind:integer=-1); stdcall;
procedure WriteQ(var pck: string; const v: Int64; ind:integer=-1); stdcall;
procedure WriteF(var pck: string; const v:double; ind:integer=-1); stdcall;
procedure WriteS(var pck: string; const v: WideString; ind:integer=-1); stdcall;

На самом деле очень удобно.

Берем пустую переменную типа String и последовательно пишем в нее ID, и прочие данные.

Например:

PHP код:
// Создаем пакет для посылки текста в чат
function Say2(textWideStringtextType:integertargetCharShortString ''): string;
begin
  Result
:= #$49;
  
WriteS(Resulttext);
  
WriteD(ResulttextType);
  if(
targetChar <>  '')and(textType 2then WriteS(ResulttargetChar); 
  
SendPacket(result);
end
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)

Последний раз редактировалось Yegor, 01.07.2015 в 23:40.
Yegor вне форума   Ответить с цитированием
Старый 02.07.2015, 22:41   #29
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

Вобщем вроде как законектился я к гейм серверу. Но после того как я отсылаю 4-й пакет - CharSelected, Рич эдит вдруг начинает заполнятся нулями и приложение виснет, хотя дальнейшие пакеты я не обрабатываю и не пишу в лог. Из за чего такое может быть? Может потому что сокет слушается через сообщения форме?

Добавлено через 1 час 19 минут
походу где-то ошибка просто, логер пытается показать пакет размером с несколько десятков или больше мб., непойму откуда он его взял поставил проверку в логере на размер и сразу залогинился

Добавлено через 11 часов 3 минуты
Может кто встречал исходники конекта к логин серверу на с++?

Добавлено через 4 часа 10 минут
Не совсем пойму такую вещь, пакеты могут приходить слепленными, их нужо сначала ралеплять и потом декодировать или декодировать всю пришедшую кучу, а потом разлеплять

Последний раз редактировалось cvillian, 02.07.2015 в 22:41. Причина: Добавлено сообщение
cvillian вне форума   Ответить с цитированием
Старый 03.07.2015, 02:05   #30
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

Цитата:
Сообщение от cvillian Посмотреть сообщение
Не совсем пойму такую вещь, пакеты могут приходить слепленными, их нужо сначала ралеплять и потом декодировать или декодировать всю пришедшую кучу, а потом разлеплять
Пакеты могут приходить как попало. По 2, полтора, полпакета. Надо читать размер пакета (первые 2 байта) и затем ждать приема нужного количества байт из сокета.
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 01:13.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!