Текущий архив: 2007.11.25;
Скачать: CL | DM;
Вниз
Почему при записи в строковую переменную возникает ошибка? Найти похожие ветки
← →
San1712 (2007-11-03 10:51) [0]Почему при записи в строковую переменную возникает следующая ошибка "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))];
← →
Reindeer Moss Eater © (2007-11-03 11:01) [1]строка s не инициализирована
← →
Reindeer Moss Eater © (2007-11-03 11:03) [2]Точнее строка Summa пустая.
← →
Leonid Troyanovsky © (2007-11-03 11:11) [3]
> Reindeer Moss Eater © (03.11.07 11:03) [2]
> Точнее строка Summa пустая.
Или random выдает 0.
--
Regards, LVT.
← →
sniknik © (2007-11-03 11:27) [4]> Или random выдает 0.
а в этом случае ошибка разве не "выход за граници массива"?
AV это у него скорее Form2 не создана в момент обращения.
← →
Reindeer Moss Eater © (2007-11-03 11:41) [5]здесь рандом не должен дать ноль
← →
Reindeer Moss Eater © (2007-11-03 11:44) [6]Хотя нет, вру.
← →
Leonid Troyanovsky © (2007-11-03 11:56) [7]
> 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.
← →
oxffff © (2007-11-03 12:29) [8]
> Самое чудное, что в TD2006 во-ще никакой рантайм ошибки
> не возникает,
> т.е. для x:= 0; summa[x] просто вернет #0 :)
Если строка пустая, то будет попытка обращения к полю length у StrRec.
← →
Leonid Troyanovsky © (2007-11-03 13:18) [9]
> oxffff © (03.11.07 12:29) [8]
> Если строка пустая, то будет попытка обращения к полю length
> у StrRec.
О.., вот оно вожделенное AV :)
Т.е., пустая строка и индекс 0.
Спасибо за разъяснения.
А про Range check error я напраслину погнал,
забыл ребилдить, sorry.
--
Regards, LVT.
← →
San1712 (2007-11-03 14:06) [10]Забыл указать что сумма у меня не строка а Summa array of char. Размер массива я потом высталяю SetLength.
← →
San1712 (2007-11-03 14:09) [11]Но когда происходит запись в строку s из массива, размер и содержимое массива определёно.
← →
Leonid Troyanovsky © (2007-11-03 14:18) [12]
> San1712 (03.11.07 14:06) [10]
> Забыл указать что сумма у меня не строка а Summa array of char
Гы.
А больше ничего не забыл? Про Form2, например.
И почему "потом", если надо "до".
--
Regards, LVT.
Страницы: 1 вся ветка
Текущий архив: 2007.11.25;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.04 c