برگزیده های پرشین تولز

تشخیص وجود فایل در اینترنت

peiman

Registered User
تاریخ عضویت
23 فوریه 2003
نوشته‌ها
1,554
لایک‌ها
21
سن
36
سلام به همه
چطوری میشه چک کرد که یه فایلی تو اینترنت هست یا نه
میخوام قبل از اینکه برنامه شروع به دانلودش کنه چک کنم که وسط کار اررور نده
خیلی ممنون
 

peiman

Registered User
تاریخ عضویت
23 فوریه 2003
نوشته‌ها
1,554
لایک‌ها
21
سن
36
یه مقداری بیشتر راهنمایی میکنی
idhttp خروجی بوولین نداره که تو if استفاده کنم
 

IcedAngel

Registered User
تاریخ عضویت
13 اکتبر 2005
نوشته‌ها
1,364
لایک‌ها
30
سن
41
محل سکونت
Philadelphia
به نقل از Arash_j13 :
می تونی به کمک TIDHTTP که از کامپوننت های iNDY هست یه درخواست HEAD بفرستی و نتیجه رو بررسی کنی ببین فایل وجود داره یا نه
میشه این رو یکم بیشتر توضیح بدی من بیلمیره:blink: !... منم همین مشکل رو دارم ... ممنون :)
 

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
متا سفانه من الان دسترسی به دلفی ندارم
اما روش کار این طوریه

idhttp1.head('file_url');
if idhttp1.responsecode<>404 then
showmesssage('file exist')
else
showmessage('file not found')

البته این روش بروی بعضی از سرویس دهنده جواب نمیده اما در صدشون خیلی کمه و ممولا جز سایتهایی مثل رپیدشیر هستن
 

peiman

Registered User
تاریخ عضویت
23 فوریه 2003
نوشته‌ها
1,554
لایک‌ها
21
سن
36
سلام
الان اجراش کردم
اگه فایل وجود داشته باشه درست کار میکنه ولی اگه نباشه برنامه هنگ میکنه
و به جای اینکه بگه فایل وجود نداره پیغام time out رو میده
به هر حال دستت درد نکنه همینم کلی کمکه ولی نمیشه اون اررور رو هم برطرف کرد؟
 

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
باید صبر کنید من یه دلفی نصب کنم ببین این اررو چیه؟
 

IcedAngel

Registered User
تاریخ عضویت
13 اکتبر 2005
نوشته‌ها
1,364
لایک‌ها
30
سن
41
محل سکونت
Philadelphia
من که دلفی بلد نیستم راه دیگه ای وجود نداره ؟:blink:
 

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
زود نصب می کنم تا فردا صبر کنید
 

peiman

Registered User
تاریخ عضویت
23 فوریه 2003
نوشته‌ها
1,554
لایک‌ها
21
سن
36
ممنون میشم اگه این کار رو بکنی
 

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
اینو ببینبد اگه مشکلی بود در خدمتم
 

فایل های ضمیمه

  • idhttp.zip
    3.8 KB · نمایش ها: 27

peiman

Registered User
تاریخ عضویت
23 فوریه 2003
نوشته‌ها
1,554
لایک‌ها
21
سن
36
ممنون کامله
به سوال دانلودم هم جواب دادی دستت درد نکنه
 

peiman

Registered User
تاریخ عضویت
23 فوریه 2003
نوشته‌ها
1,554
لایک‌ها
21
سن
36
این کامپوننتها رو از کجا یاد گرفتی
من که جایی تا حالا اموزشش رو ندیدم
 

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
منم تا حالا آموزشش رو ندیدماما با تمرین یاد گرفتم مثال های خود Indy خوبن برای شروع
 

Mojgan110

کاربر تازه وارد
تاریخ عضویت
5 مارس 2006
نوشته‌ها
243
لایک‌ها
12
محل سکونت
www.DotNetSource.com
من هم يه پروژه داشتم كه بايد كانشكن استرينگ را از يه فايل توي اينترنت ميگرفتم .
واسه همين ، چند تا تابع نوشتم واسه اين كار كه خب درست هم بودند و تست كردمشون ديگه.

اصلا اول ببينيم كه به اينترنت وصل هستيم يا نه ؟ :happy:

کد:
function GetOnlineStatus : Boolean;
var
  ConTypes : Integer;
begin
  ConTypes := INTERNET_CONNECTION_MODEM + INTERNET_CONNECTION_LAN + INTERNET_CONNECTION_PROXY;
  if (InternetGetCONNECTEDState(@ConTypes, 0) = False) then
    Result := False
    else
      Result := True;
end;

حالا بهدش ببينيم كه فايلي كه ميخوايم دانلودش كنيم ، در مسيرمون هست يا نه ، آدرسه كامله مسير را بدهيد به پارامتر تابع زير :

کد:
Function CheckUrl(url:string):boolean;

var
hSession, hfile: HINTERNET;
dwindex,dwcodelen : DWORD;
dwcode: array[1..20] of char;
res : pchar;
begin
  if pos('http://',lowercase(url))=0 then
     url := 'http://'+url;
  Result := false;
  hSession := InternetOpen('InetURL:/1.0',
       INTERNET_OPEN_TYPE_PRECONFIG,nil, nil, 0);
  if assigned(hsession) then
    begin
      hfile := InternetOpenUrl(
           hsession,
           pchar(url),
           nil,
           0,
           INTERNET_FLAG_RELOAD,
           0);
      dwIndex  := 0;
      dwCodeLen := 10;
      HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE,
              @dwcode, dwcodeLen, dwIndex);
      res := pchar(@dwcode);
      result:= (res ='200') or (res ='302');
      if assigned(hfile) then
        InternetCloseHandle(hfile);
      InternetCloseHandle(hsession);
    end;

end;

:happy:
 
بالا