WM_SETTEXT

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

WM_SETTEXT

Сообщение аsd » 08.11.2009 15:30:45

В Delphi 7 все просто:
s := 'asd';
SendMessage(Edit1, WM_SETTEXT, Length(s), lParam(s));


или так:
s := 'asd';
SendMessage(Edit1, WM_SETTEXT, 3, Integer(s));


Как сделать то же самое в FP? Пишет "Illegal type conversion":
SendMessage(Edit1, WM_SETTEXT, Length(s),
lParam(s)); // Error
Последний раз редактировалось аsd 08.11.2009 15:41:17, всего редактировалось 1 раз.
аsd
незнакомец
 
Сообщения: 7
Зарегистрирован: 08.11.2009 14:11:48

Re: WM_SETTEXT

Сообщение Mr.Smart » 08.11.2009 15:36:49

Получите сначало адрес строки, а потом делайте преобразование:
Код: Выделить всё
WParam(@s[1])

или
Код: Выделить всё
WParam(PChar(s))
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: WM_SETTEXT

Сообщение аsd » 08.11.2009 15:54:45

n := Integer(@s[1]); // ссылка на строку

И как ее использовать?

Добавлено спустя 8 минут 2 секунды:
SendMessage(Edit1, WM_SETTEXT, Length(s), lParam(PChar(s))) // не работает


Добавлено спустя 7 минут 59 секунд:
SendMessage(Edits[i], WM_SETTEXT, Length(s), Integer(@s)) // компилируется, но не работает


В то время как такое сообщение доходит:

Код: Выделить всё
[quote]SendMessage(Edits[i], WM_SETTEXT, 0, 0)
аsd
незнакомец
 
Сообщения: 7
Зарегистрирован: 08.11.2009 14:11:48

Re: WM_SETTEXT

Сообщение Mr.Smart » 08.11.2009 16:19:06

Читаем документацию http://msdn.microsoft.com/en-us/library/ms632644(VS.85).aspx и смотрим всё ли мы правильно делаем.
Код: Выделить всё
SendMessage(Edits[i], WM_SETTEXT, Length(s), Integer(@s))

Данная конструкция и не будет работать!

Код: Выделить всё
SendMessage(Edits[i], WM_SETTEXT, Length(s), Integer(@s[1]))


Ещё вопрос возникает, а что вы передаёте в первом параметре. Edits[j] - это массив чего?
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: WM_SETTEXT

Сообщение аsd » 08.11.2009 17:17:08

Edit1 или Edits[j] не суть важно.
array[0..9] of HWND

Добавлено спустя 13 минут 52 секунды:
Будет работать и так: Integer(@s), блин, ошибка была в другом.
Рабочий код:
for i:= 0 to 9 do
begin
s := 'qwe';
SendMessage(Edits[i], WM_SETTEXT, Length(s), Integer(@s[1]))
end;


Спасибо.
аsd
незнакомец
 
Сообщения: 7
Зарегистрирован: 08.11.2009 14:11:48


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru