indy FTP Klasör
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- DarkEternal
- Üye
- Mesajlar: 158
- Kayıt: 19 Eki 2005 11:00
indy FTP Klasör
indy FTP componentlerini kullanıyorum. Put ve Get ile dosya alıp veriyorum. Fakat klasör göndermek veya almak için hazır bir fonksiyonu var mı? Ben göremedim... Yoksa kod ile klasör içindeki dosyaları döngü ile mi göndermek gerekiyor?
Şimdiden teşekkürler...
Şimdiden teşekkürler...
kısa kısa yazılım...
http://TKorhan.blogspot.com/
http://TKorhan.blogspot.com/
Aynen tahmin ettiğin gibi...ilk önce uzak makinada createdir ile kopyalayacağın klasörü oluştur.Sonra localdeki klasör içindeki dosyaları sırasıylan yolla...tabiki dosya boyutu fazla ve çok dosya varsa işlem uzun sürecektir...dolayısıyla thread kullanmazsan işlem bitene kadar başka bir işlem yapamazsın...
Kod: Tümünü seç
for i := 0 to (ListBox2.Items.Count - 1) do
begin
try
dosyaadi := ExtractFileName(ListBox2.Items[i]);
begin
IdFTP1.TransferType:=ftbinary;
IdFTP1.put(ListBox2.Items.Strings[i],dosyaadi,true);
end;
except
Application.MessageBox('Dosyalar Gönderilemedi...','Uyarı',mb_ok+mb_iconwarning);
end;
end;
kolay gelsin...
procedure TForm1.FormCreate(Sender: TObject);
begin
showmessage('Dehanın %1 i ilham %99u terdir.');
end;
end.
begin
showmessage('Dehanın %1 i ilham %99u terdir.');
end;
end.
- DarkEternal
- Üye
- Mesajlar: 158
- Kayıt: 19 Eki 2005 11:00
Burada listbox taki dosyaları gönderiyorsun sanırım, ben bir klasörün transferini sormuştum...
kısa kısa yazılım...
http://TKorhan.blogspot.com/
http://TKorhan.blogspot.com/
klasör gönderilir mi bilemiyorum ama ben karsı tarafa bir klasör olusturup benim istediğim klasör içindeki dosyaları listboxa atarak döngü kurarak sırayla gonderdim...
Ama aklıma gelen belki rar olarak gonderebilirsin...
Ama aklıma gelen belki rar olarak gonderebilirsin...
procedure TForm1.FormCreate(Sender: TObject);
begin
showmessage('Dehanın %1 i ilham %99u terdir.');
end;
end.
begin
showmessage('Dehanın %1 i ilham %99u terdir.');
end;
end.
Şu Prosedürü bir incele
Kod: Tümünü seç
Var
Name{, Line}: String;
begin
if not IdFTP1.Connected then exit;
//Line := DirectoryListBox.Items[DirectoryListBox.ItemIndex];
Name := IdFTP1.DirectoryListing.Items[DirectoryListBox.ItemIndex].FileName;
if IdFTP1.DirectoryListing.Items[DirectoryListBox.ItemIndex].ItemType = ditDirectory then begin
// Change directory
SetFunctionButtons(false);
ChageDir(Name);
SetFunctionButtons(true);
end
else begin
try
SaveDialog1.FileName := Name;
if SaveDialog1.Execute then begin
SetFunctionButtons(false);
IdFTP1.TransferType := ftBinary;
BytesToTransfer := IdFTP1.Size(Name);
if FileExists(Name) then begin
case MessageDlg('File aready exists. Do you want to resume the download operation?',
mtConfirmation, mbYesNoCancel, 0) of
mrYes: begin
BytesToTransfer := BytesToTransfer - FileSizeByName(Name);
IdFTP1.Get(Name, SaveDialog1.FileName, false, true);
end;
mrNo: begin
IdFTP1.Get(Name, SaveDialog1.FileName, true);
end;
mrCancel: begin
exit;
end;
end;
end
else begin
IdFTP1.Get(Name, SaveDialog1.FileName, false);
end;
end;
finally
SetFunctionButtons(true);
end;
end;
end;
Bir kelimenin anlamını öğretsen bile yeter..



- DarkEternal
- Üye
- Mesajlar: 158
- Kayıt: 19 Eki 2005 11:00
İncelediğim kadarıyla bu kodda klasör işlemi için değil...
kısa kısa yazılım...
http://TKorhan.blogspot.com/
http://TKorhan.blogspot.com/
DarkEternal sen kodu anlamıyon arkadaş sana anahtar teslim vermiyor zaten. Bu işin yolu bu diyor...Sen ister listbox kullan ister Stringlist oluştur burdaki amaç kopyalanacak klasör içeriğini listbox veya benzeri bir listeye atıp döngü ile işlemi yaptırmak...belirtilen klasör içindeki dosyaları bulan bir fonksiyon bul klasör içindeki dosyaların dosya isimlerini listeye gönder sonra işlemi yap...
- DarkEternal
- Üye
- Mesajlar: 158
- Kayıt: 19 Eki 2005 11:00
Ben sorumda zaten hazır bir fonksiyonu var mı diye sordum. Eğer yoksa zaten yazıcam kodunu kendim. Klasörün içinde klasörde olabilir vs. bundan farklı bir yapısı olacak yani. Yine de teşekkkürler...
kısa kısa yazılım...
http://TKorhan.blogspot.com/
http://TKorhan.blogspot.com/
-
- Üye
- Mesajlar: 261
- Kayıt: 21 Tem 2006 04:59
- İletişim:
Re: indy FTP Klasör
selamlar darketernal arkadaşım... ben yazdığım program içinden veri tabanını kullanıcıların kendi hostinglerine yedeklmelerini sayğlayacak ilave kodlar üzerinde çalışıyorum bir türlü istediğimi gerçekleştiremedim. pc başında çok uzun süre kalamıyorum bel fıtığım var. yapacak iş basit bir işlem... yedeklme kısmında (daha evvel ayarlar formunda ftp bilgileri kaydeilmiş ve kontrol sağlanmış olduğunu varsayın) ftp ye yedekle menüsüne tıkladığında programın datasetini kapatacak veritabanını zipyelecek ve ftpye gönderecek. bu işlemi yaparken de ekrana bir form üzerinde gönderiliyor mesajı, progresbar ile bilgi verilecek,bittiğinde de bilgi mesajı verilip dataset nesnesi tekrar aktif hale gelecek. ben gönderme işlemi bir türlü beceremedim. bereciyorum ama her deediğim kod güvenlik duvarını aktive ediyor. delphinin içindeki örnek projeyi ekleyeceğim ancak onda da bir çok detay olduğu için istemiyorum. basite indirgenmiş olmalı kullanıcı detaylarla boğuşmamalı. malum beim portföyümdeki her kullanıcı profosyonel webmaster değil ftp ptogamlarını kullansınlar. ne önerirsiniz nasıl yapılablir?