![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
bagos |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 275 Регистрация: 17.6.2006 Репутация: 1 Всего: 1 |
ловлю сообщение
procedure TForm1.handlenewdata(var message: TMessage); var data: ^string; begin Integer(@data) := message.wparam; lst1.Items.Add(string(data)); end; код неправильный, с указателями траблы:( что не так? ткните носом! |
|||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 3 Всего: 54 |
А в чем именно проявляется ошибка?
В Delphi7 я заметил, что integer криво преобразовывает. И ты пытаешся в указатель на string запихнуть integer |
|||
|
||||
Rrader |
|
|||
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 18 Всего: 191 |
Все неверно - память для строки не выделена, информации о символах (содержимом) нет (на их месте мусор). Фактически ты передаешь одно число, а надо массив. А для этого уже следует использовать помощь Windows
![]() Строки можно передавать через WM_COPYDATA. P.S. Забыл сказать, это касается IPC. Для своего процесса все попроще ![]() Это сообщение отредактировал(а) Rrader - 2.2.2009, 15:49 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
data - это сам по себе указатель на указатель (строка это указатель). А операция взятия адреса даст указатель на указатель на указатель
![]() -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
marinovsoft |
|
|||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 25.1.2009 Где: Кемерово Репутация: нет Всего: нет |
Зачем такой запутанный код?
Может лучше так
Удачи |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
marinovsoft, и что? В строку запишется значение адреса
![]() bagos, чтобы ответить на вопрос как принять строку нужно сначала увидеть как ее туда заносили в параметр wparam -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 16 Всего: 54 |
глупость помоему
но тут надо смотреть как ты в Message1.WParam засовываеш строку -------------------- Кольцов Виктор Владимирович |
|||
|
||||
marinovsoft |
|
||||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 25.1.2009 Где: Кемерово Репутация: нет Всего: нет |
В wParam лежит адрес строки??? Я не телепат. Мало ли кто что "накодил" тогда
|
||||
|
|||||
bagos |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 275 Регистрация: 17.6.2006 Репутация: 1 Всего: 1 |
Никак еще не заносил, мне то как раз и надо все это сделать, занести указатель на строку в wparam, и потом прочитать строку.
Спасибо ответившим! Добавлено через 14 минут и 57 секунд заношу вот так:
|
|||
|
||||
bagos |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 275 Регистрация: 17.6.2006 Репутация: 1 Всего: 1 |
data:=inttostr(Message.WParam);
выдает все нули ![]() может заношу неправильно? |
|||
|
||||
bagos |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 275 Регистрация: 17.6.2006 Репутация: 1 Всего: 1 |
var
data: PChar; begin data := PChar(Pointer(message.LParam)^); lst1.Items.Add(data) заработало))) |
|||
|
||||
marinovsoft |
|
|||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 25.1.2009 Где: Кемерово Репутация: нет Всего: нет |
Немного поздновато, но все же...
|
|||
|
||||
bagos |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 275 Регистрация: 17.6.2006 Репутация: 1 Всего: 1 |
Спасибо! Это лучше
![]() Добавлено через 11 минут и 3 секунды А как быть в записями? создаю запись
как в этом случае послать через указатель запись? |
|||
|
||||
bagos |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 275 Регистрация: 17.6.2006 Репутация: 1 Всего: 1 |
пытаюсь так:
|
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
автор пытается передать данные внутри своего приложения или между приложениями?
если внутри - то последовательность такая: выделил память, заполнил данными, отослал указатель. принял указатель, прочитал данные, освободил память. это общий случай. в данных муках с записью сделано несколько ошибок. неправильное приведение типа, и Dispose непонятно на что. Добавлено через 1 минуту и 7 секунд кстати, marinovsoft привел некрасивый пример, использование которого в общем случае может привести к AV или порче данных. -------------------- There are always someone smarter than you... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |