25-12-2015, 12:43 AM
بإمكانك إستعمال مكونات Indy (موجودة مع دلفي)
هذا مثال للتحقق فقط من وجود نسخة جديدة إستعملت فقط مكون IdHTTP
في المرفقات تجد سورس بسيط مع ملف نصي
تعديل الملف النصي يتم بإستعمال إحدى محررات Hex لأن دالة التحقق تتعامل مع كل بايتات الملف
هذا مثال للتحقق فقط من وجود نسخة جديدة إستعملت فقط مكون IdHTTP
في المرفقات تجد سورس بسيط مع ملف نصي
تعديل الملف النصي يتم بإستعمال إحدى محررات Hex لأن دالة التحقق تتعامل مع كل بايتات الملف
PHP كود :
uses
IdHTTP;
type
TVer = packed record
Sign: array[0..3] of Char;
Ver: Word;
end;
function CheckVer(const URL: string; Ver: TVer): Integer;
var
HTTP: TIdHTTP;
Stm: TMemoryStream;
VerStm: TVer;
begin
Result := 0;
HTTP := TIdHTTP.Create(nil);
Stm := TMemoryStream.Create;
try
HTTP.HandleRedirects := True;
HTTP.ConnectTimeout := 15000; // 15sec
HTTP.ReadTimeout := 15000; // 15sec
try
HTTP.Get(URL, Stm);
Result := Integer(CompareMem(@Ver, Stm.Memory, SizeOf(TVer)));
except
// Error!
Result := -1;
end;
finally
HTTP.Free;
Stm.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
CurVer: TVer;
iResult: Integer;
begin
StrPCopy(CurVer.Sign, 'Ver:'); // Buffer Signature
CurVer.Ver := 01; // Current Version
iResult := CheckVer('http://www.example.net/updater.txt', CurVer);
case iResult of
-1: MessageBox(Handle, 'Error!', 'Up', MB_ICONWARNING);
0: MessageBox(Handle, 'New version is available', 'Up', MB_ICONASTERISK);
end;
end;
سبحان الله وبحمده سبحان الله العظيم

