iyi çalışmalar;
e-devlet tarafından yayımlanan bir excel dosyasını kendi programım içerisinden kontrol edip değişiklikleri güncellemem gerekiyor. Nasıl bir yöntem önerirsiniz? Excel dosyasını çekip tek tek satırları kontrol etmek haricinde? Excel dosyasının değiştirilme tarihine bakılabilir belki fakat netteki bir dosyanın file-age olayını nasıl alırım onu bilmiyorum.
Saygılar;
internet ortamında yayımlanan excel dosyasından güncelleme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- ahmet_sinav
- Üye
- Mesajlar: 263
- Kayıt: 17 Nis 2004 07:44
- Konum: İzmir Yeşilyurt Ulu Cami
- İletişim:
internet ortamında yayımlanan excel dosyasından güncelleme
İmam Süleyman Yakub <==> Molla Mustafa Mansur
Şöyle düşünebilirsin.
- Netteki bir dosya download edilirken bile yarım bir operasyona kaldığımız yerden başlayabiliyoruz. Bunu nasıl başarıyoruz ?
- Download başlamadan önce netteki dosyanın bilgileri bize dosya başlığında verilir ve/veya bizim talebimiz oraya iletilir.
- Gelen başlık bilgisi aşağıdaki şekildedir
- Aynı anda bu bilgi IdHttp'nin Response içinde ayrıştırılmış olarak da bulunurlar. Sorun gereği bize lazım olan Last-Modified olan başlık bilgisidir.
- Yapacağımız işlem bir dosyayı GET edecekmiş gibi davranıp hemen işlemi iptal etmek ve gelen başlık bilgisini değerlendirmek.
- Şimdi aşağıdaki kodu senin için ürettim. Dene ve kavramaya çalış.
- Netteki bir dosya download edilirken bile yarım bir operasyona kaldığımız yerden başlayabiliyoruz. Bunu nasıl başarıyoruz ?
- Download başlamadan önce netteki dosyanın bilgileri bize dosya başlığında verilir ve/veya bizim talebimiz oraya iletilir.
- Gelen başlık bilgisi aşağıdaki şekildedir
Kod: Tümünü seç
Date: Tue, 11 Sep 2007 13:37:48 GMT
Server: Apache/2.0.52 (CentOS)
Last-Modified: Thu, 06 Sep 2007 22:41:39 GMT
ETag: "1c004-3f321-39ba8ec0"
Accept-Ranges: bytes
Content-Length: 258849
Content-Type: application/zip
- Yapacağımız işlem bir dosyayı GET edecekmiş gibi davranıp hemen işlemi iptal etmek ve gelen başlık bilgisini değerlendirmek.
- Şimdi aşağıdaki kodu senin için ürettim. Dene ve kavramaya çalış.
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
Var
DosyaURL : String;
begin
DosyaURL := 'http://www.armantr.com/web/download/files/MSNTurk.zip';
IdHTTP1.Get(DosyaURL);
end;
Kod: Tümünü seç
procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
AWorkCountMax: Integer);
begin
// İşlem başlar başlamaz durdurduk.. Bize sadece header gerekli idi..
// Bu arada onu da aldık.. Çözümleme aşağıda..
TIdHttp(ASender).Disconnect;
end;
Kod: Tümünü seç
procedure TForm1.IdHTTP1HeadersAvailable(Sender: TObject;
AHeaders: TIdHeaderList; var VContinue: Boolean);
Const
Aranan = 'Last-Modified:';
Var
BaslikBilgi : String;
Tarih : String;
FileAge : TDateTime;
begin
// Birinci Method
FileAge := IdHTTP1.Response.LastModified;
ShowMessage( 'Dosya Tarihi (Sunucu) : ' + DateTimeToStr(FileAge) );
// Bu sonuç sunucu bilgisayardan geldiğinden GMT ayarına göre değişkendir.
// Test ettiğim dosyam için bundan 3 saat çıkarıcam...
// Uses'a DateUtils ekleyelim ki IncHour fonksiyonumuz çalışsın.
FileAge := IncHour(IdHTTP1.Response.LastModified, -3);
ShowMessage( 'Dosya Tarihi (3 saat düşülmüş hali...) : ' + DateTimeToStr(FileAge) );
// İkinci Method
// Bu methodda ise direk file headerden TEXT olarak bu tarih bilgisini alıcaz..
// Klasik String Operasyonları (Copy, Pos, Delete vb.) ile işlem yürütücez
BaslikBilgi := AHeaders.Text;
If Pos(Aranan, BaslikBilgi) > 0 then begin
Delete(BaslikBilgi, 1, Pos(Aranan, BaslikBilgi) + Length(Aranan)-1);
Tarih := Trim( Copy(BaslikBilgi, 1, Pos(#10, BaslikBilgi)-1) );
ShowMessage( 'Dosya Tarihi : ' + Tarih );
end;
end;
- ahmet_sinav
- Üye
- Mesajlar: 263
- Kayıt: 17 Nis 2004 07:44
- Konum: İzmir Yeşilyurt Ulu Cami
- İletişim: