Здравствуйте помогите пожалуйста реализовать! У меня есть программа и я каждый раз её доделываю! И мне надо сделать так что бы программа проверяла наличее обновлений и если есть обновления то сообщала о том что версия устарела и качала новую!? Подскажите как реализовать? Заранее спасибо!
Закидываешь на серв файл например ver.txt записываешь в него версию программы, при запуске проверяешь и если версия проги < версии указаной в файле, качаешь прогу с сервака. Способ конечно не фонтан, напрягаться лень...
можно еще легче. делаешь страничку в том же самом контакте, в одном из полей информации пишешь версию программы. прога парсит страничку и сравинивает версии...
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; Таким образом скачать попробуй... Версию проверить сам сумеешь?
что то здоровый код, со страницой вк меньше и проще бы вышло, сейчас не напишу т.к компилятора под рукой нет, через пару часов смогу только...
Это код загрузки дистрибутива программы актуальной версии (загрузка файла с инета). Файл ты тоже с вк спарсишь? Проверку версии я не писал.
я не виноват что учусь в соседнем городе. вот код как обещал. короче версию проги заливай в поле где должен быть номер ICQ. всё. PHP: procedure TForm1.Button1Click(Sender: TObject); 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(LoginList, s); 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(icq, pos('"labeled fl_l"', icq) +15, pos('</div>', icq) - pos('"labeled fl_l"', icq) -15); memo2.Lines.Add(ic); end;
я бы конечно через массив делал, но уже был опыт написания подобного софта. В массиве исходный код страницы сливался в один большой беспорядочный текст, с которым невозможно работать. Я решил попробовать через .тхт файл, а потом переводить в массив, так всё гладко получается)
Мне вот тоже интересно, в каком месте это удобно, что вы оба написали код с использованием этого устаревшего механизма Забавно... TStringList, TFileStream, TStreamReader/Writer, также добавлен модуль IO - это все работало у меня нормально, а переменные-файлы это реально неудобно
myfile: file; практически тоже самое Свой вариант - не напишу, стоит дельфи 7, я ее открою только если надо будет написать dll и больше ни-ни Выше уже озвучил что использовал
А при копировании файла ассоциировать его логическое и физическое имя разве не нужно? . Заинтриговал ,покажи альтернативу.
А можно вообще не парится. любой сервер с поддержкой php подойдет. прога постоянно делает UrlDownloadToFile и линк на закачку будет типа http://site.com/script.php?myver=zzzz скрипт смотрит на версию zzz и если есть новая версия, то отдаёт файл. если нет новой версии, то выдает ошибку. А прога смотрит скачался файл или нет, если скачался, то проверяет что это прога и что она корректна и делает апдейт себе.