![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
![]() Почему программа начала выдавать такую ошибку?
Код:
procedure CreateBuffer(Names: TStrings; var P: TBuffer); var i, j, l : integer; begin for i := 0 to Names.Count-1 do begin l:= Length(P); SetLength(P, L+Length(Names[i])+1); for J := 0 to Length(Names[i])-1 do begin if J > Length(Names[i])-1 then exit; P[L + J]:= Names[i] [J + 1]; P[L + J]:= #0; end; end; SetLength(P, Length(P)+1); P[Length(P)]:= #0; // ошибка тут end; http://i7.picsplace.ru/images/230414...2100b6a88d.png Нет ничего не возможного. Вопрос только во времени... Последний раз редактировалось Electronic_Arts, 23.04.2014 в 02:33. |
#2
|
|||
|
|||
![]() А что такое TBuffer? Динамический массив? Тогда там нумерация начинается с 0 и последний элемен имеет индекс Length()-1.
|
#3
|
||||
|
||||
![]() Код:
type TBuffer = array of Char; Код:
SetLength(P, Length(P)+1); P[Length(P)]:= #0; end; И еще одно это проблема начала возникать после того как я решил все предупреждения в логах... до этого все работало без ошибок и все предупреждения которые были решены не имели отношения к этой процедуре... Нет ничего не возможного. Вопрос только во времени... |
#4
|
|||
|
|||
![]() но ведь мы же размер увеличиваем на единицу почему -1??
после того, как размер увеличиваем на единицу, ты берёшь Length(P), который уже стал больше на единицу. например, Length(P) = 5; после Код:
SetLength(P, Length(P)+1); а здесь и будет ошибка Код:
P[Length(P)]:= #0; |
#5
|
||||
|
||||
![]() Цитата:
Код:
P[Length(P)] Код:
P[Length(P) - 1] Код:
P[High(P)] Цитата:
|
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Electronic_Arts (23.04.2014)
|
#6
|
||||
|
||||
![]() Цитата:
(например какая та переменная не используется и все такое создал для проверки кода потом забыл) poli-smen СПАСИБО High(p) - решил проблему... Нет ничего не возможного. Вопрос только во времени... |