![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
tstrings [D2005, XP]
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]
> использовал, то же самое..
Этого неможет быть ...