Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Распознавание файлов?


koha ©   (2006-11-25 22:19:00) 

Есть проблема с распознанием exe- Файлов. Как распазнать exe-файл является ли он 16-битным или 32-битным, если он не содержит информацию о версии и типе? Какие признаки в нутри файлов необходимо использовать? Всегда ли в win32 -файлах присутствует строка "This program must be run under Win32"Или есть функции которые в Delphi можно задействовать?


koha   (2006-11-26 21:51:00) [1]

И снова вернусь к теме, увы жизнь заставляет.

С определением EXE - файлов стало все понятно, а как на счет sys - файлов

И как в delphi определить 16 или 32 битные sys - файлы
Пробывал этими функциями - неопределяют.


koha   (2006-11-26 17:02:00) [2]

Джо ©   (26.11.06 16:58) [13]
> Ты мне делаешь отдолжение. Уволь.

Ладно, уболтал - так уж и быть, поверю. - это юмор такой был, а не повод.


Джо   (2006-11-26 16:58:00) [3]

> [12] koha ©   (26.11.06 16:57)
> > Джо ©   (26.11.06 16:56) [11]
>
> Ладно, уболтал - так уж и быть, поверю.

Ты мне делаешь отдолжение. Уволь.


koha   (2006-11-26 16:57:00) [4]

> Джо ©   (26.11.06 16:56) [11]

Ладно, уболтал - так уж и быть, поверю.


Джо   (2006-11-26 16:56:00) [5]

> [10] koha ©   (26.11.06 16:50)
> SCS_64BIT_BINARY = 6; - это ее родное значение?

Нет, блин, троюродное.


koha   (2006-11-26 16:50:00) [6]

> Джо ©   (26.11.06 16:48) [8]

>> SCS_64BIT_BINARY - сейчас ее в системе нет

> Это константа. См. [4] Джо.

SCS_64BIT_BINARY = 6; - это ее родное значение?


DrPass   (2006-11-26 16:49:00) [7]


> сейчас ее в системе нет,

В какой еще системе? Ее нет в модуле windows.pas, который Борланд написала еще до того, как Microsoft ввела эту константу. Напиши const SCS_64BIT_BINARY = 6, и будет тебе счастье


Джо   (2006-11-26 16:48:00) [8]

> SCS_64BIT_BINARY - сейчас ее в системе нет

Это константа. См. [4] Джо.


koha   (2006-11-26 16:46:00) [9]

Это был только упрощенный пример - по другому быдет выглядеть все:

SCS_64BIT_BINARY : begin
                              //........ мой код
                             result:= 2;
                           end;


А функция переопределяет значение Т.К. будет в другом операторе case участвовать и мне так нужно - так я двух зайцев убиваю или наверное заседелся очень.

Интересует меня вот что: SCS_64BIT_BINARY - сейчас ее в системе нет, а как сделать, чтоб в программе она присутствовала и компилятор необращал внимание, что ее нет.


DrPass   (2006-11-26 16:35:00) [10]

А зачем ты вообще эту перестановку цифирек затеял? GetBinaryType итак возвращает цифровой код
 SCS_32BIT_BINARY = 0;
 SCS_DOS_BINARY = 1;
 SCS_WOW_BINARY = 2;
 SCS_PIF_BINARY = 3;
 SCS_POSIX_BINARY = 4;
 SCS_OS216_BINARY = 5;
 SCS_64BIT_BINARY = 6;


Джо   (2006-11-26 16:32:00) [11]

А смысл это функции? Зачем еще одну "прокладку" делать?


Джо   (2006-11-26 16:31:00) [12]

const
 SCS_64BIT_BINARY = 6;


koha   (2006-11-26 16:20:00) [13]

Оба метода попробовал - работаю, но вот при написании своей функции

function TMainFrm.Get_FileTypeOS(FileName: String): Integer;
Var BType: Cardinal;
begin
 GetBinaryType(PChar(FileName),BType);
 case BType of
   SCS_32BIT_BINARY : result:= 1;

    SCS_64BIT_BINARY: result:= 2; - эта константа не воспринимается

   SCS_DOS_BINARY   : result:= 3;
   SCS_OS216_BINARY : result:= 4;
   SCS_PIF_BINARY   : result:= 5;
   SCS_POSIX_BINARY : result:= 6;
   SCS_WOW_BINARY   : result:= 7;
 end;
end;


Хотелось бы чтобы в этом месте не возникало ошибки, до тех пор пока программа не попадет на нужную платформу OS


Джо   (2006-11-25 23:50:00) [14]

GetBinaryType


Leonid Troyanovsky   (2006-11-25 23:44:00) [15]


> koha ©   (25.11.06 22:19)  

> Есть проблема с распознанием exe- Файлов. Как распазнать
> exe-файл является ли он 16-битным или 32-битным, если он


http://groups.google.com/group/fido7.ru.delphi/msg/300c5ba9eaab2557

--
Regards, LVT.


Наверх

Титульная страница Поиск, карта сайта Написать письмо