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

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

Текст из ListBox [D6, Win2k]


Me2 ©   (2002-10-23 16:20:00) 

API функцией создаю ListBox. И не получается считать из него данные. Делаю так(ListBox - это дескриптор элемента):
procedure Ok;
var
EnVar: string;
Cmdl: string;
S: Pchar;
begin
if SendMessage(ListBox, lb_GetCurSel, 0, 0) <> lb_Err then
begin
GetMem(S, 220);
SendMessage(ListBox, wm_GetText, 220, Longint(@S[1]));
Cmdl := S;
EnVar := GetEnvironmentVariable("PROSTD");
WinExec(PChar(EnVar + "\proe2001workspace.bat " + cmdl), SW_SHOW);
FreeMem(S);
SendMessage(Window, wm_Close, 0, 0);
end
else
MessageBox(0, "Error!!!", "Error", mb_Ok);
end;


Me2   (2002-10-23 17:10:00) [1]

Спасибо


Игорь Шевченко   (2002-10-23 16:43:00) [2]

Если S - PChar, то LongInt(S), а не @S[1] - это же не строка.


Me2   (2002-10-23 16:38:00) [3]

2Игорь Шевченко © (23.10.02 16:26)
Да, правильно. Теперь пишу
SendMessage(ListBox, lb_GetText, SendMessage(ListBox, lb_GetCurSel, 0, 0), Longint(@S[1]));
Если считать выходное значение(кол-во скопированных байт), то оно больше нуля, а S остается пустой.

2 MBo © (23.10.02 16:31)

> Ни к чему. S же PChar, значит,достаточно

Что значит ни к чему? lParam имеет тип Integer


MBo   (2002-10-23 16:31:00) [4]

Может, Петцольда почитать?

> Longint(@S[1]));
Ни к чему. S же PChar, значит,достаточно
Longint(S)
>GetMem(S, 220);
Нужно выделять места на байт больше для завершающего нуля.
И вообще, стоит сначала узнать, сколько символов будет считано.


Игорь Шевченко   (2002-10-23 16:26:00) [5]

SendMessage(ListBox, wm_GetText, 220, Longint(@S[1]));

Кто научил ? :-))))

currentItem := SendMessage(..., LB_GETCURSEL, ...);
SendMessage (ListBox, LB_GETTEXT, currentItem, LongInt(...));


Наверх

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