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

Способ прочитать файл с базой данных - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 283
25.11.2013, 10:58     Способ прочитать файл с базой данных #1
есть база данных в формате .dat
есть файл с структурами и типами в формате .h

что использовать какие компоненты или sql тут потребуется чтобы вывести базу данных, просьба подсказать! пожалуйста!

Добавлено через 36 минут
формат .data... прошу прощение
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2013, 10:58     Способ прочитать файл с базой данных
Посмотрите здесь:

Работа с базой данных C++
Данные записать в файл F1.txt, затем прочитать оттуда, обрабатывались и записывались в бинарный файл F2.bin с проверкой C++
C++ самый короткий способ открыть файл
C++ Способ вывода данных на экран
C++ как можно прочитать файл в обратном порядке т.е. стать в конец файла и прочитать до начальной позиции?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newbie666
Заблокирован
25.11.2013, 11:01     Способ прочитать файл с базой данных #2
Цитата Сообщение от lips Посмотреть сообщение
формат .data... прошу прощение
ну а что это за формат? ты знаешь его структуру?
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 283
25.11.2013, 11:13  [ТС]     Способ прочитать файл с базой данных #3
Цитата Сообщение от newbie666 Посмотреть сообщение
ну а что это за формат? ты знаешь его структуру?
файл со структурами есть, тоесть структуру знаю.... как используя эту структуру корректно достать все данные?

Добавлено через 2 минуты
вот пример структуры
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct tEQUIPMENT_ADDON {
    uint id;
    wchar_t name[32];
    int type;
    int num_params;
    int param1;
    int param2;
    int param3;
}; tEQUIPMENT_ADDON  EQUIPMENT_ADDON;
 
int _tmain(int argc, _TCHAR* argv[])
{
    ifstream in;
    in.open("elements.data");
    in>>EQUIPMENT_ADDON.id;
    in.close();
 
    ofstream out;
    out.open("TestFile.data");
    out<<EQUIPMENT_ADDON.id;
    out.close();
    getch();
}
но не получается таким способом
newbie666
Заблокирован
25.11.2013, 11:13     Способ прочитать файл с базой данных #4
ну а в чём проблема то, если ты структуру знаешь? Это ж бинарный файл? Открываешь его и читаешь сколько надо байт с последующим приведением к типу структуры
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 283
25.11.2013, 11:18  [ТС]     Способ прочитать файл с базой данных #5
Цитата Сообщение от newbie666 Посмотреть сообщение
ну а в чём проблема то, если ты структуру знаешь? Это ж бинарный файл? Открываешь его и читаешь сколько надо байт с последующим приведением к типу структуры
да бинарный вроде... а в этом файле должны структуры по порядку идти?
newbie666
Заблокирован
25.11.2013, 11:23     Способ прочитать файл с базой данных #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <windows.h>
#include <tchar.h>
#include <fstream>
 
struct EQUIPMENT_ADDON {
    unsigned id;
    wchar_t name[32];
    int type;
    int num_params;
    int param1;
    int param2;
    int param3;
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    EQUIPMENT_ADDON item;
    std::fstream fs(L"elements.data", std::ios::in | std::ios::binary);
    if(fs.is_open())
    {
        fs.read((char*)&item, sizeof(item));
        fs.close();
 
        fs.open(L"result.txt", std::ios::out);
        if(fs.is_open())
        {
            fs << "ID: "<< item.id << std::endl;            
            fs.close();
        }
    }
}
Добавлено через 25 секунд
Цитата Сообщение от lips Посмотреть сообщение
а в этом файле должны структуры по порядку идти?
откуда я знаю, спроси у того, кто этот файл создавал )))
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 283
25.11.2013, 11:28  [ТС]     Способ прочитать файл с базой данных #7
Цитата Сообщение от newbie666 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <windows.h>
#include <tchar.h>
#include <fstream>
 
struct EQUIPMENT_ADDON {
    unsigned id;
    wchar_t name[32];
    int type;
    int num_params;
    int param1;
    int param2;
    int param3;
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    EQUIPMENT_ADDON item;
    std::fstream fs(L"elements.data", std::ios::in | std::ios::binary);
    if(fs.is_open())
    {
        fs.read((char*)&item, sizeof(item));
        fs.close();
 
        fs.open(L"result.txt", std::ios::out);
        if(fs.is_open())
        {
            fs << "ID: "<< item.id << std::endl;            
            fs.close();
        }
    }
}
Добавлено через 25 секунд

откуда я знаю, спроси у того, кто этот файл создавал )))
чтото выдалось спасибо большое за ответ
newbie666
Заблокирован
25.11.2013, 11:33     Способ прочитать файл с базой данных #8
Цитата Сообщение от lips Посмотреть сообщение
чтото выдалось спасибо большое за ответ
тут ключевой момент в том, что ты открываешь файл как бинарный и читаешь кусок байтом, размером с твою структуру как бы, тоесть не учитывая того, что надо выравнивать структуры в памяти перед сохранением и прочую галимотью, ты читаешь этот блок байтов и структура у тебя заполняется
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 283
25.11.2013, 13:22  [ТС]     Способ прочитать файл с базой данных #9
Цитата Сообщение от newbie666 Посмотреть сообщение
тут ключевой момент в том, что ты открываешь файл как бинарный и читаешь кусок байтом, размером с твою структуру как бы, тоесть не учитывая того, что надо выравнивать структуры в памяти перед сохранением и прочую галимотью, ты читаешь этот блок байтов и структура у тебя заполняется
спасибо.. но работает некорректно... выводит не то

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
struct EQUIPMENT_ADDON {
    int id;
    wchar_t name[32];
    int type;
    int num_params;
    int param1;
    int param2;
    int param3;
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    EQUIPMENT_ADDON item;
    std::fstream fs(L"elements.data", std::ios::in | std::ios::binary);
    if(fs.is_open())
    {
        fs.read((char*)&item, sizeof(item));
        fs.close();
 
        fs.open(L"result.txt", std::ios::out);
        if(fs.is_open())
        {
            fs << "ID: "<< item.id << std::endl;
            fs << "name: "<< item.name << std::endl;
            fs << "type: "<< item.type << std::endl;
            fs << "num_params: "<< item.num_params << std::endl;
            fs << "param1: "<< item.param1 << std::endl;
            fs << "param2: "<< item.param2 << std::endl;
            fs << "param3: "<< item.param3 << std::endl;
 
            fs.close();
        }
    }
 
 
 
}
newbie666
Заблокирован
25.11.2013, 13:25     Способ прочитать файл с базой данных #10
скинь сюда исходный файл с данными, посмотрю
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
25.11.2013, 13:31     Способ прочитать файл с базой данных #11
Чтобы корректно считывало, нужно сначала корректно записать.
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 283
25.11.2013, 13:34  [ТС]     Способ прочитать файл с базой данных #12
Цитата Сообщение от newbie666 Посмотреть сообщение
скинь сюда исходный файл с данными, посмотрю
может шифрование используется какое то?

структура должна заполнена быть вот так:
7046
_Тест.доп.хар-ка 1
77
2
441
1
0
Вложения
Тип файла: rar 123.rar (1.94 Мб, 6 просмотров)
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 283
25.11.2013, 13:37  [ТС]     Способ прочитать файл с базой данных #13
Цитата Сообщение от kazak Посмотреть сообщение
Чтобы корректно считывало, нужно сначала корректно записать.
она корректно записана... другая программа читает...
newbie666
Заблокирован
25.11.2013, 13:39     Способ прочитать файл с базой данных #14
а что конкретное не так считывается? что должно быть в результате? пример корректной ячейки данных есть?
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 283
25.11.2013, 13:46  [ТС]     Способ прочитать файл с базой данных #15
Цитата Сообщение от newbie666 Посмотреть сообщение
а что конкретное не так считывается? что должно быть в результате? пример корректной ячейки данных есть?
id 7046
name _Тест.доп.хар-ка 1
type 77
num_params 2
param1 441
param2 1
param3 0
newbie666
Заблокирован
25.11.2013, 13:47     Способ прочитать файл с базой данных #16
ну в файле другие данные )))

Добавлено через 10 секунд
или структура данных не корректная
gazlan
2867 / 1815 / 272
Регистрация: 27.08.2010
Сообщений: 4,914
Записей в блоге: 1
25.11.2013, 14:11     Способ прочитать файл с базой данных #17
Данные начинаются со смещения 0x88. То есть, первые 0x88 байт - это заголовок.
Размер блока - 0x76 - проверьте опции выравнивания (alignment) для вашей структуры.
Миниатюры
Способ прочитать файл с базой данных  
gazlan
2867 / 1815 / 272
Регистрация: 27.08.2010
Сообщений: 4,914
Записей в блоге: 1
25.11.2013, 14:23     Способ прочитать файл с базой данных #18
Цитата Сообщение от gazlan Посмотреть сообщение
Размер блока - 0x76
Fix: Размер блока - 0x5A - уточнил по текстовым меткам в файле.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
25.11.2013, 15:02     Способ прочитать файл с базой данных #19
Цитата Сообщение от lips Посмотреть сообщение
она корректно записана... другая программа читает...
Здесь неважно как его читает другая программа. Вам дали исходник с считыванием бинарного файла, а Вы текстовый файл подсовываете.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2013, 15:38     Способ прочитать файл с базой данных
Еще ссылки по теме:

составить программу,которая создает файл, состоящий из 10 значений типа int. прочитать файл и вычислить сумму его элементов C++
Открыть файл, прочитать. Все, что находится после двоеточия перенести в другой файл C++
C++ Прочитать файл

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

Или воспользуйтесь поиском по форуму:
gazlan
2867 / 1815 / 272
Регистрация: 27.08.2010
Сообщений: 4,914
Записей в блоге: 1
25.11.2013, 15:38     Способ прочитать файл с базой данных #20
Цитата Сообщение от kazak Посмотреть сообщение
текстовый файл
Ни разу не текстовый :-)
Миниатюры
Способ прочитать файл с базой данных  
Yandex
Объявления
25.11.2013, 15:38     Способ прочитать файл с базой данных
Ответ Создать тему
Опции темы

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