Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

WM_GETTEXT [D6, Win2k]


fishca ©   (2002-08-12 19:32:00) 

var
lpszText : string;

В программе создаю текстовое поле FileNameText := CreateWindowsEx(...);

Потом пытаюсь написать
SendMessage(FileNameText,20,LPARAM(lpszText));

т.е. пытаюсь получить текст текстового поля, врезультате Access Violation, что не так подскажите пожалуйста!


watcher   (2002-08-13 12:43:00) [1]

> watcher, спасибо у меня получилось

fishca первый заметил...его тоже благодари :)

> но хотелось по-подробней узнать что я делал не так!

дело в том что для string память выделяеться при присвоении.
Тоесть сначала размер буфера равный нулю, а этот буфер ти пробуешь передать функции SendMessage. В результате может
возникнуть AV, а может произойти просто порча даних.
Функция SetLength(lpszText, 1000) выделяет буфер из 1000 байт, куда и запишеться результат.

Второй Setlength() устанавливает настояшую длину string,
перещитывая ее с помощью length()


fishca   (2002-08-12 19:57:00) [2]

watcher, спасибо у меня получилось, но хотелось по-подробней узнать что я делал не так!


watcher   (2002-08-12 19:50:00) [3]

до SendMessage вызови
SetLength(lpszText, 1000);
потом (после SendMessage)
SetLength(lpszText, length(pchar(lpszText)));


fishca   (2002-08-12 19:48:00) [4]

SetLength(lpszText, 1000); Это про что?


fishca   (2002-08-12 19:44:00) [5]

Было
SendMessage(FileNameText,20,LPARAM(lpszText));


Должно быть
SendMessage(FileNameText,WM_GETTEXT,20,LPARAM(lpszText));


Ученик   (2002-08-12 19:43:00) [6]

SetLength(lpszText, 1000);


ZrenBy   (2002-08-12 19:37:00) [7]

Посчитай число параметров в SendMessage


Наверх

Титульная страница Поиск, карта сайта Написать письмо