Ошибка "Cannot create file"
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 создает файл?"
Заранее благодарю!
FileClose(a);
так попробуй
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
Цитата: NeO_u
... и лучше вместо int a использовать HANDLE hFile, так более понятно. Т.к. FileCreate все таки возвращает HANDLE
не-а оно возвращает именно int:
Код:
int __fastcall FileCreate(const AnsiString FileName);
Цитата: GIZMO
не-а оно возвращает именно int:
Код:
int __fastcall FileCreate(const AnsiString FileName);
да, сорри, прогнал...
if ((OpenDialog1->FileName) == "")
if (SaveDialog1->Execute())
{
AnsiString name = SaveDialog1->FileName;
Memo1->Lines->SaveToFile(name);
StatusBar1->Panels->Items[0]->Text = name;
}
}