Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

tstrings [D2005, XP]


Страницы:   1 2 3

Sergioni ©   (2006-09-20 01:05:00) 

Привет Мастерам!

мне нужно временное хранилище строк, думаю использовать tstrings
при попытке использования вылетает ошибка abstract error
как же правильно использовать?

я делаю так:
объявляю в public
str:tstrings;

в formcreate
str:=tstrings.create;

и  дальше добавляю str.add('string');


MBo   (2006-09-21 05:15:00) [21]

>Что не правльно?
Этот фрагмент в общем-то правильный, но нестандартный, и на каждом шаге лишняя работа по вычислению i-1 может делаться.
Ведь если индексы идут от 0 до Count-1, то и цикл логично по этому диапазону делать, да и читающий код его мгновенно воспримет.


Германн   (2006-09-21 02:23:00) [22]


> Sergioni   (21.09.06 02:06) [20]

Тогда приведи весь код! Без ... и с определением функции(процедуры, метода).


SergP   (2006-09-21 02:23:00) [23]

> [18] Sergioni   (21.09.06 01:46)
> for i:=1 to str.count do
> begin
> ....
> str.strings[i-1]...
> ....
> end;
>
> а что сдесь не правильно?


Теоретически в приведенном коде все правильно.  Хотя для ясности лучше смотрелось бы:

for i:=0 to str.count-1 do
begin
....
str.strings[i]...
....
end;

Но не видно остального кода...
А вдруг ты вздумал в цикле удалять какие-нить строки или еще чего с ними вытворять....?


Eraser   (2006-09-21 02:18:00) [24]

> [18] Sergioni   (21.09.06 01:46)


> а что сдесь не правильно?

1. Убого.
2. Избыточность кода.

> если str.count = 0 - то цикл выполнится 1 раз и при обращении
> к str.strings[i] будет ошибка

это утвержение не правильно, т.к. не соответствует действительности, т.е., по-просу говоря, чушь.


Sergioni   (2006-09-21 02:06:00) [25]


> Zeqfreed ©   (20.09.06 07:26) [13]


поясни правильность твою и неправльность мою..
хочется знать, можеет я что не так написал ..

и отчего "плакал"?


Sergioni   (2006-09-21 02:04:00) [26]


> MBo ©   (20.09.06 06:23) [11]


Что не правльно?
поясни плиз..


Sergioni   (2006-09-21 01:46:00) [27]

for i:=1 to str.count do
begin
....
str.strings[i-1]...
....
end;

а что сдесь не правильно?


MBo   (2006-09-20 08:02:00) [28]

>что беззнаковые переменные нехорошо использовать в качестве счетчика цикла.
Это точно. Легко получить ошибку - пусть не трудноуловимую, но иногда обескураживающую


Loginov Dmitry   (2006-09-20 07:53:00) [29]

MBo ©   (20.09.06 7:29) [14]
А для чего if ?


Тоже года четыре назад так писал, пока не объяснили, что беззнаковые переменные нехорошо использовать в качестве счетчика цикла.


Zeqfreed   (2006-09-20 07:33:00) [30]

> [14] MBo ©   (20.09.06 07:29)

Блин, всегда писал :) Сегодня благодаря доброму человеку с ником MBo прочитал справку:

If initialValue is greater than finalValue in a for...to statement, or less than finalValue in a for...downto statement, then statement is never executed.

Спасибо :)


MBo   (2006-09-20 07:29:00) [31]

>Zeqfreed
А для чего if ?


Zeqfreed   (2006-09-20 07:26:00) [32]

> [10] Sergioni   (20.09.06 01:58)

«Я плакал».
Правильный цикл выглядит так:

if (List.Count > 0) then
 for i := 0 to List.Count - 1 do begin

 end;


Думкин   (2006-09-20 06:52:00) [33]

> Sergioni   (20.09.06 01:34) [6]

Your Error is Top secret?


MBo   (2006-09-20 06:23:00) [34]

>нерациональный алгоритм, объясняю:
>если str.count = 0 - то цикл выполнится 1 раз

Это ты сам придумал? А неправильно.


Sergioni   (2006-09-20 01:58:00) [35]


> alex-drob

нерациональный алгоритм, объясняю:
если str.count = 0 - то цикл выполнится 1 раз и при обращении к str.strings[i] будет ошибка

а если начинать с i=1 то при str.count равном 0 цикл будет завершен сразу...


alex-drob   (2006-09-20 01:42:00) [36]

for i:=0 to str.count-1 do


Sergioni   (2006-09-20 01:41:00) [37]

почти не меняется..


cp.Silver   (2006-09-20 01:38:00) [38]

Памяти не хватает (скорее всего). У меня тоже такая история была. Проверь сколько exe занимает места в памяти до и после загрузки данных в str


Sergioni   (2006-09-20 01:34:00) [39]

СПАСИБКИ!
попробовал еще раз - получилось!
но вот следующий баг:
загружаю в него строки из файла (получается 917)
потом в цикле обрабатываю строки
for i:=1 to str.count do
begin
....
str.strings[i-1]...
....
end;
как только доходит до 916 возникает ошибка...
в чем дело - не пойму.. :(


SPACE!!   (2006-09-20 01:19:00) [40]


> использовал, то же самое..

Этого неможет быть ...


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо