Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ С\С++ _ чтение из бинарного файла

Автор: ff0000-00ff00 23.12.2011, 20:49

Если записываю в бинарный файл закрываю его открываю и читаю из него, то всё отлично.

FILE *F;
    struct servername{QString name;};
    servername dat;
    dat.name="OLOLO";
    F=fopen("settings.bin","wb");
    fwrite(&dat,sizeof(dat),1,F);
    fclose(F);
    F=fopen("settings.bin","rb");
    servername dat2;
    fread(&dat2.name,sizeof(dat2),1,F);
    fclose(F);



Но если начинаю только читать из файла, то данные недоступны
FILE *F;
    struct servername{QString name;};
F=fopen("settings.bin","rb");
    servername dat2;
    fread(&dat2.name,sizeof(dat2),1,F);
    fclose(F);



Автор: sidsukana 23.12.2011, 22:46

Из студии запускаешь в отладке? Незнаю почему но у меня никогда при запуске в отладке программы не хотели грузить никакие ресурсы (файлы, конфиги и тд). Попробуй вначале запустить, потом или командой если консоль, или кнопкой если гуй, начать читать файл.

Это именно если при запуске программы выполняется чтение файла. Если запустить программу без отладчика, при запуске все прочтется...

Автор: Iron Bug 23.12.2011, 22:48

а ты данные-то как-то используешь? поди компилер их схомячил под оптимизацию...

Автор: BRE 23.12.2011, 23:02

Потому что не POD-типы, коим и является QString, так сохранять нельзя. Нужно использовать серилизацию.

Автор: ff0000-00ff00 23.12.2011, 23:02

Цитата(sidsukana @ 23.12.2011, 23:46) *
Из студии запускаешь в отладке? Незнаю почему но у меня никогда при запуске в отладке программы не хотели грузить никакие ресурсы (файлы, конфиги и тд). Попробуй вначале запустить, потом или командой если консоль, или кнопкой если гуй, начать читать файл.

Это именно если при запуске программы выполняется чтение файла. Если запустить программу без отладчика, при запуске все прочтется...
отладку запускаю в qt creator. Проблему решил путём изменения структуры
FILE *F;
    struct servername{char name[20];};
    F=fopen("../settings.bin","rb");
    servername dat;
    fread(&dat.name,sizeof(dat),1,F);
    fclose(F);

Автор: ilyabvt 24.12.2011, 0:35

Цитата
Из студии запускаешь в отладке? Незнаю почему но у меня никогда при запуске в отладке программы не хотели грузить никакие ресурсы (файлы, конфиги и тд).

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

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)