idFTP ile çektiğim EXE lerin boyutu değişiyor.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Salih
Üye
Mesajlar: 250
Kayıt: 11 Mar 2004 05:36

idFTP ile çektiğim EXE lerin boyutu değişiyor.

Mesaj gönderen Salih »

Merhaba,

idFTP ile bir deneme yapıyorum. Güncellemek istediğim program olan SATIS.ZIP, ftp yapan program FTPYAP.EXE, bir de deneme için DENEME.EXE isimli 3 dosyayı kendi ftp server'ımıza yükledim.

FTPYAP.EXE programı, ftp sunucuya bağlanıp önce pgmsurum isimli bir text dosyası indiriyor, programın mevcut sürümüyle karşılaştırıp yeni sürüm varsa yukarıda saydığım 3 dosyayı peşpeşe indiriyor.

1- Yerel ağdan ftp sunucuya bağlanıp bu işlemleri yaparken her şey gayet güzel çalışıyor.

2- Evden deneme için bağlandığımda ise indirilen EXE dosyalarının boyutu değişiyor ve indirdikten sonra FTPYAP.EXE yi çalıştırınca "bu bir win32 uygulaması değil" gibi bir hata mesajı veriyor.

FTPYAP.EXE 613.888 olan boyutu 615.059 a çıkıyor.
DENEME.EXE 618.496 olan boyut 620.115 a çıkıyor.

Kod: Tümünü seç

      IdFTP1.TransferType := ftBinary;
        Self.ChageDir('/YTL/ADSL');
        BytesToTransfer := IdFTP1.Size('FTPYAP.EXE');
'size' değerini doğru aldığını izliyorum, ancak her seferinde boyutlar yukarıda yazdığım gibi değişiyor. ftASCII olarak da denedim, sonuç değişmedi. Ftp programlarıyla bu dosyaları çekersem boyutları değişmiyor ancak kendi ftpyap.exe programımla çekersem boyutlar değişiyor :(

EXE dosyaları ZIP haline çevirirsem bu sorun çözülür sanırım, ancak olayın nedeni hakkında fikrinizi almak istedim.

Şimdiden teşekkürler.
Sevgi, Saygı.....
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Setup'ını yanlış kuruyorsundur.

- Ayrıca iki kalem kod yazınca çözüm beklemek olmaz. Zaten hata araştırırken etüd projecikler oluşturman lazım. Mesela bir dosyanın FTP ile download edileceği fonksiyon yazabilirdin.

- Yine de kendi kullandığım fonksiyonu yazayım... Anahtar teslimi çözüm.. Kendi projeni de bu şekilde fonksiyonlar halinde yaparsan, ilerleyen zamanlarda ve/veya başka projelerde blok halinde zaman kazanırsın..

Kod: Tümünü seç

function FTPDosyaAl( IdFTP : TIdFTP; SrcDosya, DesDosya:TFileName; Ftp, RemoteDir, Login, Pass : String ):Boolean;
begin // Uses IdFTP, IdFTPCommon
  Result := False;
  IdFtp.Host     := Ftp;
  IdFtp.Username := Login;
  IdFtp.Password := Pass;
  IdFtp.Passive  := True;
  IdFtp.Connect;
  If IdFtp.Connected then
  begin
    IdFtp.ChangeDir(RemoteDir);
    Try
      IdFtp.TransferType := ftBinary; // Uses IdFTPCommon
      IdFtp.Get(SrcDosya, DesDosya, False);
    Finally
      Result := True;
    end;
    IdFtp.Quit;
  end;
end;
// Kullanımı

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
Var
  FTPAdres,
  KaynakDizin,
  Name,
  Pass,
  KaynakDosya,
  HedefDosya      : String;
begin
  FTPAdres    := 'www.divxplanet.org';
  KaynakDizin := '/subdomains/emerkez/httpdocs/files/';
  Name        := 'isim';
  Pass        :=  'sifre';
  KaynakDosya := 'eMerkez2006_1_0_15_3_setup.exe';
  HedefDosya  := ExtractFilePath(Application.Exename) + KaynakDosya;
  If FileExists(HedefDosya) AND ( MessageDlg('Hedef Dosya Mevcut, üzerine yazılsın mı ? '+#13'('+HedefDosya+')', mtInformation, [mbYes, mbCancel], 0) = mrCancel )
   then EXIT
   else DeleteFile(HedefDosya);

  If FTPDosyaAl( IdFtp1, KaynakDosya, HedefDosya, FTPAdres, KaynakDizin, Name, Pass )
    then MessageDlg('Dosya Başarıyla Alındı'+#13'('+HedefDosya+')', mtInformation, [mbok], 0)
    else MessageDlg('Dosya Alınamadı'+#13'('+KaynakDosya+')', mtError, [mbok], 0);
end;
Resim
Resim ....Resim
Salih
Üye
Mesajlar: 250
Kayıt: 11 Mar 2004 05:36

Mesaj gönderen Salih »

Hocam,

Sanırım tam anlayamadım neyi kastettiğini veya nerde hata yaptığımı. Zaten ben de dediğin şekilde yaptım. Bizim kuruluşlarda DOS ortamında çalışan bazı programlar var, amacım bunları gerekince internetten güncellemek. Dos programı, Delphi de yazdığım FTPYAP.EXE yi çağırıyor. Ancak her nedense ftpyap.exe ile internetten indirilen EXE dosyalarının boyutu değişiyor. Eğer aynı programı sunucunun bulunduğu yerel ağ üzerinden çalıştırırsam indirme hatasız biçimde yapılıyor.
Sevgi, Saygı.....
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Gönderdiğim kodu olduğu gibi denedin mi ?

- Buna rağmen farklı mı geliyor. O zaman örnek bir EXE dosya koy oraya mesela bu minik kodu bir proje haline dönüştürüp exe kısmını server'e koy, oradan bir normal FTP programı ile bir de programının yardımıyla çek. Her iki EXE'yi de Rapidshare vs. bir yere koy. Çekip inceleyelim.

- Sanki gönderdiğin EXE ile almaya çalıştığın farklı gibi geliyor.. Yani iki farklı konumdaki iki farklı EXE dosyaya erişim yapıyorsun anlamında...

- EK olarak server'in Cache olayını irdele..Nedir de değildiri... Bir ker lumsuz Upload işlemi yaşamızsan, server bu olumsuz olanı yineliyor olabilir. Başka bir EXE dosyasını gönder aynı yere boyut değişip değişmediğini irdele
Resim
Resim ....Resim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Virüs veya başka bir eklenti ile boyut değişikliği olmasın :?:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Salih
Üye
Mesajlar: 250
Kayıt: 11 Mar 2004 05:36

Mesaj gönderen Salih »

rsimsek yazdı:Virüs veya başka bir eklenti ile boyut değişikliği olmasın :?:
Eveettt.. rsimsek haklı çıktı... Demek ki neymiş, çocuğun bilgisayarında virüs varmış.... :shock: İşyerinden notebook umu getirip onunla denedim şimdi, herşey normale döndü.....

mrmarman, Çok özür dilerim, seni de boşuna uğraştırdım hocam :(
rsimsek ve mrmarman: çok teşekkürler.
Sevgi, Saygı.....
Cevapla