Проблема с массивами и типами данных
|
|
AGENTX001 | Дата: Суббота, 02 Июня 2012, 23:16 | Сообщение # 1 |
почётный гцупер
Сейчас нет на сайте
| Добрый вечер ув. товарищи геймдевлоперы! Дело в том, что я пишу сервер на делфи и возникла очень странная проблема - когда клиент отсылает серверу логин, тот его присваивает всем юзерам на сервере. Код. Раньше подобной проблемы не было, она появилась, после того как я попытался использовать собственный тип данных для клиентов (раньше для этой цели использовалось несколько массивов: один для сокетов, второй для логинов и т. д.). Надеюсь, что мне помогут
|
|
| |
AGENTX001 | Дата: Суббота, 02 Июня 2012, 23:41 | Сообщение # 2 |
почётный гцупер
Сейчас нет на сайте
| ап
|
|
| |
GECK | Дата: Воскресенье, 03 Июня 2012, 09:56 | Сообщение # 3 |
заслуженный участник
Сейчас нет на сайте
| А если логин хранить не в pchar, а перегнать в string?
Загадочная штука этот 39.dll - читаем байт, а он возвращает double o_OДобавлено (03.06.2012, 09:56) --------------------------------------------- Долбанная невнимательность >_<
Вопрос - функция String_read использовалась и раньше? Что мешает возвращать из нее сразу string?
Всё гениальное просто. И хреново работает.
|
|
| |
AGENTX001 | Дата: Воскресенье, 03 Июня 2012, 11:01 | Сообщение # 4 |
почётный гцупер
Сейчас нет на сайте
| Quote (GECK) опрос - функция String_read использовалась и раньше? Что мешает возвращать из нее сразу string? PChar удобнее в работе.
|
|
| |
AGENTX001 | Дата: Воскресенье, 03 Июня 2012, 11:02 | Сообщение # 5 |
почётный гцупер
Сейчас нет на сайте
| Quote (GECK) Загадочная штука этот 39.dll - читаем байт, а он возвращает double o_O Угу:))
|
|
| |
|
GECK | Дата: Воскресенье, 03 Июня 2012, 14:13 | Сообщение # 7 |
заслуженный участник
Сейчас нет на сайте
| Quote (AGENTX001) и ты не поверищь - РАБОТАЕТ!!! Я бы больше удивился, если не заработало PChar - это всего лишь указатель на первый символ строки, которая должна заканчиваться нулем("строка в стиле C"). Поэтому простое присваивание одного pchar другому - это не вполне корректно, так как данные, находящиеся по этому указателю, могут запросто измениться без твоего ведома. Видимо поле login у всего массива игроков ссылается на одну и ту же строку, в которую ты считываешь присланный пользователем логин. String же обеспечивает выделение памяти и копирование содержимого строки в новое место. Все просто
Всё гениальное просто. И хреново работает.
Сообщение отредактировал GECK - Воскресенье, 03 Июня 2012, 14:14 |
|
| |
AGENTX001 | Дата: Вторник, 05 Июня 2012, 00:44 | Сообщение # 8 |
почётный гцупер
Сейчас нет на сайте
| GECK, пощади мои мозги!
|
|
| |