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

Ваш аккаунт

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

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

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

fopen работает через раз (+)

8.5K
28 марта 2005 года
antpu238
12 / / 02.03.2005
в каталоге есть несколько файлов - впектры 4096 строк, в каждой строке число.

у меня на форме 2 можно эти файл просуммировать и результат записать в новый файл - суммиарный спектр. Этот новый файл закрывается для записи и здесь конец функции, закрывается форма 2.

Так вот, если теперь открывать этот новый файл из формы 1, то
in = fopen( path, "r" );
ссылка in равна NULL, хотя файл реально существует.

Если перезагрузить программу, то все работает.
Так же не понятно, то, что если суммировать другие файлы (из другого каталога), то все ОК с первого раза (без перезагрузки).

файлы открываю читаю/записываю при помощи <stdio.h>

FILE *in;
float R[N];
...
in = fopen( Edit1->Text.c_str(), "w" );
fprintf( in,"%f", R[N] );

а вопрос вот какой: это и есть глюкавость Builder'a?

Антон
259
28 марта 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by antpu238
в каталоге есть несколько файлов - впектры 4096 строк, в каждой строке число.

у меня на форме 2 можно эти файл просуммировать и результат записать в новый файл - суммиарный спектр. Этот новый файл закрывается для записи и здесь конец функции, закрывается форма 2.

Так вот, если теперь открывать этот новый файл из формы 1, то
in = fopen( path, "r" );
ссылка in равна NULL, хотя файл реально существует.

Если перезагрузить программу, то все работает.
Так же не понятно, то, что если суммировать другие файлы (из другого каталога), то все ОК с первого раза (без перезагрузки).

файлы открываю читаю/записываю при помощи <stdio.h>

FILE *in;
float R[N];
...
in = fopen( Edit1->Text.c_str(), "w" );
fprintf( in,"%f", R[N] );

а вопрос вот какой: это и есть глюкавость Builder'a?

Антон


Это не глюкавость Buildera а корявость вопроса. Где в форме1 открывается файл? Если при создании формы, то там и не может ничего окрыться. А очень похоже на то.

8.5K
29 марта 2005 года
antpu238
12 / / 02.03.2005
Цитата:
Originally posted by AlexandrVSmirno
Это не глюкавость Buildera а корявость вопроса. Где в форме1 открывается файл? Если при создании формы, то там и не может ничего окрыться. А очень похоже на то.




создается файл при нажатии кнопки на форме2. После этого созданный файл открывается при нажатии кнопки на форме1.
Только иногда это работает, а иногда нет. Все это я описал выше.

259
29 марта 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by antpu238
создается файл при нажатии кнопки на форме2. После этого созданный файл открывается при нажатии кнопки на форме1.
Только иногда это работает, а иногда нет. Все это я описал выше.


А на форме2, созданный файл закрывается?. Поскольку эффект проявляется именно после выхода из проги, попробуем проанализировать ситуацию.
Почему может не открываться файл?
1. Его просто нет. (но утверждается, что он есть)
2. Если файл создается через create file, то даже если он есть для проги его все равно, что нет, пока файл не будет закрыт.
3. NULL NULL-ом, а ошибка открытия какя. Я бы полюбопытсвовал. А то гадание на кофейной гуще получается.

8.5K
29 марта 2005 года
antpu238
12 / / 02.03.2005
Цитата:
Originally posted by AlexandrVSmirno
А на форме2, созданный файл закрывается?. Поскольку эффект проявляется именно после выхода из проги, попробуем проанализировать ситуацию.
Почему может не открываться файл?
1. Его просто нет. (но утверждается, что он есть)
2. Если файл создается через create file, то даже если он есть для проги его все равно, что нет, пока файл не будет закрыт.
3. NULL NULL-ом, а ошибка открытия какя. Я бы полюбопытсвовал. А то гадание на кофейной гуще получается.



БЛИН! ошибся я.
ссылка равна NULL, когда я хочу файл открыть для записи

#define outDir "c:\\_MyTemp\\"

tmp = outDir;
tmp = tmp + "11.res";
out1 = fopen( tmp.c_str(),"w" );

файлы закрываются fclose( ... );

единственное что - это ссылки называются одинаково in1 в форме1 и in1 в форме2 для чтения файла и out для записи.

8.5K
29 марта 2005 года
antpu238
12 / / 02.03.2005
Цитата:
Originally posted by antpu238
БЛИН! ошибся я.
ссылка равна NULL, когда я хочу файл открыть для записи

#define outDir "c:\\_MyTemp\\"

tmp = outDir;
tmp = tmp + "11.res";
out1 = fopen( tmp.c_str(),"w" );

файлы закрываются fclose( ... );

единственное что - это ссылки называются одинаково in1 в форме1 и in1 в форме2 для чтения файла и out для записи.



вот еще что обнаружил. Если я суммирую много (43) файлов, то есть эта фигня, а если мало (9 штук), то тогда все нормально out1 не равна NULL

8.5K
29 марта 2005 года
antpu238
12 / / 02.03.2005
вопрос снят!
на форме2 при суммировании я не все файлы закрыл. Теперь все работает :)!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог