Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.30;
Скачать: CL | DM;

Вниз

TStrList неверно работает   Найти похожие ветки 

 
misha_shar ©   (2007-08-08 17:51) [0]

Владимир при вставке через Insert в пустой список строки под индексом 1 валится программа в Paskal версии.
Я сделал изменение в 2-х программах и вроде все работает.

procedure TStrList.Delete(Idx: integer);
var P: DWORD;
   El:Pointer;
begin
if fList=nil then Exit; //??? misha_Shar добавил эту проверку

procedure TList.Insert(Idx: Integer; Value: Pointer);
begin
  Assert( (Idx >= 0) and (Idx <= FCount+1), "List index out of bounds" );
//   while fCount <= Idx do //?? misha_shar Я бы добавил эту строку но у меня все сразу завалилось пришлось ее убрать
  Add( nil );
  if fCount > Idx then
    Move( FItems[ Idx ], FItems[ Idx + 1 ], (fCount - Idx - 1) * Sizeof( Pointer ) )
  else   while fCount <= Idx do Add( nil );//?? misha_shar добавил эту строку не понял почему заработало


 
Vladimir Kladov   (2007-08-08 18:02) [1]

Я же ответил уже. Ну кто в пустой список N=0 или список длины N вставляет перед позицией N+1. В VCL на это есть стандартное исключение List index out of bounds.

Кстати, я проверял, валится и в асм-версии.


 
misha_shar ©   (2007-08-08 18:13) [2]

Как ты уже догадался конечно же я вставляю в произвольную позицию строку. Это мне надо когда несколько списков ассоциированы и индекс
фактически является ссылкой на другой список. Тем более проблемы с исправлением нет. И потом какой то из списков у тебя так работал.
VCL мне не указ. И то что там плохо сделано надо исправлять.
Ответа по почте до сих пор не получил.


 
Vladimir Kladov   (2007-08-08 18:15) [3]

Так работает TStrList. А TList подключается к коду в KOL всегда, елси есть хотя бы 1 объект от TObj. И мне совсем неинтересно прибавлять к коду эти 20 или 40 байтов ВСЕГДа.


 
misha_shar ©   (2007-08-08 18:19) [4]

Все понял. Хозяин барин.


 
Vladimir Kladov   (2007-08-08 19:54) [5]

Можно сделать опционально :) Этих опций уже столько, что можно отдельно писать талмуд по опциям в KOL :) Еще одна ситуацию вряд ли ухудшит. Кстати, я приноровился использовать опцию EXTERNAL_DEFINES или как она там, чтобы выносить список опций в inc-файл в папке проекта. Иначе и maintainance тяжёлый,  да и Delphi имеет ограничение на длину строки с опциями в проекте.


 
misha_shar ©   (2007-08-09 18:00) [6]

Опций действительно очень много но в конкретном приложении всегда используется их малая часть. И я думаю что проект не будет перегружен опциями. Я лично использую их штук 5. Но это возможно из за незнания.


 
Vladimir Kladov   (2007-08-09 21:02) [7]

Сейчас посчитал: 26, начиная с KOL_MCK.



Страницы: 1 вся ветка

Текущий архив: 2008.03.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
15-1203177531
Alien1769
2008-02-16 18:58
2008.03.30
Интересная ошибка


8-1177431081
unknowing
2007-04-24 20:11
2008.03.30
Мерцание при перерисовке(GDI+)


2-1204787605
AlexeyMir
2008-03-06 10:13
2008.03.30
Вопрос по RecordCount


15-1202993739
Тарантас
2008-02-14 15:55
2008.03.30
Установка SVN как сервера под Windowsбез Apache


15-1203006018
Cyrax
2008-02-14 19:20
2008.03.30
Общепринятый формат записи федеральных номеров сотовых телефонов~