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

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

и в чем ошибка


>>DEATH<< ©   (2007-05-05 10:28:00) 

var
 filetext, l1, l2, l3:Tstringlist;
...
procedure sep;
var
 i:integer;
begin
 for i:=0 to filetext.Count-1 do begin
   if filetext[i][1]='£' then
     l1.Add(filetext[i])
   else if filetext[i][1]='$' then
     l2.Add(filetext[i])
  else if filetext[i][1]='%' then
    l3.Add(filetext[i]);
 end;
end;

как я понял чтото с циклом если подставить вместо i цифру все работает,, а так выдает "access Violation at address 00461b2a in module 'project1.exe'. Read address 00000000."


>>DEATH<<   (2007-05-05 12:15:00) [1]

вообщем понятно,,спасибо!!!!


Vasiliy   (2007-05-05 11:29:00) [2]

так помоему будет лучше
if Pos('£', filetext[i]) = 1 then

Иначе если filetext[i] = '' будет выскакивать ошибка


McSimm   (2007-05-05 11:00:00) [3]


> при тесте все строки не пустые

Если файл заканчивается переводом строки, то последняя строка в файле - пустая.

Когда вы обращаетесь к N-му символу строки, необходимо сначала убедится, что строка имеет длину минимум N.

В вашем примере в начале цикла можно проверить строку на нулевую длину и сделать continue


>>DEATH<<   (2007-05-05 10:50:00) [4]

все листы точно созданы несколько раз проверял думал в этом ошибка,,

при тесте все строки не пустые,,но в дальнейшем могут быть и пустыми как это исправить


McSimm   (2007-05-05 10:44:00) [5]

Если включить телепатор, то пуста последняя строка :)
Как я понял, они читаются из файла, это обычно так и бывает.


McSimm   (2007-05-05 10:40:00) [6]

и, конечно, все остальные листы тоже должны быть созданы


McSimm   (2007-05-05 10:39:00) [7]


> и не пуста

Все его строки?

В цикле проход по всем строкам, одна из них возможно пустая.


>>DEATH<<   (2007-05-05 10:37:00) [8]

filetext создона и не пуста,,допустим если прописать
showmessage(filetext[1][1]); все нормально


Джо   (2007-05-05 10:33:00) [9]

Если filetext[i] содержит пустую строку, то при обращении к ее [1] символу и выйдет AV Read address 00000000.


McSimm   (2007-05-05 10:33:00) [10]

Или filetext не создан, тогда AV - обращение к свойству несозданного объекта
или filetext[i] - пустая строка, тогда AV- обращение к [1] символу


Наверх

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