-
Пишу консольные приложения с использованием KOL, всё нравилось. Пока не пришлось делать массив списков строк. Завел переменную _output:array of pstrlist; В какой-то момент, задал ее длину setlength(_output,N); Далее в цикле хочу инициализировать список и добавить в него строку for i:=0 to N-1 do begin _output[i]:=New(PStrList); _output[i].Add(s); end; Не добавляет оно строку s, а тупо вылетает с Run Time Error в asm-процедуре TList.Insert на строке PUSH [EAX].fCount Если заменить добавление на очистку списка, тоже ошибка, но уже в asm-процедуре TStrList.Delete на строке MOV ECX, [EAX].TList.fItems
Пробовал заменить динамический массив на массив фиксированной длины - вылет наблюдается в другом месте. Но все же наблюдается.
Может быть я что-то конкретно недопонимаю? С простым списком все работает "на ура"..
-
Может я и не прав, но... Есть функция NewStrList, а в ней New( Result, Create );
-
for i:=0 to N-1 do begin _output[i]:=NewStrList; _output[i].Add(s); end;
-
Ок, спасибо, попробую.
-
> АртемКо (28.10.07 17:02) [3] > Ок, спасибо, попробую.
Специально ведь Кладов в уроках и мануале выделяет: используйте специальные функции-конструкторы для всех объектов. Не пользуйтесь New() напрямую ...
-
Просто меня заглючило. :) KOL использую недавно. Сначала делал как надо - NewStrList. А тут запутался.
|