Форум: "WinAPI";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
ВнизКак узнать версию проекта??? Найти похожие ветки
← →
-=[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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c