Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.20;
Скачать: CL | DM;

Вниз

и в чем ошибка   Найти похожие ветки 

 
>>DEATH<<   (2007-05-05 10:28) [0]

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]="&#163;" 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."


 
Джо ©   (2007-05-05 10:33) [1]

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


 
McSimm ©   (2007-05-05 10:33) [2]

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


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

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


 
McSimm ©   (2007-05-05 10:39) [4]


> и не пуста

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

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


 
McSimm ©   (2007-05-05 10:40) [5]

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


 
McSimm ©   (2007-05-05 10:44) [6]

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


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

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

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


 
McSimm ©   (2007-05-05 11:00) [8]


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

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

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

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


 
Vasiliy   (2007-05-05 11:29) [9]

так помоему будет лучше
if Pos("&#163;", filetext[i]) = 1 then

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2007.05.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.07 c
2-1177570386
Ega23
2007-04-26 10:53
2007.05.20
property в interface


2-1177790801
dzhagr
2007-04-29 00:06
2007.05.20
Ошибка SQL


3-1172993659
AlexLines
2007-03-04 10:34
2007.05.20
По поводу инсталяции InterBase


2-1178113619
FireWind
2007-05-02 17:46
2007.05.20
Подсчет строк в гриде.


2-1177855425
dmdel
2007-04-29 18:03
2007.05.20
RichEdit