На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Notepad++, Scintilla, SendMessages и Delphi
Здравствуйте, у меня проблемы с управлением Scintillой в n++ через сообщения. Использую delphi.

Получаю handle скинтиллы через FindWindow и FindWindowEx.
Пытаюсь передать строку для замены так:
ExpandedWrap disabled
    str:='qwerty'#0;
    sendmessage(hwndScintilla,2170,0, lparam(pchar(str)) );


2170 - это SCI_REPLACESEL. Я не подключаю заголовочные файлы, поэтому использую просто числа вместо констант.

Но вместо переданной строки встаёт вот это:
https://yadi.sk/i/-Vp5G2gdTIngLA
Причём при каждом перезапуске n++ и моей программы "это" всегда разное.

А сообщения, возвращающие числа, работают нормально:
ExpandedWrap disabled
    sendmessage(hwndScintilla,2143,0,0 )

2143 - это SCI_GETSELECTIONSTART.

Как мне передать строку для замены в Scintilla?

Документация отсюда: https://www.scintilla.org/ScintillaDoc.html#SCI_REPLACESEL
Константы тут: http://freesourcecode.net/cprojects/106750...ode/Scintilla.h
Кодировка строк в Дельфи и том, что сцинтилла ожидает, совпадают (Юникод/анси/утф8)?
Codero ergo sum
// Программирую — значит, существую
Вот у людей проблема один-в-один обсуждается.
https://www.autohotkey.com/boards/viewtopic...style=7&t=62646

Корни ситуации ИМХО в том, что SCI_REPLACESEL передаёт адрес в пространстве вызывающего процесса, а у вызываемого процесса по тому же адресу лежит совсем иные данные. Т.е. номер квартиры тот же, но вот дом и город - другие. Само собой дверь открывают непонятные люди.
Windows as usual - my "wau" Windows experience
Мда, проектировка уровень Бог...
Codero ergo sum
// Программирую — значит, существую
Mr.Delphist, да, уже разобрался, спасибо. Вот тут решение.

Fr0sT, да, кодировка анси.
Сообщение отредактировано: romserg -
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script Execution time: 0,0887 ]   [ 20 queries used ]   [ Generated: 19.10.19, 12:07 GMT ]