Текущий архив: 2002.12.05;
Скачать: CL | DM;
Вниз
Текст из ListBox Найти похожие ветки
← →
Me2 (2002-10-23 16:20) [0]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;
← →
Игорь Шевченко © (2002-10-23 16:26) [1]SendMessage(ListBox, wm_GetText, 220, Longint(@S[1]));
Кто научил ? :-))))
currentItem := SendMessage(..., LB_GETCURSEL, ...);
SendMessage (ListBox, LB_GETTEXT, currentItem, LongInt(...));
← →
MBo © (2002-10-23 16:31) [2]Может, Петцольда почитать?
> Longint(@S[1]));
Ни к чему. S же PChar, значит,достаточно
Longint(S)
>GetMem(S, 220);
Нужно выделять места на байт больше для завершающего нуля.
И вообще, стоит сначала узнать, сколько символов будет считано.
← →
Me2 (2002-10-23 16:38) [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
← →
Игорь Шевченко © (2002-10-23 16:43) [4]Если S - PChar, то LongInt(S), а не @S[1] - это же не строка.
← →
Me2 (2002-10-23 17:10) [5]Спасибо
Страницы: 1 вся ветка
Текущий архив: 2002.12.05;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.016 c