Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2012, 18:30   #1
Dizelektwo
Пользователь
 
Регистрация: 05.04.2012
Сообщений: 56
По умолчанию Cчитывание\запись файла

Здравствуйте, на днях взялся за win api. Было немного теории, после решил перейти к практике. И немного потерялся в самом начале. Мне нужно скопировать файл в буфер, далее записать его в другой файл. Вот мои косячные наработки:

Код:
HANDLE FileHandle,FileOut;
DWORD m, count;   


FileHandle=CreateFile(TEXT("D:\\a.cpp"),GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
      FILE_ATTRIBUTE_NORMAL, 0);
count=GetFileSize(FileHandle,NULL);


char *Buf=new char[count];
ReadFile(FileHandle, Buf, count,&m,NULL);

CloseHandle(FileHandle);

FileOut=CreateFile(TEXT("D:\\ex.cpp"),GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, 0);

WriteFile(FileOut, Buf,count,&m,NULL);


CloseHandle(FileOut);
В итоге файл с которого считываю полностью обнуляется, второй файл создается, но пустым. В общем буду благодарен если подскажете в чем дело или просто приведете рабочий пример.
Да, и еще огромная просьба- как можно работать с бинарным файлом? Реально ли считать весь байт массив в буфер и записать в текстовый документ? например в hex. Просто очень заинтересовала криптография. Как получить на выходе байт массив который можно пропускать через xor(ключ)?
Прошу прощения за недалекие вопросы

___ ___ ___ ___ ___
Код исправил на рабочий.

Последний раз редактировалось Dizelektwo; 06.04.2012 в 00:34.
Dizelektwo вне форума Ответить с цитированием
Старый 05.04.2012, 23:25   #2
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,432
По умолчанию

Для файла a.cpp

Цитата:
CREATE_ALWAYS Creates a new file. The function overwrites the file if it exists.
замените, к примеру на OPEN_EXISTING.

Функции WinApi (WriteFile, ReadFile) работают с файлами как с бинарными.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 06.04.2012, 00:07   #3
Dizelektwo
Пользователь
 
Регистрация: 05.04.2012
Сообщений: 56
По умолчанию

Большое Вам спасибо, все вышло =). Копируемый файл перестал "обнуляться", но в записываемом появились каракули, тогда я в WriteFile убрал "FILE_FLAG_OVERLAPPED" и результатом вывело то, что мне было нужно_) Классные у Вас приложения, особенно порадовали танчики=)

Последний раз редактировалось Dizelektwo; 06.04.2012 в 00:42.
Dizelektwo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cчитывание информации из memo N.i.k.o.l.a.y. Общие вопросы Delphi 5 20.03.2012 18:36
Запись файла YourLastSong Общие вопросы C/C++ 0 09.10.2011 21:20
Cчитывание с файла СобачийКусок Visual C++ 1 04.10.2011 22:11
Запись файла Angryant Общие вопросы C/C++ 1 06.07.2011 00:03
запись файла dedyshka PHP 5 07.12.2009 17:15