![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Voldemar2004 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
Есть класс:
Выдает ошибку: ![]() В методе
ругается на
Что не так ? Это сообщение отредактировал(а) Voldemar2004 - 25.1.2010, 17:34 -------------------- i_i (';') (V) ![]() |
||||||
|
|||||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
Полагаю в выделенной строке ошибки не должно быть, по F7 зайдите в саму функцию, а вообще передается нормальный FileName?
|
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
NewDima, отдельно ф-ция
Это сообщение отредактировал(а) Voldemar2004 - 25.1.2010, 17:43 -------------------- i_i (';') (V) ![]() |
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
Вот скажите, нахрена:
n=StrCount(FileName); array = new string[StrCount(FileName)]; ?? |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
comcon1,
так лучше -------------------- i_i (';') (V) ![]() |
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
Сделай пжлст printf(Filename.c_str()); перед вызовом
|
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
comcon1, да это все нормально !
Я так делаю:
Добавлено через 6 минут и 38 секунд Среда IDE - С++ Builder 6.6 -------------------- i_i (';') (V) ![]() |
|||
|
||||
| Voldemar2004 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
Ошибка только, когда идет присвоение n значения StrCount()
Вот где ошибка:
и дальше не идет -------------------- i_i (';') (V) ![]() |
||||
|
|||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
n = StrCount(FileName.c_str()); - убери c_str, у тебя же функция принимает string
|
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
comcon1, и так и так пробовал - убирал - та же ошибка -------------------- i_i (';') (V) ![]() |
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
ну а ничо, что ты конвертируешь signed long int в int, но там такой ошибки не должно быть. У тебя дебаггер в функцию входит?
|
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
comcon1, да я уже привел все к одному типу int
Добавлено через 10 минут и 1 секунду
-------------------- i_i (';') (V) ![]() |
|||
|
||||
| casey |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 20.12.2006 Где: Украина Репутация: 1 Всего: 2 |
поменяй if( File.fail() ) return -1;
на if( File.fail() ) return 0; потому что n=StrCount(FileName); (т.е. -1 при невалидном файле) array = new string[StrCount(FileName)]; (array = new string[-1]) и потом в деструкторе if(n) delete[] array; - Access Violation |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
casey, ерунда - я даже удалил
все равно та же ошибка.... может C++ Builder тупит ? -------------------- i_i (';') (V) ![]() |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
похоже что где-то происходит порча кучи.
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
Как бы проверить ? :( Может переустановка Windows и C++ Builder 6.6 поможет ?
-------------------- i_i (';') (V) ![]() |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
нет. тот код что ты показал, весь? ничего не скрыл? Добавлено через 38 секунд покажи теперешний код, после всех поправок. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| casey |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 20.12.2006 Где: Украина Репутация: 1 Всего: 2 |
сорри, тупонул
Это сообщение отредактировал(а) casey - 25.1.2010, 20:15 |
|||
|
||||
| andrew_121 |
|
||||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
а почему бы просто не написать по нормальному? ;)
-------------------- Удалил аккаунт. Прощайте! |
||||
|
|||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
Это сообщение отредактировал(а) Voldemar2004 - 25.1.2010, 20:31 -------------------- i_i (';') (V) ![]() |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
Voldemar2004, это гуд. а теперь сделай как я показал, и избавишься от лишнего метода. и никакой динамической памяти, ошибок, и остальной каки
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| casey |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 20.12.2006 Где: Украина Репутация: 1 Всего: 2 |
ну ты даешь... и тут еще поменяй
Это сообщение отредактировал(а) casey - 25.1.2010, 20:50 |
||||
|
|||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
Voldemar2004, не понятно какой именно тайный смысл ты преследовал написав такой код, но вот эквивалентный код. помоему проще
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
andrew_121,
не работает -------------------- i_i (';') (V) ![]() |
|||
|
||||
| andrew_121 |
|
||||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
должно быть так:
Добавлено через 57 секунд а лучше так:
Добавлено через 1 минуту и 25 секунд и стрелочки не забудь на точки поменять. Добавлено через 1 минуту и 44 секунды и на плюсик нажать -------------------- Удалил аккаунт. Прощайте! |
||||
|
|||||
| casey |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 20.12.2006 Где: Украина Репутация: 1 Всего: 2 |
Еще раз, нужно память выделить:
или
|
||||
|
|||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
andrew_121,
Так ? Добавлено @ 21:15 это где ? Как получить значение по индексу из array ? Какой там метод ? Это сообщение отредактировал(а) Voldemar2004 - 25.1.2010, 21:16 -------------------- i_i (';') (V) ![]() |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
там где повышение репутации, снизу под аватаром.
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
andrew_121, хотя интересно, в чем же была проблема ?
-------------------- i_i (';') (V) ![]() |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Был access violation, т.е. запись за границы приложения по адресу 0. Это, по любому, глючность приложения, а не компилятора... -------------------- вопросов больше чем ответов |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Это не я сказал Это сообщение отредактировал(а) Леопольд - 26.1.2010, 13:31 -------------------- вопросов больше чем ответов |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
нда.. на картинку то я и не посмотрел.. исходил из опыта о неинициализрованном указателе.. в любом случае, что адрес оказался 0 это случайность зависящая в частности от настроения (то бишь настроек) компилятора. |
|||
|
||||
| Voldemar2004 |
|
||||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
mes,
странно, что ошибку выдает только при присвоении !! Сегодня еще поковырял свой код: то, что было:
Поменял всего в одной строке:
И заработало !
Добавлено через 3 минуты и 6 секунд Вот где была ошибка:
надо было дописать:
забыл Еще метод добавил SaveToFile - чтобы проверить считывает ли в массив, нормально считал и записал в файл -------------------- i_i (';') (V) ![]() |
||||||||||||
|
|||||||||||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
я бы сделал так:
Добавлено через 42 секунды но в таком случае пропадает надобность в методе StrCount() -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
andrew_121, где почитать, чтобы толково объяснено было про вектора:
-------------------- i_i (';') (V) ![]() |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
где и всегда: http://www.cplusplus.com/reference/ весь STL описан. даже примеры почти ко всему. Это сообщение отредактировал(а) andrew_121 - 26.1.2010, 20:51 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Ну так все кроме Вас уже это давно знали.. пока this не используется чего ошибками то кидать, а как попытались записать (n член класса, а значит доступ через this) так сразу и обнаружилась невалидность указателя. |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
по идее кол-во строк можно посчитать так:
но значение получается намного больше чем строк строк в файле на самом деле. может кто-то объяснит? Это сообщение отредактировал(а) andrew_121 - 26.1.2010, 22:01 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
andrew_121, у меня пишет "Ошибка синтаксиса" даже не компилится...
-------------------- i_i (';') (V) ![]() |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
Voldemar2004, покажи вывод компилятора.
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
andrew_121, да пишет "Ошибка синтаксиса" и все... ругается на:
у меня C++ Builder, а ты в какой IDE ? -------------------- i_i (';') (V) ![]() |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
борланд славится своими падениями на шаблонах. может внутренняя ошибка компилятора? у меня нет IDE Добавлено через 1 минуту и 51 секунду попробуй убери "std::" где-то видел что у борланда пространство имен std открыто по умолчанию. Добавлено через 2 минуты и 50 секунд кстати, добавь: #include <algorithm> -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
завтра попробую Это сообщение отредактировал(а) Voldemar2004 - 26.1.2010, 23:21 -------------------- i_i (';') (V) ![]() |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |