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