Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2014, 03:26   #1
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию Проверка обновлений C++

Как можно проверить текущию версию программы, и сравнить её с версией в txt на сервере?
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 06.01.2014, 09:19   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

При запуске запросить с сервера txt файл, прочитать его и проверить версию.
Если ты хранишь версию как я - в ресурсах то вот пример на Делфи:
Код:
function VersionMe: String;
var
  verblock:PVSFIXEDFILEINFO;
  versionMS,versionLS:cardinal;
  verlen:cardinal;
  rs:TResourceStream;
  m:TMemoryStream;
  p:pointer;
  s:cardinal;
begin
  m:=TMemoryStream.Create;
  try
    rs:=TResourceStream.CreateFromID(HInstance,1,RT_VERSION);
    try
      m.CopyFrom(rs,rs.Size);
    finally
      rs.Free;
    end;
    m.Position:=0;
    if VerQueryValue(m.Memory,'\',pointer(verblock),verlen) then
      begin
        VersionMS:=verblock^.dwFileVersionMS;
        VersionLS:=verblock^.dwFileVersionLS;
        Result:=IntToStr(versionMS shr 16)   +'.'+
          IntToStr(versionMS and $FFFF)      +'.'+
          IntToStr(VersionLS shr 16)         +'.'+
          IntToStr(VersionLS and $FFFF);
      end;
    if VerQueryValue(m.Memory,PChar('\\StringFileInfo\\'+
      IntToHex(GetThreadLocale,4)+IntToHex(GetACP,4)+'\\FileDescription'),p,s) or
        VerQueryValue(m.Memory,'\\StringFileInfo\\040904E4\\FileDescription',p,s) then //en-us
          Result:=PChar(p)+' '+Result;
  finally
    m.Free;
  end;
end;
Который я использую. Попробуй переведи в Си.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.01.2014, 16:05   #3
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
При запуске запросить с сервера txt файл, прочитать его и проверить версию.
Если ты хранишь версию как я - в ресурсах то вот пример на Делфи:
Код:
function VersionMe: String;
var
  verblock:PVSFIXEDFILEINFO;
  versionMS,versionLS:cardinal;
  verlen:cardinal;
  rs:TResourceStream;
  m:TMemoryStream;
  p:pointer;
  s:cardinal;
begin
  m:=TMemoryStream.Create;
  try
    rs:=TResourceStream.CreateFromID(HInstance,1,RT_VERSION);
    try
      m.CopyFrom(rs,rs.Size);
    finally
      rs.Free;
    end;
    m.Position:=0;
    if VerQueryValue(m.Memory,'\',pointer(verblock),verlen) then
      begin
        VersionMS:=verblock^.dwFileVersionMS;
        VersionLS:=verblock^.dwFileVersionLS;
        Result:=IntToStr(versionMS shr 16)   +'.'+
          IntToStr(versionMS and $FFFF)      +'.'+
          IntToStr(VersionLS shr 16)         +'.'+
          IntToStr(VersionLS and $FFFF);
      end;
    if VerQueryValue(m.Memory,PChar('\\StringFileInfo\\'+
      IntToHex(GetThreadLocale,4)+IntToHex(GetACP,4)+'\\FileDescription'),p,s) or
        VerQueryValue(m.Memory,'\\StringFileInfo\\040904E4\\FileDescription',p,s) then //en-us
          Result:=PChar(p)+' '+Result;
  finally
    m.Free;
  end;
end;
Который я использую. Попробуй переведи в Си.
на делфи я тоже знаю как. А как это перевести в C++?
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 06.01.2014, 16:19   #4
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Например, как перевести этот код в C++:

Код:
var
version:WideString;
begin
try
version:=IdHTTP1.Get('http://sayt.ru/version.txt');
if version='1.0' then
begin
Application.MessageBox('У вас установлена последняя версия.','Внимание',MB_OK);
end
else
begin
Application.MessageBox('Доступно обновление.','Внимание',MB_OK);
end;
except
on e:Exception do
end;
end;
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 06.01.2014, 20:00   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А на какой Си? Если на Билдер то проще, а если на какойнить VC то придется WinAPI скорее всего юзать. Хедер WinInet точнее.
Собсно говоря можешь начать изучение отсюда: http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.01.2014, 20:10   #6
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А на какой Си? Если на Билдер то проще, а если на какойнить VC то придется WinAPI скорее всего юзать. Хедер WinInet точнее.
Собсно говоря можешь начать изучение отсюда: http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
Visual C++
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 07.01.2014, 22:56   #7
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

ну так что не кто не знает?
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 07.01.2014, 22:58   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Я так понял, предложенное мной в молоко?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка обновлений Fahman Visual C++ 0 04.01.2014 04:22
Как правильно сделать программу обновлений? Dux Работа с сетью в Delphi 13 13.06.2013 13:30
Построение системы обновлений Lindemann66 Qt и кроссплатформенное программирование С/С++ 0 05.06.2012 11:07
Выбор источника обновлений Bu$ter Microsoft Office Excel 20 12.11.2008 09:46
Система обновлений Johnson Общие вопросы Delphi 8 25.10.2008 20:39