Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

Как узнать версию проекта???   Найти похожие ветки 

 
-=[SDA]=- ©   (2004-03-04 08:13) [0]

Здравствуйте! Вопрос в следующем: в /Project Options/ есть вкладка /Version Info/ где указаны различные данные, в том числе и FileVersion, т.е версия программы.... так вот... а как эту версию узнать из программы???, т.е. мне бы хотелось чтобы никто не смог работать с базой при помощи старого exe"шника...
Спасибо за внимание! Заранее благодарен за помощь....


 
Юрий Зотов ©   (2004-03-04 08:18) [1]

Пример из справки:

procedure TForm1.Button1Click(Sender: TObject);
const
 InfoNum = 10;
 InfoStr: array[1..InfoNum] of string = ("CompanyName", "FileDescription", "FileVersion", "InternalName", "LegalCopyright", "LegalTradeMarks", "OriginalFileName", "ProductName", "ProductVersion", "Comments");
var
 S: string;
 n, Len, i: DWORD;
 Buf: PChar;
 Value: PChar;
begin
 S := Application.ExeName;
 n := GetFileVersionInfoSize(PChar(S), n);
 if n > 0 then
 begin

   Buf := AllocMem(n);
   Memo1.Lines.Add("VersionInfoSize = " + IntToStr(n));
   GetFileVersionInfo(PChar(S), 0, n, Buf);
   for i := 1 to InfoNum do
     if VerQueryValue(Buf, PChar("StringFileInfo\040904E4\" + InfoStr[i]), Pointer(Value), Len) then
       Memo1.Lines.Add(InfoStr[i] + " = " + Value);
   FreeMem(Buf, n);
 end
 else
   Memo1.Lines.Add("No version information found");
end;


 
-=[SDA]=- ©   (2004-03-04 08:25) [2]

Спасибо, Юрий, буду пробовать.... :)


 
Юрий Зотов ©   (2004-03-04 08:31) [3]

> мне бы хотелось чтобы никто не смог работать с базой при
> помощи старого exe"шника...

Видимо, это все же не совсем та задача?
:о)


 
Романов Р.В. ©   (2004-03-04 08:51) [4]


> мне бы хотелось чтобы никто не смог работать с базой при
> помощи старого exe"шника...

Измени формат базы


 
-=[SDA]=- ©   (2004-03-04 09:55) [5]

>Измени формат базы
Неее... 42 таблицы!!! в каждой мин.5 полей...
База данных телеф. АТС + вся экономика.... лучше буду проверять версию файла, чем каждый раз менять названия полей...
Кстати, в проге примерно 50-80 модулей и 80-100 форм, отчетов и т.д... в половину из них я даже не заглядывал, т.к. прогу не я начинал писать.... так что это гемор...вот.... но все равно спасибо за совет


 
Романов Р.В. ©   (2004-03-04 11:07) [6]

Переименуй 1 основное поле и в базе и в исходниках (Замени 1 букву). Старый экзэшник не сможет работать с этой таблицей.


 
evvcom   (2004-03-04 11:47) [7]

А база на чем? (dbf, db, sql, ...)


 
mip ©   (2004-03-04 15:43) [8]

я делаю так:

function TFMain.FileVersion(AFileName:string): string;
var
 szName: array[0..255] of Char;
 P: Pointer;
 Value: Pointer;
 Len: UINT;
 GetTranslationString:string;
 FFileName: PChar;
 FValid:boolean;
 FSize: DWORD;
 FHandle: DWORD;
 FBuffer: PChar;
begin
 try
   FFileName := StrPCopy(StrAlloc(Length(AFileName) + 1), AFileName);
   FValid := False;
   FSize := GetFileVersionInfoSize(FFileName, FHandle);
   if FSize > 0 then
     try
       GetMem(FBuffer, FSize);
       FValid := GetFileVersionInfo(FFileName, FHandle, FSize, FBuffer);
     except
       FValid := False;
       raise;
     end;
   Result := "";
   if FValid then
     VerQueryValue(FBuffer, "\VarFileInfo\Translation", p, Len)
   else p := nil;
   if P <> nil then
     GetTranslationString := IntToHex(MakeLong(HiWord(Longint(P^)), LoWord(Longint(P^))), 8);
   if FValid then
     begin
       StrPCopy(szName, "\StringFileInfo\" + GetTranslationString + "\FileVersion");
       if VerQueryValue(FBuffer, szName, Value, Len) then
         Result := StrPas(PChar(Value));
     end;
 finally
   try
     if FBuffer <> nil then FreeMem(FBuffer, FSize);
   except
   end;
   try
     StrDispose(FFileName);
   except
   end;
 end;
end;



Страницы: 1 вся ветка

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.035 c
1-1082275000
Master Paleva
2004-04-18 11:56
2004.05.02
Как прописать что-либо в реестр из Делфи


6-1078586408
Scorp2
2004-03-06 18:20
2004.05.02
E-MAIL Password help


3-1080813080
Лысый
2004-04-01 13:51
2004.05.02
Окрестные точки.


3-1081082712
SergP
2004-04-04 16:45
2004.05.02
integer --> datetime. Как это сделать в запросе?


1-1081957227
kEY//
2004-04-14 19:40
2004.05.02
HotKeys