C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Почему не работает filelength? (очень прошу)
президент
  Отправлено: 29.04.2006, 23:09


Ученик-кочегар

Группа: Участник
Сообщений: 3



void __fastcall TForm1::Button1Click(TObject *Sender)
{
int ifile;
if (OpenDialog1->Execute()) {
ifile=FileOpen(OpenDialog1->FileName, fmOpenRead);
Label1->Caption=filelength(ifile);
FileClose(ifile);
}

}
всегда выводит -1.
простите за дурацкий вопрос,
но поэтому и не могу успокоится, пока не ликвидирую в себе непонимание этого. В справочниках filelength используется после open, а не после FileOpen. Почему они несовместимы (если это так)???
SunDevil
Отправлено: 30.04.2006, 00:12


Не зарегистрирован







Все же надо так:
CODE
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   int ifile;
   int isize;
   if (OpenDialog1->Execute())
   {
      ifile=FileOpen(OpenDialog1->FileName, fmOpenRead);
      isize=FileSeek(ifile,0,2);
      Label1->Caption=isize;
      FileClose(ifile);
   }
}
президент
Отправлено: 30.04.2006, 00:33


Ученик-кочегар

Группа: Участник
Сообщений: 3



Да, так я и сделал. Но почему то не работало??
AVC
Отправлено: 03.05.2006, 08:45


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE (президент @ 29/04/2006, 23:33)
Да, так я и сделал. Но почему то не работало??

Не той функцией открывали файл smile.gif . Для filelength нужна open
CODE

int ifile = open((ExtractFilePath(Application->ExeName) + "dat50.dbf").c_str(), O_RDONLY);
Memo1->Lines->Add("ifile = " + AnsiString(int(ifile)             ));
Memo1->Lines->Add("flen  = " + AnsiString(int(filelength(ifile)) ));
close(ifile);

Вернуться в Вопросы программирования в C++Builder