![]() |
|
![]() ![]() ![]() |
|
veselchak |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 18.8.2006 Где: Иркутск Репутация: нет Всего: нет |
Здравствуйте!Вот сделал прогу,преставляющую собой обыкновенный тест. Вроде все правильно, но во время работы эгзешника возникает исключение:"Access violation addres...in module rtl.bpl.Read of addres ...".Ниже исходный текст проги
НА 237 СТРОКЕ В ТЕКСТЕ И ТОРМОЗИЛа ПРОГА(if (dl!=0 ) st->printf("%s",buf); ),НО ИСПРАВИВ ЛЯПУС(if (dl!=0 ) printf("%s",buf);) ПО СОВЕТУ ROCKIE ВОЗНИКЛА ТА ЖЕ ОШИБКА,ТОЛЬКО НА 180 СТРОКЕ
|
|||
|
||||
deniska |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 1.7.2005 Где: Троицк Репутация: нет Всего: 0 |
Отключи галку "use dynamic rtl" может поможет (вряд ли)
Скорее всего где-то с указателями намудрил. CodeGuard тебе в руки |
|||
|
||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 57 Всего: 146 |
Нашёл ошибку: строка 141 - выход за пределы массива. А отладчик глючит, посылая на строку 180.
ЗЫ Коли использешь VCL, можно было бы воспользоваться классом TStringList. ЗЗЫ Считывать файл побайтово - нехорошо. ЗЗЗЫ Ещё я бы заменил бы int GetString(int f, AnsiString *st) на int GetString(int f, AnsiString &st). Я думаю, это бы избавило от проблемы в строке 237. Или сделал бы так: st->operator =(buf);, а то printf для копирования строки - как-то жестоко ![]() Это сообщение отредактировал(а) 586 - 23.8.2006, 14:46 |
|||
|
||||
veselchak |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 18.8.2006 Где: Иркутск Репутация: нет Всего: нет |
Спасибо, 586 ,что откликнулся на мой призыв о помощи, но возникли заковырки в моей проге:
1. я заменил int GetString(int f, AnsiString *st) на int GetString(int f, AnsiString &st),но в ответ на это возникла ошибка E2288 Pointer to structure required on left side of -> or ->*. 2. А ошибку на 141 строке не заню как исправить.Если можешь напечатай код этой строки. Это сообщение отредактировал(а) veselchak - 24.8.2006, 09:08 |
|||
|
||||
586 |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 57 Всего: 146 |
st=buf; // то есть работаешь со st, как с обычной строкой TAnsiString GetString(f, str); // вызов функции
Это сообщение отредактировал(а) 586 - 24.8.2006, 10:46 |
||||
|
|||||
veselchak |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 18.8.2006 Где: Иркутск Репутация: нет Всего: нет |
586, как ликвидировать выход за пределы массива?
|
|||
|
||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 57 Всего: 146 |
Я откуда знаю. Всё зависит от v.nOtv. Я ижу, что берешь его из файла (строка 76). Или создавай нужное количество RadioButton'ов в цикле (строка 96). Пока их у тебя 4. И v.nOtv>4. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |