Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Запись и чтение файла в API

1.9K
18 апреля 2004 года
Fatal
75 / / 10.03.2004
Если кто знаком с языком Си, тот наверняка знает, что работа c файлом такими функциями как write, read ограничена константой. Т.е. с лёту можно записать определенное количество байт, а остальное в цикле, т.е. запись кусками. Так вот, подскажите, пожалуйста, есть ли ограничения в функциях для работы с файловым потоком. И какие из API функций лучше использовать (и если можно прокоментируйте почему). _lopen, _lcreat или OpenFile, CreateFile и где поменьше ограничения. И можно ли его менять (в какой переменной).
424
19 апреля 2004 года
(C)dragon
307 / / 04.12.2002
Основные Функции - CreateFile, ReadFile, WriteFile, SetFilePointer, GetFileSize. Ограничение на кусок 4Гб - хватит?
1.9K
20 апреля 2004 года
Fatal
75 / / 10.03.2004
Цитата:
Originally posted by (C)dragon
Основные Функции - 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);
}

В ЧЁМ ОШИБКА, КАК ПРАВИЛЬНО НАПИСАТЬ НУЖНО?

424
20 апреля 2004 года
(C)dragon
307 / / 04.12.2002
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);}

Должно работать.
1.9K
22 апреля 2004 года
Fatal
75 / / 10.03.2004
Цитата:
Originally posted by (C)dragon
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);}

Должно работать.



Спасибо, работает!!!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог