Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2008.03.30;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "KOL";
Текущий архив: 2008.03.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.048 c
15-1203212318
korneley
2008-02-17 04:38
2008.03.30
Аудит Wi-Fi сетей


2-1204541274
Matveih1
2008-03-03 13:47
2008.03.30
Как сделать столбец в StringGrid не видимым


15-1202622908
Cyrax
2008-02-10 08:55
2008.03.30
Обязаны ли комп. магазины заполнять гарантийн талон производител


2-1204610265
wasko
2008-03-04 08:57
2008.03.30
TFileStream


2-1204396606
максим
2008-03-01 21:36
2008.03.30
memo с канвой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский