1 / 1 / 4
Регистрация: 05.12.2012
Сообщений: 15
|
|||||||||||
1 | |||||||||||
Project raised exception class eaccessviolation with message01.03.2014, 03:03. Показов 8037. Ответов 12
Метки нет (Все метки)
Очередная тема про наболевшую тему (извиняюсь за каламбурчик и за глупую тему).
Пишу программку-редактор. Редактирую я элементы, каждый элемент - строка в массиве "f". Каждая строка заполняется согласно маске: первые 3 символа - координата "Х", пробел, еще 3 символа - координата "У". При клике ПКМ по/рядом с элементу(ом) надо запомнить его как выделенный. Таким образом, я перебираю все элементы в поисках ближайшего, если он достаточно близко (не далее 99 пикселей), я его запоминаю, как выделенный. Но лиха беда начало ловлю "ерор" в строчке
"Project lalka.exe raised exception class EAccessViolation with message 'Access violation at address 0045AED3 in module 'lalka.exe'. Write of address 00000000'. Process stopped. Use Step or Run to continue." Код проблемной функции прилагается. До написания данной функции весь код компилился и выполнялся успешно.
0
|
01.03.2014, 03:03 | |
Ответы с готовыми решениями:
12
Project raised exception class EAccessViolation with message... Project Incassaciya.exe raised exception class EAccessViolation with message 'Access violation at address Ошибка: Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address Project Hotel.exe raised exception class EAccessViolation with message"Access violation at address 007B90DA |
angstrom
|
|
01.03.2014, 03:10 | 2 |
Если я правильно понял, то строка в массиве представлена таким образом - "123 456". Тогда как можно использовать для такой записи StrToInt(f[0])?
|
1 / 1 / 4
Регистрация: 05.12.2012
Сообщений: 15
|
||||||
01.03.2014, 03:17 [ТС] | 3 | |||||
Нулевая строчка хранит в себе длину массива, а записи начинаются с 1 строчки, все записи туда идут программно, потому проверки не требуют. Проверил, в моем примере массив имеет вид:
0
|
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
|
||||||
01.03.2014, 07:51 | 4 | |||||
Если массив f динамический, то нужно
0
|
139 / 137 / 66
Регистрация: 15.05.2012
Сообщений: 515
|
|||||||||||
01.03.2014, 12:21 | 5 | ||||||||||
Правильно будет
0
|
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
01.03.2014, 12:25 | 6 |
0
|
пофигист широкого профиля
4735 / 3168 / 860
Регистрация: 15.07.2013
Сообщений: 18,255
|
|
01.03.2014, 17:35 | 7 |
Сообщение было отмечено Morik666 как решение
Решение
1
|
1 / 1 / 4
Регистрация: 05.12.2012
Сообщений: 15
|
||||||
01.03.2014, 17:46 [ТС] | 8 | |||||
Спасибо. Завтыкал. Давно не работал со стрингами.
Хотел бы спросить, как правильно выделять память. У себя в программе вылечил таким макаром:
0
|
пофигист широкого профиля
4735 / 3168 / 860
Регистрация: 15.07.2013
Сообщений: 18,255
|
|
01.03.2014, 19:08 | 9 |
Сообщение было отмечено Morik666 как решение
Решение
1
|
1 / 1 / 4
Регистрация: 05.12.2012
Сообщений: 15
|
||||||
02.03.2014, 02:53 [ТС] | 10 | |||||
BTW.
Нашел прекрасную функцию: "copy". Для моего примера будет выглядеть так:
0
|
angstrom
|
02.03.2014, 02:58
#11
|
Не по теме: Чтение справки могло давно помочь в решении проблемы. |
пофигист широкого профиля
4735 / 3168 / 860
Регистрация: 15.07.2013
Сообщений: 18,255
|
|
02.03.2014, 03:11 | 12 |
Естественно. Все функции работающие именно со строками дядюшка Борланд изначально сделал (и продолжает делать) так, что они сами заботятся о выделении/освобождении памяти. Даже свой менеджер памяти для этого написал. Точнее не только для строк, а ещё и для динамических массивов.
Вот только со строками можно работать как собственно со строками, так и как с динмассивами. Последнее не запрещено, но оставлено на совесть программисту.. Добавлено через 2 минуты Не соглашусь. Справка о таких тонкостях либо молчит, либо адресуется к тем, кто уже и так все знает.
0
|
angstrom
|
|
02.03.2014, 22:44 | 13 |
Не соглашайся, у каждого свой опыт.
|
02.03.2014, 22:44 | |