Форум Микро-Чип

Форум Микро-Чип (http://www.microchip.su/index.php)
-   Общетехнические вопросы (http://www.microchip.su/forumdisplay.php?f=8)
-   -   CreateFile(..) пересоздает файл с тем же размером заполненый нулями (http://www.microchip.su/showthread.php?t=15245)

Алексей 06.03.2013 22:33

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 - означает что файл будет создан если его нет или обнулен если он есть.

Файл пересоздается, но после записи данных, в файле присутствуют кроме данных ещё и нули в количестве равном прошлому размеру файла. Откуда берутся обнуленные данные? Как сделать что бы в файле были только записанные данные?

Vlad&mir 06.03.2013 23:25

Re: CreateFile(..) пересоздает файл с тем же размером заполненый нулями
 
Удалите "старый" файл и создайте новый с ключом: CREATE_NEW.

Алексей 07.03.2013 00:06

Re: CreateFile(..) пересоздает файл с тем же размером заполненый нулями
 
Извиняюсь, проблема решена. Собственно не проблема, а моя собственная невнимательность. В функцию записи подставил не ту переменную.


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

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