![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
не определяется версия приложения
Handle © (2011-05-31 11:42:00)Приложение проверяет наличие обновлений на веб-сервере. Для этого формируется HTTP-запрос, который включает в себя текущую версию приложения (для определения текущей версии написана функция GetValue).
function GetVersion(const ExeFileName: string): string;
const
InfoNum = 10;
InfoStr: array[1..InfoNum] of string = ('CompanyName', 'FileDescription', 'FileVersion', 'InternalName', 'LegalCopyright', 'LegalTradeMarks', 'OriginalFileName', 'ProductName', 'ProductVersion', 'Comments');
var
N, Len: DWORD;
Buf: PChar;
X: PVSFixedFileInfo;
begin
Result := '';
N := GetFileVersionInfoSize(PChar(ExeFileName), N);
if N > 0 then
begin
GetMem(Buf, N);
try
GetFileVersionInfo(PChar(ExeFileName), 0, N, Pointer(Buf));
if VerQueryValue(Buf, '\', Pointer(X), Len) then
Result := IntToStr(HIWORD(X^.dwFileVersionMS)) +
'.' + IntToStr(LOWORD(X^.dwFileVersionMS)) +
'.' + IntToStr(HIWORD(X^.dwFileVersionLS)) +
'.' + IntToStr(LOWORD(X^.dwFileVersionLS));
finally
FreeMem(Buf);
end;
end;
if Length(Result) = 0 then
Result := const_msg_VersionError;
end;
Почемуто функция иногда не может определить версию (хотя информацию о версии исполняемый файл содержит), в результате чего неправильно формируется HTTP-запрос. Что может быть не так?
sniknik (2011-05-31 11:55:00) [1]> Что может быть не так?
может ищешь не там... результаты запросов вообще то кэшируются (могут), и некоторые кэшируюшие прокси даже не обращают внимания на заголовки (ну там поле ехпаред)... т.е. можешь получать старые данные когда на сервере уже все давно поменялось.
можно подставить дату со временем в фиктивный параметр запроса и посмотреть... url тогда будет всегда уникальный, и кэш работать не будет.