Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Общетехнические вопросы

Общетехнические вопросы Общие вопросы аналоговой и цифровой электроники.

Ответ
 
Опции темы Опции просмотра
Старый 06.03.2013, 22:33   #1
Алексей
Senior Member
 
Регистрация: 25.02.2007
Сообщений: 465
Вес репутации: 578/57
Алексей is a name known to allАлексей is a name known to allАлексей is a name known to allАлексей is a name known to allАлексей is a name known to allАлексей is a name known to all
По умолчанию CreateFile(..) пересоздает файл с тем же размером заполненый нулями

Среда C++ Builder, под винду пишу оч. мало.

Код:
void __fastcall TForm1::ReOpenSavingFile(void)
{
    if(hSave != INVALID_HANDLE_VALUE){
        CloseHandle(hSave);
        hSave = INVALID_HANDLE_VALUE;
    }
    
    hSave = CreateFile(
                    FileNameSave,
                    GENERIC_WRITE,
                    0,     //FILE_SHARE_READ
                    NULL,
                    CREATE_ALWAYS,
                    0,
                    NULL
                    );

    if( hSave == INVALID_HANDLE_VALUE ){
        // обработка ошибки...
        return;
    }
}
Файл перед вызовом этой функции закрывается CloseHandle() в другом месте (здесь на всякий случай).

Функция сделана что бы закрыть файл если он не закрыт и пересоздать файл. CREATE_ALWAYS - означает что файл будет создан если его нет или обнулен если он есть.

Файл пересоздается, но после записи данных, в файле присутствуют кроме данных ещё и нули в количестве равном прошлому размеру файла. Откуда берутся обнуленные данные? Как сделать что бы в файле были только записанные данные?
Алексей вне форума   Ответить с цитированием
Старый 06.03.2013, 23:25   #2
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/102
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: CreateFile(..) пересоздает файл с тем же размером заполненый нулями

Удалите "старый" файл и создайте новый с ключом: CREATE_NEW.
Vlad&mir вне форума   Ответить с цитированием
Старый 07.03.2013, 00:06   #3
Алексей
Senior Member
 
Регистрация: 25.02.2007
Сообщений: 465
Вес репутации: 578/57
Алексей is a name known to allАлексей is a name known to allАлексей is a name known to allАлексей is a name known to allАлексей is a name known to allАлексей is a name known to all
По умолчанию Re: CreateFile(..) пересоздает файл с тем же размером заполненый нулями

Извиняюсь, проблема решена. Собственно не проблема, а моя собственная невнимательность. В функцию записи подставил не ту переменную.
Алексей вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +3, время: 18:57.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot