Delphi Can

Orjinalini görmek için tıklayınız: UrlDownloadFile Hatası
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Merhaba arkadaşlar.

Uygulamam da urldownloadfile fonksiyonu ile http://www.xxx.xxx/ali.txt gibi bi url den yerele dosya aktarıp işlem yaptırtıyorum. 

Fonsyion Win10 ve üstünde sorunsuz çalışırken, Win8 ve Win7 de çalışmıyor.. hiç bir şekilde o url ye gitmiyor. 

Başına gelen veya çözümü bilen var mı dır? Ortak kullandığım Fonksiyonum aşağıdaki gibidir.


function DownloadFile(sourcefile, destfile: string): Boolean;
begin
  try
    Result := UrlDownloadToFile(nil, pchar(sourcefile), pchar(destfile), 0, nil) = 0;
  except
    Result := False;
  end;
end;
(11-02-2024, Saat: 20:28)mcuyan Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba arkadaşlar.

Uygulamam da urldownloadfile fonksiyonu ile http://www.xxx.xxx/ali.txt gibi bi url den yerele dosya aktarıp işlem yaptırtıyorum. 

Fonsyion Win10 ve üstünde sorunsuz çalışırken, Win8 ve Win7 de çalışmıyor.. hiç bir şekilde o url ye gitmiyor. 

Başına gelen veya çözümü bilen var mı dır? Ortak kullandığım Fonksiyonum aşağıdaki gibidir.


function DownloadFile(sourcefile, destfile: string): Boolean;
begin
  try
    Result := UrlDownloadToFile(nil, pchar(sourcefile), pchar(destfile), 0, nil) = 0;
  except
    Result := False;
  end;
end;

Bu UrlDownloadToFile UrlMon.pas içindeki bildiğimiz API ise, onun dönüş değerini hatalı kontrol ettiğinizi görüyorum. Aşağıdaki link'ten dönüş ile ilgili değerleri kontrol ederek işlem yapmanızı tavsiye ederim. Geriye dönen HRESULT değeri S_OK'dan farklı ise, gelen değeri internette aratıp nokta atışı hatayı tespit edebilirsiniz.
Ben bu fonksiyonu yazdım ve dosya almak ve kaydetmek için kullanıyorum.



Kod:
procedure TfrmDataModule.LoadFileFromURL(FileName: String; url: string);
var
 http : TNetHTTPClient;
 vStream : TMemoryStream;
begin
 try
   try
     http := TNetHTTPClient.Create(nil);
     vStream :=  TMemoryStream.Create;

     if (Pos('https', LowerCase(url)) > 0) then
           HTTP.SecureProtocols  := [THTTPSecureProtocol.TLS1,
                                     THTTPSecureProtocol.TLS11,
                                     THTTPSecureProtocol.TLS12];
     http.Get(url, vStream);
     vStream.Position  :=  0;

     vStream.SaveToFile(FileName);
   except
   end;
 finally
     vStream.DisposeOf;
     http.DisposeOf;
 end;
end;
Teşekkürler..
Bu apinin ansi ve unicode olanı var ikisini de denediniz mi?
URLDownloadToFileA
URLDownloadToFileW
Denemdim de.. mantik olarak ne farkı olabilir ki hocam.?
Ansi kullanımda belirli karakterlerlerde sorun olabilir.
Mesela dosya yolunda özel bir karakter kullanılıyorsa.
yok hocam. tamamen ing karakter seti. özel yada tr karakterler yok hiç..