|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.04.2017, 13:49 | #1 |
Пользователь
Регистрация: 22.03.2013
Сообщений: 23
|
SendMessage для передачи данных Record
Здравствуйте!
Подскажите, пожалуйста, возможна передача данных типа record между приложениями. Передача простого текстового сообщения происходит без проблем, а структуру передать не удается. Для написания кодов использовала инфу с сайта http://delphiru.ru/other/14--.html Пример кода для отправки данных: SenderApp.zip Пример кода приема данных: ReceiverApp.zip Приходит какой-то мусор. Подскажите, где ошибка? |
25.04.2017, 14:34 | #2 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
У вас в проекте ReceiverApp
в процедуре Код:
Код:
Код:
Последний раз редактировалось Aliens_wolfs; 25.04.2017 в 14:43. |
25.04.2017, 14:48 | #3 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,238
|
это вряд ли!
ms.ReadBuffer(MyDataExp,Msg.CopyDat aStruct.cbdata) означает, что нужно прочитать данные из MyDataExp и записать их в поток ms а тут как раз нужно прочитать данные из потока и записать из в MyDataExp а это как раз WriteBuffer. тогда уже наоборот, при отправке данных в Sender.pas нужно: Цитата:
Код:
|
|
25.04.2017, 16:13 | #4 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
А ну да поторопился и не все увидел)
|
26.04.2017, 08:41 | #5 |
Пользователь
Регистрация: 22.03.2013
Сообщений: 23
|
Спасибо за отклик.
Думаю, что прав Aliens_wolfs. Ведь ReadBuffer предназначен для чтения содержимого потока в переменную, а WriteBuffer - для записи данных из переменной в поток. Поэтому я в проге ReceiverApp сделала чтение из потока в структуру. Но, к сожалению, не помогло - по-прежнему приходит мусор. Есть еще какие-нибудь предложения? P.S. А если в Sender сделать Код:
Error.png Ведь в поток еще ничего не записали, а хотим что-то прочитать. Последний раз редактировалось Elenik; 26.04.2017 в 08:47. |
26.04.2017, 09:27 | #6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,238
|
Цитата:
Ну, тогда всё намного хуже. в случае текста через SendMessage отправляется PChar() - это указатель на набор символов в памяти, которые заканчиваются нулём. А в случае записи Вы отправляете ms.Memory - это указатель. Но вот на что он указывает и есть ли там ноль в конце - это большой вопрос! Попробуйте преобразовать MyDataExp в PChar() ну, для начала, я бы попробовал так: Код:
Последний раз редактировалось Serge_Bliznykov; 26.04.2017 в 09:45. |
|
26.04.2017, 10:30 | #7 |
Форумчанин
Регистрация: 29.10.2015
Сообщений: 272
|
Код:
Код:
Код:
Последний раз редактировалось Filka; 26.04.2017 в 10:33. |
26.04.2017, 10:54 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,238
|
Filka, круто!!!
(впрочем, как всегда! |
26.04.2017, 11:01 | #9 |
Форумчанин
Регистрация: 29.10.2015
Сообщений: 272
|
Спасибо
|
26.04.2017, 11:10 | #10 |
Старожил
Регистрация: 17.11.2010
Сообщений: 19,042
|
Но работает же через Stream в рамках одной проги. Какого в другой проге искажается?
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Что надо записать в регистры UART для передачи данных через сом порт? | седьмой | Общие вопросы C/C++ | 3 | 23.06.2017 15:26 |
Какие методы есть для передачи данных? | habibi_arabian | Общие вопросы Delphi | 2 | 20.09.2015 19:05 |
обеспечение связи двух удаленных подразделений для передачи данных | sunriser | Помощь студентам | 4 | 03.10.2013 13:09 |
Бот для передачи данных между сайтами | Conq | PHP | 6 | 03.10.2011 23:34 |
Макрос для передачи персанальных данных | Evroclidon | Microsoft Office Excel | 19 | 01.02.2010 21:12 |