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

Запись в файл - C++

Восстановить пароль Регистрация
 
AndreyCarter
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 8
29.05.2012, 02:04     Запись в файл #1
Короче, такая тема: надо курсовую сделать. Тема сделать программу для разработки и выполнения тестов (1 курс, если чё)
В принципе половину сделал, но на самом основном ступор: не знаю как сделать запись заданий теста в файл, чтобы потом можно было прочесть.
Если бы была стандартная библиотека для работы с ини-файлами, как в делфи, проблем бы не было, сделал бы с их помощью.

Идея была заносить задания в массив структур. Всё занёс, получилось... кинул SaveDialog, чтоб с его помощью пользователь мог выбирать, как обозвать файл вопросов, и где его сохранять. Но выбивает ошибку.. Короче вот мой быдло-код, помогите плиз, а то послезавтра сдавать надо уже
в .h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct Task
{
    int       QN;               // номер вопроса
    String    QTask;            // текст вопроса
    int       QNum;             // кол-во вариантов
    String    QAns[5];          // ответы в массиве
    int       QRAns;            // правильный ответ
 
};
 
    Task quest [32];        // массив структур моих
    int TN;         // колво вопросов
в .cpp:
C++
1
2
3
4
5
6
7
8
    /* ненужные строки удалил, для экономии места*/
        wchar_t* FName;
        FName = dlgSave1->FileName.c_str();
 
        fstream F;
        F.open(FName, ios::binary);
// для проверки работоспособности, сохраняю чисто одну численную константу 0 элемента массива
        F.write (IntToStr(quest[0].QN).c_str(),sizeof(quest[0].QN));
и вот в последней строчке выдаёт ошибку:
[BCC32 Error] main__.cpp(58): E2034 Cannot convert 'wchar_t *' to 'const char *'
[BCC32 Error] main__.cpp(58): E2342 Type mismatch in parameter '_Str' (wanted 'const char *', got 'wchar_t *')
КАК конвертировать?? постоянно что-то не нравится ему(((

Помогите, плиз, а то итак уже третий день сижу мучаю это
Ну или как по-другому можно такое сделать? Только по-подробнее, а то я ещё слабоват в Срр..

P.S. если чё, пользуюсь Embarcadero RadStudio XE2
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2012, 02:04     Запись в файл
Посмотрите здесь:

Запись в файл C++
Запись в файл C++
C++ Запись в файл
C++ Запись в файл
C++ Запись в файл
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
insolent
 Аватар для insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
29.05.2012, 19:20     Запись в файл #2
Подставь dlgSave1->FileName.c_str() прям в F.open:
C++
1
F.open(dlgSave1->FileName.c_str(), ios::binary);
AndreyCarter
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 8
30.05.2012, 02:15  [ТС]     Запись в файл #3
Попробовал, не помогло(
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,570
Записей в блоге: 17
30.05.2012, 02:19     Запись в файл #4
C++
1
2
3
4
AnsiString FName;
FName = AnsiString(dlgSave1->FileName.c_str());
fstream F;
F.open(FName.c_str(), ios::binary);
Cannot convert 'UnicodeString' to 'wchar_t *
RAD Studio XE2 - первые впечатления
AndreyCarter
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 8
30.05.2012, 02:21  [ТС]     Запись в файл #5
Цитата Сообщение от insolent Посмотреть сообщение
Подставь dlgSave1->FileName.c_str() прям в F.open:
C++
1
F.open(dlgSave1->FileName.c_str(), ios::binary);
Поставил. Ничего не изменилось, к моему огорчению.

выбивает вот такую ошибку, при нажатии на кнопку сохранения (на картинке)

вот код изменённый немного:
C++
1
2
3
4
5
        
    char * q;
    fstream F;
    F.open(dlgSave1->FileName.c_str(), ios::binary);
    F.write(itoa(quest[0].QN,q,10),sizeof(q));
Может в таком случае лучше сделать полностью записывать файл как в обычный тхт, а потом считывать и обрабатывать по началу строки? (типа как ини-файлы)

Подскажите, пожалуйста, как это будет выглядеть? (на одном примере хотя бы)
Н-р, в файле записано:
-----
TNum=0 // номер вопроса
Task=Текст вопроса // текст задания
ANum=3 // кол-во вариантов ответа
RAns=0 // индекс правильного варианта
Ans0=вариант1
Ans1=вариант2
Ans2=вариант3
-----
TNum=1
Task=Текста вопроса №2
ANum=2
RAns=0
Ans0=вар1
Ans1=вар2

// и т.д.

Очень срочно надо!!! первого сдавать уже
Миниатюры
Запись в файл  
Yandex
Объявления
30.05.2012, 02:21     Запись в файл
Ответ Создать тему
Опции темы

Текущее время: 03:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru