Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
#1

Не работает считывание из файла - C++

16.09.2012, 12:31. Просмотров 334. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
char* Text::GetDataFromFile(char* Location)
{
    char Data[MAX_PROGRAMFILE_DATA];
    DWORD Size;
    DWORD R;
    HANDLE File = CreateFile((wchar_t*)Location, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
    if(File == INVALID_HANDLE_VALUE) return '\0';
    GetFileSize(File,&Size);
    if(!ReadFile(File,Data, Size, &R, NULL)) return '\0';
    return Data;
}
И почему-то ошибка StackOverflowException в CreateFile().

Мне надо считать бинарный файл и запустить его, как процесс (тут просто считывание). Может есть способ получше?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2012, 12:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не работает считывание из файла (C++):

Не работает считывание с файла - C++
В чем может быть проблема? Записываю Name surname i age в бинарный файл, проверяю через txt. все записано, но на экран не выдает содержимое...

Считывание из бинарного файла в массив_не работает! - C++
у меня есть большая программа, где я работаю с бинарными файлами, содержащими список студентов...так вот, я создала бин файл со...

Заменить считывание с клавиатуры на считывание из файла - C++
Помогите пожалуйста, ни разу не работал со считыванием из файла поэтому не понимаю как и что делать. Почитал в интернете, попробовал, не...

Считывание файла в массив и запись нового файла - C++
Консоль VS C++. Текстовый файл открывается как бинарный, и считывается по 100 байт в массив - и сразу они переписываются в другой файл. В...

Считывание из файла - C++
Здравствуйте. подскажите как сделать, чтобы с файла считывались 2 числа, но при этом в файле это выглядит вот так : (25,16). Пытался...

Считывание с файла - C++
Суть задачи такова дан файл test.txt нужно вывести на экран число таких групп букв, которые начинаются и кончаются одной и тойже...

6
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
16.09.2012, 12:39 #2
MAX_PROGRAMFILE_DATA - это скока? Не слишком ли много? Способ получше для считывания - сначала узнать размер файла, а потом динамически выделить память через LocalAlloc (и не забыть освободить её через LocalFree, когда она уже не нужна). Способ получше для запуска процесса - не читать файл, а запустить его сразу через CreateProcess.
0
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
16.09.2012, 12:40  [ТС] #3
#define MAX_PROGRAMFILE_DATA 12*1024*1024 // 12 MB
Вроде не очень много) И надо именно считывать
0
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
16.09.2012, 12:41 #4
Для стека (а массив Data размещается на стеке) - неприлично много. Если не ошибаюсь, по умолчанию размер стека 1 мегабайт.
0
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
16.09.2012, 12:46  [ТС] #5
Уменьшив размер до 15 кб, получил ошибку System.NullReferenceException (файл меньше 15)
Но почему 0?
0
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
17.09.2012, 19:52  [ТС] #6
Ап тему! что делать?
0
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
18.09.2012, 20:12 #7
Ну для начала разобраться с "широкими" и "узкими" символами. Преобразовывать насильно char* к wchar_t* - это принудительная инъекция себе геморроя. Всё равно что налепить наклейку "аспирин" на банку с пургеном и пить, надеясь, что подействует как аспирин. Если программа юникодная, а имя файла обычное, надо вызывать CreateFileA.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2012, 20:12
Привет! Вот еще темы с ответами:

Считывание с файла ! - C++
Всем доброе врямя суток ! Помогите пожалуйста мне надо чтобы прога считывала из файла не до пробела а запихивала в символьный массив прям...

Считывание с файла - C++
Подскажите, плиз, как из файла в массив считать строку вместе с пробелами?

Считывание с файла - C++
char TextForKey="text text1 text2";//текст как сделать что бы "text text1 text2" этот текст брался с файла???

Считывание из файла - C++
есть файл с настройками prog.conf вида: date = 01.02.2010 time = 15:05:45 step = 0.5 ... есть переменные: day, month, year,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
18.09.2012, 20:12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru