Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 29.04.2008, 20:07   #1
Var17
Пользователь
 
Регистрация: 13.12.2007
Сообщений: 41
По умолчанию проблема со списком строк

Список строк создается функцией:
Код:
function CreateList(x, y, width, height, id: Integer):HWND;
begin
  CreateList:=
   CreateWindowEx(WS_EX_CLIENTEDGE, 'LISTBOX', nil, WS_CHILD or WS_VISIBLE or LBS_NOTIFY or
                WS_BORDER or WS_TABSTOP,
                x, y, width, height, hParentWnd,
                HMENU(id), hAppInst, nil);
end;
Получение текста строки по индексу :
Код:
function GetListItemText(id: Integer; index: Integer):String;
var buffer: String;
begin
  SetLength(buffer,
            SendDlgItemMessage(hParentWnd, id, LB_GETTEXTLEN, index, 0)
            );
  SendDlgItemMessage(hParentWnd, id, LB_GETTEXT, index,
                     Integer(Addr(buffer)));
  GetListItemText := buffer;
end;
Необходимо получить текст строки по индексу, проблема в том что при использовании функции GetListItemText возникет исключение EAccessViolation. Буду признателен если поможете разобраться с проблемой.
----------------
Не забывайте тэг <CODE>

Последний раз редактировалось B_N; 30.04.2008 в 00:50.
Var17 вне форума Ответить с цитированием
Старый 29.04.2008, 21:57   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,072
По умолчанию

попробуй увеличить размер буфера(buffer) на 1 для завершающего $0
evg_m вне форума Ответить с цитированием
Старый 30.04.2008, 08:04   #3
Var17
Пользователь
 
Регистрация: 13.12.2007
Сообщений: 41
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
попробуй увеличить размер буфера(buffer) на 1 для завершающего $0
Можешь пояснить? Я не совсем понял.
Var17 вне форума Ответить с цитированием
Старый 01.05.2008, 07:58   #4
rpy3uH
добрый няша
СуперМодератор
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,808
По умолчанию

длина каждой строки всегда на еденицу больше, чем количество символов в ней. $0 в конце нужен для того чтобы обозначить конец строки.
rpy3uH вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемма с выпадающим списком mma БД в Delphi 1 24.01.2008 18:31
Excel max 256 строк VS user надо 300 строк Exo Microsoft Office Excel 3 10.01.2008 17:14
Вопрос по полю со списком 6ePKyT Microsoft Office Access 3 28.11.2007 17:31
Помогите с раскрывающимся списком regdown Microsoft Office Excel 1 25.12.2006 20:17


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840