Форум: Форум C++Разное
Новые темы: 00
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите написать программу копирования файлов
 
 автор: LyalyaMurr   (04.12.2009 в 16:18)   письмо автору
 
 

1. Написать программу копирования файлов. Чтение происходит блоками

  Ответить  
 
 автор: heed   (05.12.2009 в 01:23)
 
   для: LyalyaMurr   (04.12.2009 в 16:18)
 

хотел как-то для красоты использовать GetLastError() с блоками __try{}, но не получилось сообщения "Операция успешно завершена", если перезаписівается существующий файл
#include "windows.h"
int ShowErrorMessagechar*);

int main(void)
{
 UINT flag, nBytesRead, nBytesWritten; //
 HANDLE* hinfile, houtfile; //(HANDLE)-1
 char* buff; // буфер 

START_PROGRAM:
__try{
 flag = 0;
 hinfile = CreateFile(
"D:\\Bootfont.bin"
, GENERIC_READ // open for reading
, FILE_SHARE_READ // share for reading
, NULL // default security
, OPEN_EXISTING // existing file only
, FILE_ATTRIBUTE_NORMAL // normal file
, NULL); 
 if (hinfile == INVALID_HANDLE_VALUE) __leave;
 flag++;
 houtfile = CreateFile("d:_zzz.txt"
, GENERIC_READ |GENERIC_WRITE
, 0 // do not share 
// , FILE_SHARE_READ |FILE_SHARE_WRITE
, NULL
, CREATE_ALWAYS // перезапишет существующий тоже
, FILE_ATTRIBUTE_NORMAL
, NULL);
 if (houtfile == INVALID_HANDLE_VALUE) __leave;
 flag |= 2;
 buff = VirtualAlloc( 0, 1024, MEM_COMMIT, PAGE_READWRITE); //выделение памяти
 if (buff == NULL)  __leave;
 flag |= 4;
 do {
 ifReadFile(hinfile, buff
, 1023,  &nBytesRead, 0) == 0) __leave;
ifWriteFile(houtfile, buff, nBytesRead, 
&nBytesWritten, 0) == 0) __leave;
 } while  (nBytesRead == 1023);
// 
}

__finally {

if (flag & 1) CloseHandle(hinfile);
if (flag & 2) CloseHandle(houtfile);
if (flag & 4) VirtualFree(buff, 1024, MEM_DECOMMIT);
 if ( ShowErrorMessage("можно повторить") == IDRETRY) goto START_PROGRAM;
}
 return 0;
}

int ShowErrorMessagechar* txt ) { // GetLastError()
 char* lpBuffer;
 int err  = GetLastError();
 char* szBuf = (char*) LocalAlloc(LPTR, 100); //выделение памяти
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |FORMAT_MESSAGE_FROM_SYSTEM
,0, err, LANG_NEUTRAL, (LPTSTR)&lpBuffer,1024,0);
wsprintf(szBuf,
        "код:%#08lx  %s", err, txt); 
err = MessageBox(0, lpBuffer, szBuf
, MB_ICONERROR |MB_RETRYCANCEL |MB_DEFBUTTON2);

LocalFree(lpBuffer); //освобождение памяти
LocalFree(szBuf); //освобождение памяти
 return err;
}

  Ответить  
 
 автор: LyalyaMurr   (08.12.2009 в 12:55)   письмо автору
 
   для: heed   (05.12.2009 в 01:23)
 

СПАСИБО ОГРОМНОЕ!!!!!!!!!!!!!!!=)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования