Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.023 c
15-1192885708
к2в2
2007-10-20 17:08
2007.11.25
илюстратор + delphi


2-1194215119
SveTTT
2007-11-05 01:25
2007.11.25
Условие на пустой грид


15-1192820360
NotWinProgrammer
2007-10-19 22:59
2007.11.25
для меня открытие


2-1194191628
bagos
2007-11-04 18:53
2007.11.25
динамический массив и процедура для работы с ним


15-1192788410
Сусл
2007-10-19 14:06
2007.11.25
NTFS на внешнем винте