dosya download etmek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
dosya download etmek
s.a.
arkadaşlar
UrlDownLoadToFile(nil,Pchar('http://www.filansite.com/klasor/Dosya.ini'),Pchar('d:\dosya.ini'),0,Nil);
komutu ile siteden dosya download ediyorum.
ancak program timer içinde bu komutu periyodik aralıklarla çalıştırıyor ve dosya download ediliyor , fakat
bu arada inenen dosyanın içeriğini run time anında alamıyorum. Ini dosyasının bilgilerini labellere yazdırmam gerekiyor.
Programı kapatıp, yeniden çalıştırınca o zaman ini dosyasının içeriğin alabiliyorum.
Birçok yol denedim
Dosyayı download etmeden önce eskisini sildim.
Dosyayı refresh ettim
labelleri refresh ettim
bir türlü olmadı.
arkadaşlar
UrlDownLoadToFile(nil,Pchar('http://www.filansite.com/klasor/Dosya.ini'),Pchar('d:\dosya.ini'),0,Nil);
komutu ile siteden dosya download ediyorum.
ancak program timer içinde bu komutu periyodik aralıklarla çalıştırıyor ve dosya download ediliyor , fakat
bu arada inenen dosyanın içeriğini run time anında alamıyorum. Ini dosyasının bilgilerini labellere yazdırmam gerekiyor.
Programı kapatıp, yeniden çalıştırınca o zaman ini dosyasının içeriğin alabiliyorum.
Birçok yol denedim
Dosyayı download etmeden önce eskisini sildim.
Dosyayı refresh ettim
labelleri refresh ettim
bir türlü olmadı.
Re: dosya download etmek
tahminimce kullandığınız download methodu bir kere download ettikten sonra cache den verileri alıyor...download işini idhttp ile yaparsanız böyle bir sorun olmaz.
Re: dosya download etmek
Aşağıdaki linkler işinize yarayabilir.
TIdHTTP Partial Download(Parça Parça Download)
http://www.tugrulhelvaci.com/?p=273
BITS(Background Intelligent Transfer Service) ile sessiz sedasız download
http://www.tugrulhelvaci.com/?p=258
TIdHTTP Partial Download(Parça Parça Download)
http://www.tugrulhelvaci.com/?p=273
BITS(Background Intelligent Transfer Service) ile sessiz sedasız download

http://www.tugrulhelvaci.com/?p=258
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
Re: dosya download etmek
downloadda sorun yok arkadaşlar ben timer içinde belirli araıklarla dosya download ediyorum, bunda sorun yok.
sorun dosya download edildikten sonra içeriğini ekrana yazdırmak, bu işlemler periyodik olarak timer içinde
gerçekleçmektedir. cevaplarınızı bekliyorum, şimdiden teşekkür edrim.
sorun dosya download edildikten sonra içeriğini ekrana yazdırmak, bu işlemler periyodik olarak timer içinde
gerçekleçmektedir. cevaplarınızı bekliyorum, şimdiden teşekkür edrim.
Re: dosya download etmek
Kod: Tümünü seç
application.progresmessage
Bir kelimenin anlamını öğretsen bile yeter..



- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
Re: dosya download etmek
program download edileceği zaman timeri durduruyorum
sorun devam ediyor yine olmadı...
sorun devam ediyor yine olmadı...
Re: dosya download etmek
Tekrar merhaba, download işini yaptırdığınız API fonksiyonu ilgili dosyayı yazma korumalı olarak açmış olabilir ve siz de o dosyayı TIniFile ile açmaya çalışıyorsanız hata alıyor olabilirsiniz. Nihayetinde TIniFile sınıfı ilgili dosyaya yazma ve okuma erişimleri hakkına sahip olmak isteyecektir. Gerçi hata alıp almadığınızı belirtmemişsiniz. TFileStream ile ilgili dosyayı sadece okuma modunda açmayı deneyebilirmisiniz download işleminin hemen ardından.
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
Re: dosya download etmek
arkadaşlar merhaba sanırım ben sorunumu tam olarak anlatamadım.
download da sorun yok program belirli aralıklarla timeri durduruyor dosyayı download ediyor
download edilen dosyayı o an okutup içeriğini ekrana yazdırıp sonra tekrar timeri çalıştırıp bu şekilde devam edecek.
timer düzenli olaraK çalışıyor, dosya download ediliyor buralarda sorun yok.
sorun download edilen dosyanın run-time anında içeriğini ekrana yazdırmak.
çünkü programı kapatıp tekrar çalıştırınca bilgiler o zaman ekrana geliyor
kod aşağıdadır.
procedure TAnaform.SaatTimer(Sender: TObject);
begin
Inc(Dak0);
Lbl_Guncelleme1.Caption:=FloatToStr((Gun_Ara_Dak*60)-Dak0);
If Dak0>=Gun_Ara_Dak*60 Then Begin
Dak0:=0;
Guncelle;
application.ProcessMessages;
end;
procedure Tanaform.Guncelle;
Begin
If Internetgetconnectedstate(@BagDrm, 0) Then Begin // internet bağlantısı varsa: bagdrm word
Try
UrlDownLoadToFile(nil,Pchar('http://www.mysite.com/klasor/liste.txt'),Pchar('d:\klasor\liste.txt'),0,Nil);
Except
// Hata
End;
End;
if fileexists(PrgDizin+Liste_txt) then begin
ListBox1.Items.LoadFromFile(PrgDizin+Liste_txt);
end;
end;
liste.txt download ediliyor ancak içindeki bilgileri run time anında göremiyorum, programı kapatıp açınca görüyorum, sorun bu
download da sorun yok program belirli aralıklarla timeri durduruyor dosyayı download ediyor
download edilen dosyayı o an okutup içeriğini ekrana yazdırıp sonra tekrar timeri çalıştırıp bu şekilde devam edecek.
timer düzenli olaraK çalışıyor, dosya download ediliyor buralarda sorun yok.
sorun download edilen dosyanın run-time anında içeriğini ekrana yazdırmak.
çünkü programı kapatıp tekrar çalıştırınca bilgiler o zaman ekrana geliyor
kod aşağıdadır.
procedure TAnaform.SaatTimer(Sender: TObject);
begin
Inc(Dak0);
Lbl_Guncelleme1.Caption:=FloatToStr((Gun_Ara_Dak*60)-Dak0);
If Dak0>=Gun_Ara_Dak*60 Then Begin
Dak0:=0;
Guncelle;
application.ProcessMessages;
end;
procedure Tanaform.Guncelle;
Begin
If Internetgetconnectedstate(@BagDrm, 0) Then Begin // internet bağlantısı varsa: bagdrm word
Try
UrlDownLoadToFile(nil,Pchar('http://www.mysite.com/klasor/liste.txt'),Pchar('d:\klasor\liste.txt'),0,Nil);
Except
// Hata
End;
End;
if fileexists(PrgDizin+Liste_txt) then begin
ListBox1.Items.LoadFromFile(PrgDizin+Liste_txt);
end;
end;
liste.txt download ediliyor ancak içindeki bilgileri run time anında göremiyorum, programı kapatıp açınca görüyorum, sorun bu
Re: dosya download etmek
ListBox1.Items.LoadFromFile(PrgDizin+Liste_txt);
Yukarıdaki satırı çalıştırdığınızda herhangi bir hata alıyor musunuz ?
Ayrıca TFileStream ile ilgili dosyayı sadece okuma modunda açmayı deneyebilirmisiniz download işleminin hemen ardından.
Yukarıdaki satırı çalıştırdığınızda herhangi bir hata alıyor musunuz ?
Ayrıca TFileStream ile ilgili dosyayı sadece okuma modunda açmayı deneyebilirmisiniz download işleminin hemen ardından.
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
Re: dosya download etmek
sorunuma hala çözüm bulamadım,
UrlDownLoadToFile fonksiyonu program çalıştığında bir defa dosya indiriyor bir daha indirmiyor,
programı kapatıp açınca tekrar dosyayı indiriyor. benim istediğim timer içinde belirli
aralıklarla dosya indirmesi. Çünkü bu dosya arada bir güncelleniyor. Bu dosyanın içeriğini
alıp listboxa atmam gerekiyor. Timer içinde Application.ProcessMessages kullanıyonum, bu çözüm olmadı.
UrlDownLoadToFile fonksiyonu program çalıştığında bir defa dosya indiriyor bir daha indirmiyor,
programı kapatıp açınca tekrar dosyayı indiriyor. benim istediğim timer içinde belirli
aralıklarla dosya indirmesi. Çünkü bu dosya arada bir güncelleniyor. Bu dosyanın içeriğini
alıp listboxa atmam gerekiyor. Timer içinde Application.ProcessMessages kullanıyonum, bu çözüm olmadı.
Re: dosya download etmek
tahminimce kullandığınız download methodu bir kere download ettikten sonra cache den verileri alıyor...download işini idhttp ile yaparsanız böyle bir sorun olmaz.
Re: dosya download etmek
Windowsdaki meşhur hata yüzünden, download fonksiyonu dogru çalışmıyor. Internetteki dosya değişmiş bile olsa, dogrudan cache de bulunan daha önceki dosyayı veriyor.
Çözüm aşagıdaki gibi bir fonksiyon kullanmak gerekiyor.
Çözüm aşagıdaki gibi bir fonksiyon kullanmak gerekiyor.
Kod: Tümünü seç
const
BINDF_ASYNCHRONOUS = $00000001;
BINDF_ASYNCSTORAGE = $00000002;
BINDF_NOPROGRESSIVERENDERING = $00000004;
BINDF_OFFLINEOPERATION = $00000008;
BINDF_GETNEWESTVERSION = $00000010;
BINDF_NOWRITECACHE = $00000020;
BINDF_NEEDFILE = $00000040;
BINDF_PULLDATA = $00000080;
BINDF_IGNORESECURITYPROBLEM = $00000100;
BINDF_RESYNCHRONIZE = $00000200;
BINDF_HYPERLINK = $00000400;
BINDF_NO_UI = $00000800;
BINDF_SILENTOPERATION = $00001000;
BINDF_PRAGMA_NO_CACHE = $00002000;
BINDF_GETCLASSOBJECT = $00004000;
BINDF_RESERVED_1 = $00008000;
BINDF_FREE_THREADED = $00010000;
BINDF_DIRECT_READ = $00020000;
BINDF_FORMS_SUBMIT = $00040000;
BINDF_GETFROMCACHE_IF_NET_FAIL= $00080000;
BINDF_FROMURLMON = $00100000;
BINDF_FWD_BACK = $00200000;
BINDF_PREFERDEFAULTHANDLER = $00400000;
BINDF_RESERVED_3 = $00800000;
function DownloadToFile(URL, FileName: String): Boolean;
var
lpszFile : array [0..MAX_PATH] of Char;
begin
if (URLDownloadToCacheFile(nil, PChar(URL), @lpszFile, MAX_PATH, BINDF_GETNEWESTVERSION, nil) = S_OK) then
result:=CopyFile(@lpszFile, PChar(FileName), False)
else
result:=False;
end;
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
Re: dosya download etmek
cevaplar için teşekkürler arkadaşlar idhttp ile halloldu.