Главная страница
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.022 c
8-1169983919
T54
2007-01-28 14:31
2007.11.25
Количество точек на дюйм - ?


11-1178249686
Infarkt
2007-05-04 07:34
2007.11.25
VCL вместе с KOL


15-1193393342
Kerk
2007-10-26 14:09
2007.11.25
Синхронизация потоков


6-1164519806
DRtM
2006-11-26 08:43
2007.11.25
Как определить по редиректу реальное имя файла в сети


15-1192775222
zdm77
2007-10-19 10:27
2007.11.25
Забыл математику