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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 05.03.2012, 21:22   #1
Новичок
 
Аватар для Zero
 
Регистрация: 06.12.2011
Сообщений: 22
Сказал Спасибо: 11
Имеет 2 спасибок в 2 сообщенях
Zero пока неопределено
По умолчанию String в Widestring как?

Получаю я пакет от сервера:


С помощью след. кода:
Код:
var s1:string;
begin
s1:=tcp.Receiveln(); 
m1.Lines.Add(s1);
end;
Вывод в мемо:


Т.е. Получается строка Юникода находится в Анси s1:string;.
Как можно нормально вывести типа как делает l2phx в преобразовании.

Последний раз редактировалось Zero, 05.03.2012 в 21:23. Причина: Добавлено сообщение
Zero вне форума   Ответить с цитированием
Старый 05.03.2012, 21:23   #2
Рыцарь
 
Аватар для Morfik
 
Регистрация: 13.10.2009
Сообщений: 665
Сказал Спасибо: 38
Имеет 172 спасибок в 108 сообщенях
Morfik пока неопределено
По умолчанию

Код:
function PWideToString(pw: PWideChar): string;
var
  p: PChar;
  iLen: integer;
begin
  iLen := lstrlenw(pw) + 1;
  GetMem(p, iLen);
  WideCharToMultiByte(CP_ACP, 0, pw, iLen, p, iLen * 2, nil, nil);
  Result := p;
  FreeMem(p, iLen);
end;
__________________
каждый раз, когда ты пишешь int i вместо short i, сотни пользователей вынуждены докупать планку памяти

служба поддержки 4gay - ICQ 642274822
Morfik вне форума   Ответить с цитированием
Старый 05.03.2012, 21:24   #3
Новичок
 
Аватар для Zero
 
Регистрация: 06.12.2011
Сообщений: 22
Сказал Спасибо: 11
Имеет 2 спасибок в 2 сообщенях
Zero пока неопределено
По умолчанию

Спасибо, с тем разобрался, но вот вопрос еще
delphi Код:
var pck:widestring; size:word; begin tcp.ReceiveBuf(size, 2); SetLength(pck, size-2); tcp.ReceiveBuf(pck[1], size-2); m1.Lines.Add(pck); end;
Получаю вывод с какойто лишней инфой, которой в пакете вообще нет
"Best Minecraft§1§352\drivers\etc\services"
Красного в пакете вообще нет, откуда оно берется и как с ним бороться подскажите пожалуйста

Последний раз редактировалось Zero, 05.03.2012 в 21:51.
Zero вне форума   Ответить с цитированием
Старый 05.03.2012, 23:01   #4
Местный
 
Аватар для Sherman
 
Регистрация: 24.04.2008
Сообщений: 364
Сказал Спасибо: 15
Имеет 116 спасибок в 83 сообщенях
Sherman пока неопределено
По умолчанию

Цитата:
Код:
tcp.ReceiveBuf(pck[1], size-2);
m1.Lines.Add(pck);
Как у тебя при этом AV не случается вообще?

Ты бы пакет в строку конвертировал сначала по принципу каждый байт пакета через IntToHex в 16 формат....
А то у тебя кракозябры должны в Мемо сыпаться..
Пакет же не строка... а массив байт, и чтобы он стал читаемым его конвертировать надо в строку по нужному тебе представлению.
Код:
var S:string;
for i:=0 to size-1 do S:=S+IntToHex(pck[i],2);
Хотябы так...

Последний раз редактировалось Sherman, 05.03.2012 в 23:07.
Sherman вне форума   Ответить с цитированием
Старый 05.03.2012, 23:14   #5
Новичок
 
Аватар для Zero
 
Регистрация: 06.12.2011
Сообщений: 22
Сказал Спасибо: 11
Имеет 2 спасибок в 2 сообщенях
Zero пока неопределено
По умолчанию

Да нет нормально выводится.
Вот только предполагаемый размер всегда равен 255 и поэтому выводится лишнее с памяти системы.
Использую простой TcpClient
Zero вне форума   Ответить с цитированием
Старый 06.03.2012, 00:50   #6
Местный
 
Аватар для Sherman
 
Регистрация: 24.04.2008
Сообщений: 364
Сказал Спасибо: 15
Имеет 116 спасибок в 83 сообщенях
Sherman пока неопределено
По умолчанию

Ну хз, если символы псевдографики и прочая лабуда это нормально ))))
Sherman вне форума   Ответить с цитированием
Старый 06.03.2012, 00:58   #7
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

дак если известна длина строки копируй ее в буфер какойнеть чтоб был 0-терминальный символ. у тя в пакете либо предполагаетса что длина строки постоянна (что врятли), либо гдето указаен ее размер.

у тя в пакете у строки нет завершающего нулевого символа поэтому в строку читаетса все содержимое опосля нее, всякий мусор из памяти)))
как уже прально подметили простое чтение строки при определенных раскладах может повлеч и AV
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Старый 06.03.2012, 04:48   #8
Новичок
 
Аватар для Zero
 
Регистрация: 06.12.2011
Сообщений: 22
Сказал Спасибо: 11
Имеет 2 спасибок в 2 сообщенях
Zero пока неопределено
По умолчанию

Тему можно клоус, переписал на java..
Zero вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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