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

 
Альтернатива FileExists()
Za
  Отправлено: 30.06.2003, 21:19


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







Не подскажите альтернативу функции FileExists() (Можно через asm-вставку), а то файл раздувается с 19кб до 42 только при включении SysUtils.
Заранее Спасиба.
Admin
Отправлено: 30.06.2003, 22:24


Владимир

Группа: Администратор
Сообщений: 1190



В io.h есть такая функция access (см. Help)

CODE

#include <stdio.h>
#include <io.h>

int file_exists(char *filename);

int main(void)
{
printf("Does NOTEXIST.FIL exist: %s\n",
   file_exists("NOTEXISTS.FIL") ? "YES" : "NO");
return 0;
}

int file_exists(char *filename)
{
  return (access(filename, 0) == 0);
}


Георгий
Отправлено: 30.06.2003, 22:48


Почетный железнодорожник

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



Za — тебе ник надо на экстримал поменять! wink.gif

расскажи, как у тебя exe в 19 кб получился — я в BCB меньше 100kb не видел. или ты размер без включения всех библиотек указал?

проверить существование файла с известным полным именем, не используя sysutils, можно через функции для работы с файлами Win32API, которые вовсе не обязательно через asm вставки вызывать(хотя, если острых ощущений не хватает, то можно попробовать):
GetFileAttributes
CODE
DWORD FileAttrib;
FileAttrib=GetFileAttributes("c:\\boot.ini");
if (FileAttrib==DWORD(-1))
  {
  Application->MessageBox("file not exist","asd",MB_OK);
  }
else
   {
   Application->MessageBox("file exist","asd",MB_OK);
   };

CreateFile
CODE
HANDLE hFile;
hFile=CreateFile("c:\\boat.ini",0,0,0,OPEN_EXISTING,0,0);
if (hFile==INVALID_HANDLE_VALUE)
  {
  Application->MessageBox("file not exist","asd",MB_OK);
  }
else
   {
   Application->MessageBox("file exist","asd",MB_OK);
   };
CloseHandle(hFile);

Наверное можно ещё какие-нибудь способы продумать...
Za
  Отправлено: 30.06.2003, 23:57


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







Георгий, большое спасибо za варианты! Работает! А с размером действительно накладочка вышла — не 19кб, а 17кб. А библиотечки все наместе Windows.hpp и Messages.hpp. Пока больше не надо, да и че там — окно одно и свое а-ля dat-сохранение параметров (чтоб места поменьше занимало). Пробовал IniFiles.hpp приклеить так размер до 120кб раздувался! А za счет чего? Еще раз спасибо.

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