Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

openFileDialog после конца работы,виснет программу.

84K
30 марта 2013 года
Микура
15 / / 11.02.2013
С помощью openFileDialog открываю файл,считываю из него данные,они отображаются на форме,после чего программа зависает и выходит окно "Прекращена работа программы"
С чем это может быть связано?где или в чем искать ошибку?

на всякий случай вот код:
Код:
ifstream myStream;
             OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;

             openFileDialog1->Reset() ;
             openFileDialog1->InitialDirectory = "c:\\";
             openFileDialog1->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
             openFileDialog1->FilterIndex = 2;
             openFileDialog1->RestoreDirectory = true;

             if ( openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK )
             {
               
                if ( (openFileDialog1->OpenFile()) != nullptr )
                 {
                     String^ str1;
                     str1=openFileDialog1->FileName;
                     IntPtr ptr = System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(str1);
                     char* str = (char*)ptr.ToPointer();

                     myStream.open(str);
                     myStream >> buff;
                     chislotochek=atoi(buff);
                     while(g<chislotochek)
                     {
                         for(int j=0;j<2;j++)
                         {
                             myStream >> buff;
                             mas[g][j]=atoi(buff);
                         }
                         g++;
                     }
                     myStream.close();
                }
             }
414
30 марта 2013 года
CassandraDied
763 / / 24.05.2012
Что дебаг говорит?
84K
30 марта 2013 года
Микура
15 / / 11.02.2013
Цитата: CassandraDied
Что дебаг говорит?


вообще ничего,никакой ошибки не выдает,просто виснит и прекращает работу

414
30 марта 2013 года
CassandraDied
763 / / 24.05.2012
Так не бывает.
84K
30 марта 2013 года
Микура
15 / / 11.02.2013
Цитата: CassandraDied
Так не бывает.


может это.когда программу закрываю в выводе данных вот это написано:
"Name.exe" (управляемый): "C:\Windows\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll" загружен, символы не загружены.
"Name.exe" (управляемый): "C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll" загружен, символы не загружены.
"Name.exe" (управляемый): "C:\Windows\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll" загружен, символы не загружены.
Программа "[2080] Name.exe: Управляемый" завершилась с кодом -1073741819 (0xc0000005).

414
30 марта 2013 года
CassandraDied
763 / / 24.05.2012
Связано может быть с обращением к памяти по указателю, которая была освобождена или ещё не была выделена. Например, вызов метода объекта до его создания или после его удаления. Либо попытка чтения/записи памяти по нерабочему указателю. Оберни, что возможно, в блок try/catch.
Каким образом данные выводятся на форуму?
84K
30 марта 2013 года
Микура
15 / / 11.02.2013
Цитата: CassandraDied
Связано может быть с обращением к памяти по указателю, которая была освобождена или ещё не была выделена. Например, вызов метода объекта до его создания или после его удаления. Либо попытка чтения/записи памяти по нерабочему указателю. Оберни, что возможно, в блок try/catch.
Каким образом данные выводятся на форуму?



На форме рисуются "точки",а в файле лежат их координаты.

Путем проверок,выяснилось,что такая фигня,только при загрузке файла с диска С. с другого диска грузит нормально,если файл лежит в корне.а вот если в какой-то папке,то уже не видит. Из-за чего может так быть? Что-то с памятью?

414
30 марта 2013 года
CassandraDied
763 / / 24.05.2012
Цитата:
На форме рисуются "точки",а в файле лежат их координаты.


Каким образом данные выводятся на форуму?

Цитата:
то уже не видит


Кто кого не видит?
Оберни весь код, что привёл в первом посте, в блок try/catch и запусти проект в отладочной сборке.

7
30 марта 2013 года
@pixo $oft
3.4K / / 20.09.2006
А фильтр не должен двойным nullchar'ом заканчиваться?

И да, отлаживай по шагам. Не так уж много у тебя строчек. На какой завалится, от той и будем отталкиваться
84K
30 марта 2013 года
Микура
15 / / 11.02.2013
Цитата:
А фильтр не должен двойным nullchar'ом заканчиваться?




Не знаю,все что кроме текста внутри брала с сайта мсдн,только поток не stream а ifstream взяла, так извлекать данные удобнее (другие способы работы с файлами у меня не получаются)

Цитата:
И да, отлаживай по шагам. Не так уж много у тебя строчек. На какой завалится, от той и будем отталкиваться




Все строчки проходят( на последней закрывающейся скобке такое безобразие происходит. А если путь из нескольких папок состоит,то он файл не открывает,но это ,как я выяснила,похоже из-за того что имена папок на русском, с английскими названиями или цифровыми проблем с путем нет.

7
30 марта 2013 года
@pixo $oft
3.4K / / 20.09.2006
Попробуй для начала со stream. А лучше вообще убери часть с выводом, попробуй отладь только OpenFileDialog
Цитата: Микура
если путь из нескольких папок состоит,то он файл не открывает,но это ,как я выяснила,похоже из-за того что имена папок на русском, с английскими названиями или цифровыми проблем с путем нет.

Прям как с Оперой при сохранении файлов — такие же чудеса творятся. Ну, это уже немного оффтоп

84K
30 марта 2013 года
Микура
15 / / 11.02.2013
Цитата: CassandraDied
Цитата:
На форме рисуются "точки",а в файле лежат их координаты.


Каким образом данные выводятся на форуму?

Цитата:
то уже не видит


Кто кого не видит?
Оберни весь код, что привёл в первом посте, в блок try/catch и запусти проект в отладочной сборке.



Данные из файла записываются в массив координат,а на форме рисуются точки с координатами из файла.больше никак не выводятся.
Не могу через try/catch..никак не пойму что не так,компилятор на catch ругается,хотя делаю все как в примерах,что в инете нашла

84K
30 марта 2013 года
Микура
15 / / 11.02.2013
Цитата: @pixo $oft
Попробуй для начала со stream. А лучше вообще убери часть с выводом, попробуй отладь только OpenFileDialog
Цитата: Микура
если путь из нескольких папок состоит,то он файл не открывает,но это ,как я выяснила,похоже из-за того что имена папок на русском, с английскими названиями или цифровыми проблем с путем нет.

Прям как с Оперой при сохранении файлов — такие же чудеса творятся. Ну, это уже немного оффтоп



Вот и у меня косая будет видимо.одно хорошо,там где будет применяться, проблем с русскими папками не будет,все на английском. пока заморачиваться на этом не буду.
Со стримом и без действий с файлом работает. и без опедайлога работает(с конкретным файлом)
и если диск С не трогать тоже работает). может просто у системы какие заморочки мешают. надо будет на другом компе проверять.

84K
30 марта 2013 года
Микура
15 / / 11.02.2013
Цитата: Микура
Цитата: @pixo $oft
Попробуй для начала со stream. А лучше вообще убери часть с выводом, попробуй отладь только OpenFileDialog
Цитата: Микура
если путь из нескольких папок состоит,то он файл не открывает,но это ,как я выяснила,похоже из-за того что имена папок на русском, с английскими названиями или цифровыми проблем с путем нет.

Прям как с Оперой при сохранении файлов — такие же чудеса творятся. Ну, это уже немного оффтоп




Судя по всему что-то с закрытием потока. Я на другой проге решила попробовать,там прекращение работы приложения происходит именно в этот момент. А что дальше делать не знаю,чтоб заработало.

414
30 марта 2013 года
CassandraDied
763 / / 24.05.2012
Какого типа проект? Это C++ MFC? ATL? Или что там ещё у них есть?
84K
30 марта 2013 года
Микура
15 / / 11.02.2013
Цитата: CassandraDied
Какого типа проект? Это C++ MFC? ATL? Или что там ещё у них есть?


это Это C++ CLR Windows form application

414
30 марта 2013 года
CassandraDied
763 / / 24.05.2012
Можно сделать так:

 
Код:
try{
myStream.close();
}
catch(...){}

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог