Запись и чтение файла в API
Основные Функции - CreateFile, ReadFile, WriteFile, SetFilePointer, GetFileSize. Ограничение на кусок 4Гб - хватит?
Помогите, народ!!! У меня мало опыта работы с API функциями, кое-что прочел в хэлпе и вот результат того, что я там понял (и это не работает):
int a=913;
long test;
char*s="c:\\trial.txt";
unsigned long len;
if(ID_YES==
Application->MessageBoxA("Записать файл на диска","",MB_YESNO)
){
HANDLE h=
CreateFile(
s,
GENERIC_WRITE|GENERIC_READ,
FILE_SHARE_WRITE,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_HIDDEN|FILE_FLAG_OVERLAPPED|FILE_FLAG_SEQUENTIAL_SCAN|FILE_FLAG_NO_BUFFERING,
NULL
);
if(h){
String s;/*этот тип из Билдера, перекачавший из Дельфи*/
test=WriteFile(h,&a,sizeof(a),0,0);
if(test)S="Файл записался";
else s="Файл не записался";
ShowMessage(s.c_str());
}
CloseHandle(h);
}
В ЧЁМ ОШИБКА, КАК ПРАВИЛЬНО НАПИСАТЬ НУЖНО?
int a = 913;
bool test;
char s[MAX_PATH];
//...
lstrcpy(s, "C:\\trial.txt");
HANDLE h = CreateFile(s, GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL, NULL);
if (h != INVALID_HANDLE_VALUE)
{test = WriteFile(h, &a ,sizeof(a), &tmp0, NULL);
if (test) lstrcpy(s, "Файл записался");
else lstrcpy(s, "Файл не записался");
ShowMessage(s);}
Должно работать.
DWORD tmp0;
int a = 913;
bool test;
char s[MAX_PATH];
//...
lstrcpy(s, "C:\\trial.txt");
HANDLE h = CreateFile(s, GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL, NULL);
if (h != INVALID_HANDLE_VALUE)
{test = WriteFile(h, &a ,sizeof(a), &tmp0, NULL);
if (test) lstrcpy(s, "Файл записался");
else lstrcpy(s, "Файл не записался");
ShowMessage(s);}
Должно работать.
Спасибо, работает!!!