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

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

Почему при записи в строковую переменную возникает ошибка? [D7, XP]


San1712 ©   (2007-11-03 10:51:00) 

Почему при записи в строковую переменную возникает следующая ошибка 'access violation at 0x004060e5: write of address 0x00030e04'
public
s:string;

var i:integer;
for i:=1 to StrToInt(Form2.Edit1.Text) do s:=s+Summa[random(Length(Summa))];


Leonid Troyanovsky   (2007-11-03 14:18:00) [1]


> San1712   (03.11.07 14:06) [10]

> Забыл указать что сумма у меня не строка а Summa array of char

Гы.
А больше ничего не забыл? Про Form2, например.
И почему "потом", если надо "до".

--
Regards, LVT.


San1712   (2007-11-03 14:09:00) [2]

Но когда происходит запись в строку s из массива, размер и содержимое массива определёно.


San1712   (2007-11-03 14:06:00) [3]

Забыл указать что сумма у меня не строка а Summa array of char. Размер массива я потом высталяю SetLength.


Leonid Troyanovsky   (2007-11-03 13:18:00) [4]


> oxffff ©   (03.11.07 12:29) [8]

> Если строка пустая, то будет попытка обращения к полю length
> у StrRec.

О.., вот оно вожделенное AV :)
Т.е., пустая строка и индекс 0.
Спасибо за разъяснения.

А про Range check error я напраслину погнал,
забыл ребилдить, sorry.

--
Regards, LVT.


oxffff   (2007-11-03 12:29:00) [5]


> Самое чудное, что в TD2006 во-ще никакой рантайм ошибки
> не возникает,
> т.е. для x:= 0; summa[x] просто вернет #0 :)


Если строка пустая, то будет попытка обращения к полю length у StrRec.


Leonid Troyanovsky   (2007-11-03 11:56:00) [6]


> sniknik ©   (03.11.07 11:27) [4]

> а в этом случае ошибка разве не "выход за граници массива"?

Самое чудное, что в TD2006 во-ще никакой рантайм ошибки не возникает,
т.е. для x:= 0; summa[x] просто вернет #0 :)

Ну, конечно, если писать константу: summa[0], то компилятор выдаст
[Pascal Error] Unit1.pas(17): E2157 Element 0 inaccessible - use 'Length' or 'SetLength'

--
Regards, LVT.


Reindeer Moss Eater   (2007-11-03 11:44:00) [7]

Хотя нет, вру.


Reindeer Moss Eater   (2007-11-03 11:41:00) [8]

здесь рандом не должен дать ноль


sniknik   (2007-11-03 11:27:00) [9]

> Или random выдает 0.
а в этом случае ошибка разве не "выход за граници массива"?

AV это у него скорее Form2 не создана в момент обращения.


Leonid Troyanovsky   (2007-11-03 11:11:00) [10]


> Reindeer Moss Eater ©   (03.11.07 11:03) [2]

> Точнее строка Summa пустая.

Или random выдает 0.

--
Regards, LVT.


Reindeer Moss Eater   (2007-11-03 11:03:00) [11]

Точнее строка Summa пустая.


Reindeer Moss Eater   (2007-11-03 11:01:00) [12]

строка s не инициализирована


Наверх

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