![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| NetDigger |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 25.4.2004 Репутация: нет Всего: нет |
Здравствуйте, уважаемые!
Возник вопрос при работе с мэйлслотами. Есть приложение, которое может выступать либо как клиент, либо как сервер. При запуске сервера открывается мэйлслот-канал, теперь запустив ту же самую программу с помощью кнопки Send можно посылать сообщения серверу, который их, допустим, выводит в ShowMessage. Это теоретически. На практике получается так: если строка задается константой, т.е. идет присвоение типа Message := 'test', то все замечательно работает, но стоит попробовать присвоить текст какого-либо контрола (Edit1.Text) - все вылетает c Acces Violation. Грешил на Вин98, однако на винтукее то же самое. Как только не извращался с типами, добавлял насильно нуль в конец строки - БЕС-ПО-ЛЕЗ-НО. Потом решил разделить клиент и сервер - штука точна такая же - не получается. Посмотрите незамыленным глазом - может подскажете, где собака зарыта. И еще - подскажите как то же самое можно реализовать с Named Pipes, сокетами и DDE - вдруг получится там =). Но код с мэйлслотами все равно доделать нужно.
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: нет Всего: 110 |
первое, что приходит в голову:
когда в качестве PChar используется строковая константа, она автоматически приводится к PChar, может, стоит сделать приведение PChar(Edit1.Text)? -------------------- qqq |
|||
|
||||
| NetDigger |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 25.4.2004 Репутация: нет Всего: нет |
Пробовал, не помогает - но выводятся кракозябры - зато в любом случае выдает сообщение - это уже прогресс, разбираться буду с кракозябрами
|
|||
|
||||
| NetDigger |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 25.4.2004 Репутация: нет Всего: нет |
Разобрался! Перебрал все, что можно, заработало только с AnsiChar =) Если нужно - иходник кину попозжее. Хотя просто почитайте статью про Named Pipes на www.delphimaster.ru (Автор: Игорь Шевченко) - практически все можно перенести и на слоты
|
|||
|
||||
| wesadex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 21.6.2005 Репутация: нет Всего: нет |
В продолжение темы...
Левая программулина создает МэйлСлот и кидает сама же в него инфу... Приведенным куском кода я пытаюсь прочитать в таймере, что именно она туда кидает... но ничего не выходит... GetMailSlotInfo дает на выходе False. Ошибка "Параметр задан неверно!" Какой параметр, ткните носом, а? Если hc:=CreateMailslot(PChar('\\.\mailslot\MailBox'), 0, MAILSLOT_WAIT_FOREVER, nil); поставить перед hc:=CreateFile... эффект тот же... Я уже просто не вижу где грабли! NetDigger, может использовать CreateMailslotA вместо CreateMailSlot ? Это сообщение отредактировал(а) wesadex - 22.9.2005, 15:54 |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |