|
|
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
Отправляю строку так Код: pascal 1. 2. 3. 4. 5. 6. принимаю так Код: pascal 1. 2. 3. 4. Мне, лапотнику-гуманитарию, кто-нибудь на пальцах сможет объяснить, есть тут какие-то ограничения при использовании (длина строки, разрядность ОСи или еще что)? Или способ универсальный и может применяться везде без выделения памяти и проч. сложностей? ================= Док. Win7 Ultim x64/Deb 8.7 i386: FB 3.0.2.32703, диалект 3, SS(win)/SC(Deb), Lazarus 1.9(r.55538); FPC 3.1.1 (r.36290), IBX by -Rik-; IBE 2017.4.19.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2017, 21:57:06 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
Докесть тут какие-то ограничения при использовании (длина строки, разрядность ОСи или еще что)? Или способ универсальный и может применяться везде без выделения памяти и проч. сложностей? Это работает только с SendMessage и только в пределах одного процесса. Во всех остальных случаях - облом. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2017, 22:13:26 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
Док Код: pascal 1. Переделай на NativeInt на всякий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2017, 22:45:39 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2017, 22:48:08 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
ДокИли способ универсальный и может применяться везде без выделения памяти и проч. сложностей? Если между разными модулями (dll/exe <-> dll) или, не дай бог, приложениями, то ИМХО лучше WM_COPYDATA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2017, 23:01:57 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
Док, более api-шно и немного быстрей: Код: pascal 1. 2. 3. SendMessage(MyWnd внутри GUI потока не нужно, а из других - тормозит твой второй поток, что тоже не хорошо. Поэтому такая конструкция удивляет. Но если лень делать свой межпоточный обмен, то сойдёт и так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 01:36:13 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
Я передаю указатель на строку (NewStr), в приемнике освобождаю. Во избежание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 09:39:18 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
alekcvpДокИли способ универсальный и может применяться везде без выделения памяти и проч. сложностей? Если между разными модулями (dll/exe <-> dll) или, не дай бог, приложениями, то ИМХО лучше WM_COPYDATA. Вся память процесса доступна его всем его потокам и всем его модулям. M_COPYDATA только для межпроцессорного обмена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 09:40:31 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
schialekcvpпропущено... Если между разными модулями (dll/exe <-> dll) или, не дай бог, приложениями, то ИМХО лучше WM_COPYDATA. Вся память процесса доступна его всем его потокам и всем его модулям. M_COPYDATA только для межпроцессорного обмена. Доступна, только если потом попадётся dll написанная, например, на C, будет неприятно, потому что она ничего не знает про тип string. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 11:04:38 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
alekcvpна C, будет неприятно, потому что она ничего не знает про тип string.Но знает про PChar ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 11:26:49 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
Bred eFeMПоэтому такая конструкция удивляетна практике - пересылка из доп.потока в основной чччДДок, используешь виндовый апи и, под линухом наверное такого нет за ссылку спасибо Dimitry SibiryakovВо всех остальных случаях - облом. а ограничений по длине передаваемой строки нет? У меня как раз в рамках одного процесса (приложения) YuRockПеределай на NativeInt на всякий а в чем цимес? schiЯ передаю указатель на строку (NewStr), в приемнике освобождаю. Во избежание. так можно применять и между процессами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 13:14:11 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
Дока ограничений по длине передаваемой строки нет? У меня как раз в рамках одного процесса (приложения) Нет. В любом случае там передаётся только целое. То, что ты его интерпретируешь как указатель - чисто твои заморочки, системе всё равно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 13:21:41 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
ДокYuRockПеределай на NativeInt на всякий а в чем цимес? Если будешь компилить под x86_64, то там sizeof(NativeInt) = sizeof(Pointer), а sizeof(LongInt) <> sizeof(Pointer) и тогда вот этим LongInt(s) ты обрежешь 4 старших байта указателя на свою строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 13:55:25 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
ДокschiЯ передаю указатель на строку (NewStr), в приемнике освобождаю. Во избежание. так можно применять и между процессами?Нет. Указатель же выделяется в одном процессе. В другом процессе в этом месте может быть все, что угодно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 14:24:28 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovДока ограничений по длине передаваемой строки нет? У меня как раз в рамках одного процесса (приложения) Нет. В любом случае там передаётся только целое. То, что ты его интерпретируешь как указатель - чисто твои заморочки, системе всё равно. Тогда уточню: в wparam передается целое, а lparam - указатель, как целое? YuRockты обрежешь 4 старших байта указателя на свою строку. Спасибо, не знал. Попробую. _Vasilisk_Нет. Указатель же выделяется в одном процессе. В другом процессе в этом месте может быть все, что угодно Тогда, имхо, нет смысла - тут ещё за освобождением памяти надо будет следить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 15:31:42 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
ДокschiЯ передаю указатель на строку (NewStr), в приемнике освобождаю. Во избежание. так можно применять и между процессами? Между процессами надо делать разделенную копию передаваемых данных, доступную обоим процессам. Для системных сообщений и для WM_COPYDATA этим занимается система, для остальных ты можешь имитировать, создав общедоступную проекцию файла, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 15:32:36 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
ДокТогда уточню: в wparam передается целое, а lparam - указатель, как целое?Это два целых, каждое равное машинному слову. Что-ты туда запихнешь - систему не интересует. Задача системы передать получателю именно те два числа, которые отправил отправитель ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 16:35:00 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
ДокТогда уточню: в wparam передается целое, а lparam - указатель, как целое? RTFM. Оба параметра тупо целые. Кажется, они даже одинакового размера, точно не помню. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 16:36:29 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Dimitry Sibiryakov, т.е. эти способы передачи Код: pascal 1. 2. 3. 4. 5. 6. и приема Код: pascal 1. 2. равнозначны? и не несут никаких подводных камней? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 17:22:01 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovКажется, они даже одинакового размера, точно не помню. Думаю, да, раз они одинакового типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 18:18:33 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovКажется, они даже одинакового размера, точно не помню.Одинакового. В машинное слово. Один из параметров знаковый, второй без Докравнозначны?Абсолютно YuRockони одинакового типа.Разного. Первый параметр типа WPARAM, а второй типа LPARAM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2017, 14:21:27 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
Докравнозначны?А нет. На приеме ті вот этим Док Код: pascal 1. на 64 битной архитектуре потеряешь 32 старших разряда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2017, 14:23:23 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Кстати, а на 64хбитной системе WParam и LParam - 64-битные или всё также 32х? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2017, 18:54:16 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
alekcvp_Vasilisk_, Кстати, а на 64хбитной системе WParam и LParam - 64-битные или всё также 32х? Кстати 64-битные https://blogs.msdn.microsoft.com/oldnewthing/20110629-00/?p=10303 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2017, 19:50:59 |
|
||
|
Lazarus: передачи строки посредством SendMessage
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_На приеме ті вот этим Док Код: pascal 1. на 64 битной архитектуре потеряешь 32 старших разряда т.е. так кошерно? Код: pascal 1. _Vasilisk_Один из параметров знаковый, второй без Странно, если ты имеешь ввиду отрицательные и положительные значения, то Код: pascal 1. в приемнике выдает соответственно -333 и -555 _Vasilisk_Первый параметр типа WPARAM, а второй типа LPARAM а можешь в двух словах об их отличии при использовании пользовательских сообщений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2017, 20:21:19 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39513734&tid=2041860]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
192ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 521ms |

| 0 / 0 |
