Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2008, 21: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 в 01:50.
Var17 вне форума Ответить с цитированием
Старый 29.04.2008, 22:57   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемма с выпадающим списком 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