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

Ваш аккаунт

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

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

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

Ошибка "Cannot create file"

15K
04 декабря 2007 года
Kuzia_88
15 / / 19.02.2007
if ((OpenDialog1->FileName) == "")
if (SaveDialog1->Execute())
{
AnsiString name = SaveDialog1->FileName;
int a = FileCreate(name);
a = FileOpen(name, fmOpenWrite);
Memo1->Lines->SaveToFile(name);
StatusBar1->Panels->Items[0]->Text = name;
FileClose(a);
}
}
Выше приведен код обработчика собития "Сохранить". Помогите пожалуйста разбраться: "Почему ф-я FileOpen возвращает -1, хотя ф-я FileCreate создает файл?"
Заранее благодарю!
11
04 декабря 2007 года
oxotnik333
2.9K / / 03.08.2007
int a = FileCreate(name);
FileClose(a);
так попробуй
489
04 декабря 2007 года
NeO_u
277 / / 11.10.2006
Объясняю:
FileCreate creates a new file with name FileName on the disk and returns a file handle which can be used to read or write from the file with the FileRead and FileWrite functions. If a file with name FileName already existed on the disk, it is overwritten.
По-русски: FileCreate - создает новый файл с именем FileName на диске и возвращает handle который потом можно использовать для чтения или записи с функциями FileRead или FileWrite.
ЗЫ: Из этого следует, что FileOpen вообще вызывать не следует. и лучше вместо int a использовать HANDLE hFile, так более понятно. Т.к. FileCreate все таки возвращает HANDLE
246
04 декабря 2007 года
GIZMO
1.8K / / 30.07.2004
Цитата: NeO_u

... и лучше вместо int a использовать HANDLE hFile, так более понятно. Т.к. FileCreate все таки возвращает HANDLE


не-а оно возвращает именно int:

 
Код:
int __fastcall FileCreate(const AnsiString FileName);
489
04 декабря 2007 года
NeO_u
277 / / 11.10.2006
Цитата: GIZMO
не-а оно возвращает именно int:
 
Код:
int __fastcall FileCreate(const AnsiString FileName);


да, сорри, прогнал...

25K
06 декабря 2007 года
San_
42 / / 03.10.2007
а лучше вообще не париться и написать что то типа

if ((OpenDialog1->FileName) == "")
if (SaveDialog1->Execute())
{
AnsiString name = SaveDialog1->FileName;
Memo1->Lines->SaveToFile(name);
StatusBar1->Panels->Items[0]->Text = name;
}
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог