[MAKALE] - Basit bir dosya kopyalama programı yapımı

  • Konuyu başlatan Konuyu başlatan eSa
  • Başlangıç tarihi Başlangıç tarihi

eSa

Dekan
Katılım
5 Kasım 2011
Mesajlar
9,782
Reaksiyon puanı
352
Puanları
263
Bu makalemizde belirlediğimiz klasördeki dosya veya dosyalarımızı, hedef klasöre nasıl kopyalanacağını göreceğiz. Boş bir proje formu açarak araç kutusundaki DriveListBox, DirListBox ve FileListBoxkontrollerini de kullanarak, örneğimizdeki gibi bir ekran oluşturuyoruz.


dosya1.png



dosya2.png


kaynak_file olarak adlandırdığımız kontrolümüz üzerinde çoklu seçim yapabilmemiz için; kontrolun özelliklerinden MultiSelect = 2 - Extended olarak ayarlıyoruz.

Kodlama esnasında okunabilirliği arttırmak için, kaynak tarafında bulunan kontrollerimizin isimlerini
kaynak_drive ,kaynak_dir ve kaynak_file olarak, sağ taraftaki kontrollerimizin isimlerini de; hedef_drive, hedef_dir ve hedef_file olarak değiştirdim.


Bu kontrollerimizin birbirleri ile etkileşimli çalışmaları için Change olaylarına ufak eklemeler yapıyoruz. Böylece klasör listesi değiştiği zaman, dosya listesi de bu klasörün içini göstersin.


Kod:
[COLOR=#0000ff]Private Sub[/COLOR] kaynak_Drive_Change()
    kaynak_Dir.Path = kaynak_Drive.Drive
[COLOR=#0000ff]End Sub[/COLOR]


[COLOR=#0000ff]Private Sub[/COLOR] kaynak_Dir_Change()
    kaynak_File.Path = kaynak_Dir.Path
[COLOR=#0000ff]End Sub[/COLOR]


Benzer işlemi hedef klasörümüzü gösteren kontroller için de uygulamayı unutmuyoruz.

Gelelim dosya kopyalama işlemine. Tüm dosyaları kopyala ve seçilenleri kopyala işlemi, neredeyse aynı olduğundan bu işlem için parametre gönderebileceğimiz ufak bir sub prosedür yazıyoruz.


Kod:
[COLOR=#0000ff]Private Sub[/COLOR] dosya_kopyala([COLOR=#0000ff]ByVal[/COLOR] secilenler [COLOR=#0000ff]As Boolean[/COLOR])
    
    [COLOR=#0000ff]For[/COLOR] i = 0 To kaynak_File.ListCount - 1
        
        [COLOR=#0000ff]If[/COLOR] secilenler [COLOR=#0000ff]Then[/COLOR]
            [COLOR=#0000ff]If [/COLOR]kaynak_File.Selected(i) [COLOR=#0000ff]Then GoSub[/COLOR] kopyala
        [COLOR=#0000ff]Else[/COLOR]
            [COLOR=#0000ff]GoSub[/COLOR] kopyala
        [COLOR=#0000ff]End If[/COLOR]
    
    [COLOR=#0000ff]Next [/COLOR]i
    
    hedef_File.Refresh
    MsgBox "Kopyalama işlemi tamamlandı"


[COLOR=#0000ff]Exit Sub[/COLOR]
kopyala:
    FileCopy kaynak_File.Path & "\" & kaynak_File.List(i), hedef_File.Path & "\" & kaynak_File.List(i)
[COLOR=#0000ff]Return[/COLOR]


[COLOR=#0000ff]End Sub[/COLOR]




Kodları birçok yere kopyalayıp ufak değişiklikler yapmaktansa, bu tip işlemler için bir fonksiyon veya sub oluşturmak; kod yazmanızı hızlandıracağı gibi, programınıza ileriki bir tarihte geriye dönüp baktığınızda okumanızı da kolaylaştıracaktır.



Son olarak Form1 içinde yazılan kodların tamamını buraya ekliyorum,


Kod:
[COLOR=#0000ff]Private Sub[/COLOR] Check1_Click()
    [COLOR=#0000ff]If [/COLOR]Check1.Value = Checked [COLOR=#0000ff]Then[/COLOR]
        kaynak_File.Pattern = "*.txt"
    [COLOR=#0000ff]Else[/COLOR]
        kaynak_File.Pattern = "*.*"
    [COLOR=#0000ff]End If[/COLOR]
[COLOR=#0000ff]End Sub[/COLOR]


[COLOR=#0000FF]Private Sub[/COLOR] dosya_kopyala([COLOR=#0000FF]ByVal[/COLOR] secilenler [COLOR=#0000FF]As Boolean[/COLOR])
    
    [COLOR=#0000FF]For[/COLOR] i = 0 To kaynak_File.ListCount - 1
        
        [COLOR=#0000FF]If[/COLOR] secilenler [COLOR=#0000FF]Then[/COLOR]
            [COLOR=#0000FF]If [/COLOR]kaynak_File.Selected(i) [COLOR=#0000FF]Then GoSub[/COLOR] kopyala
        [COLOR=#0000FF]Else[/COLOR]
            [COLOR=#0000FF]GoSub[/COLOR] kopyala
        [COLOR=#0000FF]End If[/COLOR]
    
    [COLOR=#0000FF]Next [/COLOR]i
    
    hedef_File.Refresh
    MsgBox "Kopyalama işlemi tamamlandı"


[COLOR=#0000FF]Exit Sub[/COLOR]
kopyala:
    FileCopy kaynak_File.Path & "\" & kaynak_File.List(i), hedef_File.Path & "\" & kaynak_File.List(i)
[COLOR=#0000FF]Return[/COLOR]


[COLOR=#0000FF]End Sub[/COLOR]



[COLOR=#0000ff]Private Sub [/COLOR]cmd_kopyala_hepsi_Click()
    dosya_kopyala [COLOR=#0000ff]False[/COLOR]
[COLOR=#0000ff]End Sub[/COLOR]


[COLOR=#0000ff]Private Sub[/COLOR] cmd_kopyala_secilen_Click()
    dosya_kopyala [COLOR=#0000ff]True[/COLOR]
[COLOR=#0000ff]End Sub[/COLOR]


[COLOR=#0000ff]Private Sub[/COLOR] Form_Load()
    kaynak_Dir.Path = "c:\test1"
    hedef_Dir.Path = "c:\test2"
[COLOR=#0000ff]End Sub[/COLOR]


[COLOR=#0000ff]Private Sub[/COLOR] hedef_Dir_Change()
    hedef_File.Path = hedef_Dir.Path
[COLOR=#0000ff]End Sub[/COLOR]


[COLOR=#0000ff]Private Sub[/COLOR] hedef_Drive_Change()
    hedef_Dir.Path = hedef_Drive.Drive
[COLOR=#0000ff]End Sub[/COLOR]


[COLOR=#0000ff]Private Sub[/COLOR] kaynak_Dir_Change()
    kaynak_File.Path = kaynak_Dir.Path
[COLOR=#0000ff]End Sub[/COLOR]


[COLOR=#0000ff]Private Sub[/COLOR] kaynak_Drive_Change()
    kaynak_Dir.Path = kaynak_Drive.Drive
[COLOR=#0000ff]End Sub[/COLOR]


İşte sonuç;


dosya3.png




Bu makalede kullanılan programlar : Visual Basic 6.0


Bir sonraki makalede görüşmek üzere..


eSa
 
Üst