Проблема при работе с файлами
От: rsn  
Дата: 10.07.02 08:55
Оценка:
У меня проблема при работе с файлами:
Открываю файл через fopen

fhandle = open(filename1, "rb");
if (fhandle == NULL) return NULL;
Открывается нормально, затем при обращении к файлу через любую функцию (по крайней мере fread, fseek)
возникает ошибка
readed=fread(buf1, 1, 10, fhandle);
The instruction at "0x77f83941" referenced memory at "0x0000010". The memory could not be "written".
То есть программа обратилась к памяти куда-не-надо. При отладки загружаеться NTDLL.DLL.
Параметры я проверял — все в порядке.
Все происходит под Win2K, Visual C++ 6.0.
Re: Проблема при работе с файлами
От: SergH Россия  
Дата: 10.07.02 08:58
Оценка:
Здравствуйте rsn, Вы писали:


rsn>У меня проблема при работе с файлами:

rsn>Открываю файл через fopen

rsn> fhandle = open(filename1, "rb");

rsn> if (fhandle == NULL) return NULL;
rsn>Открывается нормально, затем при обращении к файлу через любую функцию (по крайней мере fread, fseek)
rsn>возникает ошибка
rsn> readed=fread(buf1, 1, 10, fhandle);
rsn>The instruction at "0x77f83941" referenced memory at "0x0000010". The memory could not be "written".
rsn>То есть программа обратилась к памяти куда-не-надо. При отладки загружаеться NTDLL.DLL.
rsn>Параметры я проверял — все в порядке.
rsn>Все происходит под Win2K, Visual C++ 6.0.

Если ползуешься fread, нужно открывать файл fopen'ом
И наоборот, если открываешь open'ом, используй read.
Делай что должно, и будь что будет
Re: Проблема при работе с файлами
От: Slayer Россия  
Дата: 10.07.02 09:00
Оценка:
Здравствуйте rsn, Вы писали:


rsn>У меня проблема при работе с файлами:

rsn>Открываю файл через fopen

rsn> fhandle = open(filename1, "rb");

rsn> if (fhandle == NULL) return NULL;
rsn>Открывается нормально, затем при обращении к файлу через любую функцию (по крайней мере fread, fseek)
rsn>возникает ошибка
rsn> readed=fread(buf1, 1, 10, fhandle);
rsn>The instruction at "0x77f83941" referenced memory at "0x0000010". The memory could not be "written".
rsn>То есть программа обратилась к памяти куда-не-надо. При отладки загружаеться NTDLL.DLL.
rsn>Параметры я проверял — все в порядке.
rsn>Все происходит под Win2K, Visual C++ 6.0.


Приведи кусок кода со всеми объявлениями.
Re: Проблема при работе с файлами
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 10.07.02 09:02
Оценка:
Здравствуйте rsn, Вы писали:


rsn>У меня проблема при работе с файлами:

rsn>Открываю файл через fopen

int _open( const char *filename, int oflag [, int pmode] );

возвращает handle файла для низкоуровневого ввода/вывода (типа int).


size_t fread( void *buffer, size_t size, size_t count, FILE *stream );

Требует 4-м параметром FILE* для осуществления потокового ввода/вывода. Ты же ему вместо указателя даешь число, к.рое, приведенное к указателю, дает какой-попало адрес (типа 0x00000004, например).

Открывать файлы для потокового IO надо с помощью fopen, и вообще смотреть, где f есть сначала, а где нет.






rsn> fhandle = open(filename1, "rb");

rsn> if (fhandle == NULL) return NULL;
rsn>Открывается нормально, затем при обращении к файлу через любую функцию (по крайней мере fread, fseek)
rsn>возникает ошибка
rsn> readed=fread(buf1, 1, 10, fhandle);
rsn>The instruction at "0x77f83941" referenced memory at "0x0000010". The memory could not be "written".
rsn>То есть программа обратилась к памяти куда-не-надо. При отладки загружаеться NTDLL.DLL.
rsn>Параметры я проверял — все в порядке.
rsn>Все происходит под Win2K, Visual C++ 6.0.
Алексей Кирдин
Re[2]: Проблема при работе с файлами
От: rsn  
Дата: 10.07.02 10:34
Оценка:
Здравствуйте Slayer, Вы писали:

S>Здравствуйте rsn, Вы писали:



rsn>>У меня проблема при работе с файлами:

rsn>>Открываю файл через fopen

rsn>> fhandle = open(filename1, "rb");

rsn>> if (fhandle == NULL) return NULL;
rsn>>Открывается нормально, затем при обращении к файлу через любую функцию (по крайней мере fread, fseek)
rsn>>возникает ошибка
rsn>> readed=fread(buf1, 1, 10, fhandle);
rsn>>The instruction at "0x77f83941" referenced memory at "0x0000010". The memory could not be "written".
rsn>>То есть программа обратилась к памяти куда-не-надо. При отладки загружаеться NTDLL.DLL.
rsn>>Параметры я проверял — все в порядке.
rsn>>Все происходит под Win2K, Visual C++ 6.0.


S>Приведи кусок кода со всеми объявлениями.




Объявления переменных:

FILE *fhandle1;
static unsigned char buf1[11];
int readed;
Затем,
fhandle = fopen(filename1, "rb");
if (fhandle == NULL) return NULL;

В предыдущем сообщении глюк закрался, конечно же fopen и fread,
иначе фиг бы я программу скомпилировал

Далее readed=fread(buf1, 1, 10, fhandle);
и тут все вылетает.
Работу fopen я проверял ferror, нету ошибок при открытии..

Как видите ошибиться вроде бы негде):
Re[3]: Проблема при работе с файлами
От: SergH Россия  
Дата: 10.07.02 10:43
Оценка:
Здравствуйте rsn, Вы писали:

rsn>Объявления переменных:


rsn>FILE *fhandle1;

rsn> static unsigned char buf1[11];
rsn> int readed;
rsn>Затем,
rsn> fhandle = fopen(filename1, "rb");
rsn> if (fhandle == NULL) return NULL;

rsn>В предыдущем сообщении глюк закрался, конечно же fopen и fread,

rsn>иначе фиг бы я программу скомпилировал

rsn>Далее readed=fread(buf1, 1, 10, fhandle);

rsn>и тут все вылетает.
rsn>Работу fopen я проверял ferror, нету ошибок при открытии..

rsn>Как видите ошибиться вроде бы негде):


Действительно, ошибок не видно. Тогда так:

1. Программа падает на любом файле или только на каком-то конкретном?
2. Попробуй open/read.
3. Попробуй под отладчиком зайти в fread.
Делай что должно, и будь что будет
Re[4]: Проблема при работе с файлами
От: rsn  
Дата: 10.07.02 10:50
Оценка:
Здравствуйте SergH, Вы писали:

SH>Здравствуйте rsn, Вы писали:


rsn>>Объявления переменных:


rsn>>FILE *fhandle1;

rsn>> static unsigned char buf1[11];
rsn>> int readed;
rsn>>Затем,
rsn>> fhandle = fopen(filename1, "rb");
rsn>> if (fhandle == NULL) return NULL;

rsn>>В предыдущем сообщении глюк закрался, конечно же fopen и fread,

rsn>>иначе фиг бы я программу скомпилировал

rsn>>Далее readed=fread(buf1, 1, 10, fhandle);

rsn>>и тут все вылетает.
rsn>>Работу fopen я проверял ferror, нету ошибок при открытии..

rsn>>Как видите ошибиться вроде бы негде):


SH>Действительно, ошибок не видно. Тогда так:


SH>1. Программа падает на любом файле или только на каком-то конкретном?

SH>2. Попробуй open/read.
SH>3. Попробуй под отладчиком зайти в fread.
1. Падает на любом файле...
2. С open, read я уже намучился в свое время, теперь с fopen, fread мучаюсь
3. Если бы все было так просто, это часть DLL-ки, я туда фиг залезешь ...
Re[5]: Проблема при работе с файлами
От: SergH Россия  
Дата: 10.07.02 10:58
Оценка:
Здравствуйте rsn, Вы писали:

rsn>1. Падает на любом файле...

Это хорошо . Это значит, что проблема в твоей проге и её можно исправить.

rsn>2. С open, read я уже намучился в свое время, теперь с fopen, fread мучаюсь

Т.е. от перемены функций результат не меняется? Хреново.

rsn>3. Если бы все было так просто, это часть DLL-ки, я туда фиг залезешь ...

В дебажную версию dll — без проблем. Попробуй.
Делай что должно, и будь что будет
Re[3]: Проблема при работе с файлами
От: deviv  
Дата: 10.07.02 11:52
Оценка:
Здравствуйте rsn, Вы писали:

rsn>Здравствуйте Slayer, Вы писали:


S>>Здравствуйте rsn, Вы писали:



rsn>>>У меня проблема при работе с файлами:

rsn>>>Открываю файл через fopen

rsn>>> fhandle = open(filename1, "rb");

rsn>>> if (fhandle == NULL) return NULL;
rsn>>>Открывается нормально, затем при обращении к файлу через любую функцию (по крайней мере fread, fseek)
rsn>>>возникает ошибка
rsn>>> readed=fread(buf1, 1, 10, fhandle);
rsn>>>The instruction at "0x77f83941" referenced memory at "0x0000010". The memory could not be "written".
rsn>>>То есть программа обратилась к памяти куда-не-надо. При отладки загружаеться NTDLL.DLL.
rsn>>>Параметры я проверял — все в порядке.
rsn>>>Все происходит под Win2K, Visual C++ 6.0.


S>>Приведи кусок кода со всеми объявлениями.




rsn>Объявления переменных:


rsn>FILE *fhandle1;

rsn> static unsigned char buf1[11];
rsn> int readed;
rsn>Затем,
rsn> fhandle = fopen(filename1, "rb");
rsn> if (fhandle == NULL) return NULL;

rsn>В предыдущем сообщении глюк закрался, конечно же fopen и fread,

rsn>иначе фиг бы я программу скомпилировал

rsn>Далее readed=fread(buf1, 1, 10, fhandle);

rsn>и тут все вылетает.
rsn>Работу fopen я проверял ferror, нету ошибок при открытии..

rsn>Как видите ошибиться вроде бы негде):


Это полный код куска работы с файлом?
Подобные проблемы могут возникнуть если в fread передается неверный handle,
а handle может измениться если после открытия файла и до чтения из него
проводятся операции, которые могут нарушить стек.
WBR,
Влад Волосюк
Re[3]: Проблема при работе с файлами
От: Slayer Россия  
Дата: 11.07.02 02:33
Оценка:
Попробуй такие фишки:
FILE *fhandle1=NULL;
char buf1[11];
int readed;
fhandle = fopen(filename1, "rb"); //Было бы также интересно посмотреть на объявление и присвоение значения переменной filename1, а также попробовать вместо нее строку напрямую поставить 
if (fhandle == NULL) return NULL;

readed=fread(buf1, 1, 10, fhandle); //здесь попробуй воспользоваться чем нить вроде  fgets или fgetc
Re[3]: Проблема при работе с файлами
От: Gi Россия  
Дата: 11.07.02 09:23
Оценка:
Здравствуйте rsn, Вы писали:

rsn>Здравствуйте Slayer, Вы писали:


S>>Здравствуйте rsn, Вы писали:



rsn>>>У меня проблема при работе с файлами:

rsn>>>Открываю файл через fopen

rsn>>> fhandle = open(filename1, "rb");

rsn>>> if (fhandle == NULL) return NULL;
rsn>>>Открывается нормально, затем при обращении к файлу через любую функцию (по крайней мере fread, fseek)
rsn>>>возникает ошибка
rsn>>> readed=fread(buf1, 1, 10, fhandle);
rsn>>>The instruction at "0x77f83941" referenced memory at "0x0000010". The memory could not be "written".
rsn>>>То есть программа обратилась к памяти куда-не-надо. При отладки загружаеться NTDLL.DLL.
rsn>>>Параметры я проверял — все в порядке.
rsn>>>Все происходит под Win2K, Visual C++ 6.0.


S>>Приведи кусок кода со всеми объявлениями.




rsn>Объявления переменных:


rsn>FILE *fhandle1;

rsn> static unsigned char buf1[11];
rsn> int readed;
rsn>Затем,
rsn> fhandle = fopen(filename1, "rb");
rsn> if (fhandle == NULL) return NULL;

rsn>В предыдущем сообщении глюк закрался, конечно же fopen и fread,

rsn>иначе фиг бы я программу скомпилировал

rsn>Далее readed=fread(buf1, 1, 10, fhandle);

rsn>и тут все вылетает.
rsn>Работу fopen я проверял ferror, нету ошибок при открытии..

rsn>Как видите ошибиться вроде бы негде):


Слушай, а почему объявляется fhandle1, а работаешь ты с fhandle, тоже глюк?
Вообще я скомпилил твой код, всё нормально работает.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.