|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Обмен сообщениями между приложениями
Есть два приложения. Одно посылает сообщение с текстом другому. Приложение принимает сообщение WM_COPYDATA, но вместо последнего символа выводятся квадраты. Компилирую в Delphi 2009. Пробовал вместо PChar использовать PAnsiChar. Исходники обоих приложений во вложении
|
#2
|
||||
|
||||
Цитата:
исходник не смотрел TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#3
|
|||
|
|||
Не помогает. То же самое
Исходники простейшие, можно смотреть |
#4
|
||||
|
||||
В D7 работает - лишних символов нет...
Что то с типами в 2009... Пусть ненавидят миллионы, зато любят тыщи (с) Многоточие |
#5
|
||||
|
||||
Код:
copyDataStruct.cbData:=(length(stringToSend)+1) * SizeOf(Char); ...сказал, и загрустил от бесспорной своей правоты |
#6
|
|||
|
|||
У-у, это уже на С++ malloc фишки похожи... Более строго для Delphi 2009 (или ещё более ранних) решили сделать, похоже.
|
#7
|
||||
|
||||
Какой malloc? Windows сама блокирует данные которые находятся в структурае copyDataStruct в указанном количестве и начиная с указанного смещения.
Просто нюанс в том что в юникоде (а дельфи 2009 работает с юникодом) размер символа два байта, а вы этого не учли. ...сказал, и загрустил от бесспорной своей правоты |