Обновление в дельфи

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Bill_Gates, 3 May 2011.

  1. Bill_Gates

    Bill_Gates New Member

    Joined:
    19 Mar 2011
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте помогите пожалуйста реализовать!
    У меня есть программа и я каждый раз её доделываю!
    И мне надо сделать так что бы программа проверяла наличее обновлений и если есть обновления то сообщала о том что версия устарела и качала новую!?
    Подскажите как реализовать?
    Заранее спасибо!
     
  2. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    Закидываешь на серв файл например ver.txt записываешь в него версию программы, при запуске проверяешь и если версия проги < версии указаной в файле, качаешь прогу с сервака. Способ конечно не фонтан, напрягаться лень...
     
  3. Anifuck

    Anifuck Member

    Joined:
    12 Nov 2010
    Messages:
    78
    Likes Received:
    7
    Reputations:
    0
    можно еще легче.
    делаешь страничку в том же самом контакте, в одном из полей информации пишешь версию программы. прога парсит страничку и сравинивает версии...
     
  4. Bill_Gates

    Bill_Gates New Member

    Joined:
    19 Mar 2011
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    это я понял и серв и у меня есть как это записать программно?
     
  5. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    Code:
    uses Windows, Messages, Wininet, ShellAPI;
    
    function GetInetFile(const URL, FileName: string): boolean;
    const
    BufferSize = 1024;
    var
    hSession, hURL: HInternet;
    Buffer: array[1..BufferSize] of Byte; 
    BufferLen: DWORD; 
    myfile: file; 
    sAppName: string; 
    begin
    Result := False; 
    sAppName := ExtractFileName(Application.ExeName); 
    hSession := InternetOpen(PChar(sAppName),INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
    try 
    hURL := InternetOpenURL(hSession, PChar(URL), nil, 0, 0, 0); 
    try 
    AssignFile(myfile, FileName); 
    Rewrite(myfile,1); 
    repeat 
    InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen); 
    BlockWrite(myfile, Buffer, BufferLen); 
    until 
    BufferLen = 0; 
    CloseFile(myfile); 
    Result := True; 
    finally 
    InternetCloseHandle(hURL); 
    end;
    finally 
    InternetCloseHandle(hSession); 
    end;
    Таким образом скачать попробуй...
    Версию проверить сам сумеешь?
     
  6. Anifuck

    Anifuck Member

    Joined:
    12 Nov 2010
    Messages:
    78
    Likes Received:
    7
    Reputations:
    0
    что то здоровый код, со страницой вк меньше и проще бы вышло, сейчас не напишу т.к компилятора под рукой нет, через пару часов смогу только...
     
  7. Bill_Gates

    Bill_Gates New Member

    Joined:
    19 Mar 2011
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Ожидаем вашего кода!=)
     
  8. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    Это код загрузки дистрибутива программы актуальной версии (загрузка файла с инета). Файл ты тоже с вк спарсишь? Проверку версии я не писал.
     
  9. Anifuck

    Anifuck Member

    Joined:
    12 Nov 2010
    Messages:
    78
    Likes Received:
    7
    Reputations:
    0
    домой приеду напишу!
     
  10. Anifuck

    Anifuck Member

    Joined:
    12 Nov 2010
    Messages:
    78
    Likes Received:
    7
    Reputations:
    0
    я не виноват что учусь в соседнем городе.
    вот код как обещал. короче версию проги заливай в поле где должен быть номер ICQ. всё.
    PHP:
    procedure TForm1.Button1Click(SenderTObject);
    var
    Stringlist:Tstringlist;
    Icqlist:Tstringlist;
    a,iqs,s,icq,ic:string;
    LoginList:TextFile;
    x,i,c,icqc:integer;
    begin
    StringList
    := TStringList.Create;
    ICqlist:= TStringList.Create;
    a:='  <div class="label fl_l">ICQ:</div>';
    AssignFile(LoginList'D:\parse\pars.txt');
    Rewrite(Loginlist);
    s:=idhttp1.Get('http://vkontakte.ru/id****');//Вместо звезд свой ID вставь!
    WriteLn(LoginLists);
    closefile(Loginlist);
    StringList.LoadFromFile('D:\parse\pars.txt');
    x:=stringlist.IndexOf(a);
    iqs:=stringlist.Strings[x+1];
    ICQlist.Add(iqs);
    icq:=ICQlist.Strings[0];
    ic:= Copy(icqpos('"labeled fl_l"'icq) +15pos('</div>'icq) - pos('"labeled fl_l"'icq) -15);
    memo2.Lines.Add(ic);
    end;
     
  11. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    shadowrun и Anifuck
    мне вот интересно, TextFile это так удобно чтоли?
     
  12. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    В каком месте?
     
  13. Anifuck

    Anifuck Member

    Joined:
    12 Nov 2010
    Messages:
    78
    Likes Received:
    7
    Reputations:
    0
    я бы конечно через массив делал, но уже был опыт написания подобного софта. В массиве исходный код страницы сливался в один большой беспорядочный текст, с которым невозможно работать.
    Я решил попробовать через .тхт файл, а потом переводить в массив, так всё гладко получается)
     
  14. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Мне вот тоже интересно, в каком месте это удобно, что вы оба написали код с использованием этого устаревшего механизма :eek:

    Забавно...
    TStringList, TFileStream, TStreamReader/Writer, также добавлен модуль IO - это все работало у меня нормально, а переменные-файлы это реально неудобно
     
    #14 GhostOnline, 3 May 2011
    Last edited: 3 May 2011
  15. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    А где ты в моём коде увидел переменную типа TextFile?
    +1
     
  16. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    myfile: file;
    практически тоже самое

    Свой вариант - не напишу, стоит дельфи
    7, я ее открою только если надо будет написать dll и больше ни-ни :(
    Выше уже озвучил что использовал
     
  17. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    А при копировании файла ассоциировать его логическое и физическое имя разве не нужно? :confused:. Заинтриговал :D ,покажи альтернативу.
     
  18. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    И что? Это вообще тут к чему? И что это меняет?
    IOUtils
    TFileStream
    TStreamWriter
     
    2 people like this.
  19. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    А можно вообще не парится.
    любой сервер с поддержкой php подойдет.
    прога постоянно делает UrlDownloadToFile и линк на закачку будет типа
    http://site.com/script.php?myver=zzzz

    скрипт смотрит на версию zzz и если есть новая версия, то отдаёт файл.
    если нет новой версии, то выдает ошибку.
    А прога смотрит скачался файл или нет, если скачался, то проверяет что это прога и что она корректна и делает апдейт себе.
     
  20. Bill_Gates

    Bill_Gates New Member

    Joined:
    19 Mar 2011
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0

    Код в студию!