Dosya kopyalama (Yapay Progressbar)
#1
Bu da çeşit olsun...

[Resim: attachment.php?aid=8690]

Visual Basic
  1. Private Sub baslat_Click()
  2. Dim buffer() As Byte
  3.  
  4. 'Tek seferde kaç byte okunacağı sabitleri.
  5. 'Bunları daha da değiştirerek kopya hızını artırabilir
  6. 'ya da azaltabilirsiniz...
  7. Const buff1 = 1048576 '1 MB / per
  8. Const buff2 = 524288 '0,5 MB / per
  9. Const buff3 = 262144 '0,25 MB / per
  10. Const buff4 = 131072 '0,125 MB / per >> Bu Örnekte kullanılan
  11. Const buff5 = 65536 '0,0625 MB / per
  12.  
  13. 'Diskten (I/O) her seferinde kaç byte okunacak...
  14. ReDim buffer(1 To buff4)
  15.  
  16. 'İlave işaret "\"
  17. hedef_dizin = IIf(Right(hedef_dizin, 1) = "\", hedef_dizin, hedef_dizin & "\")
  18.  
  19. 'Hedefte aynı dosya varsa sor...
  20. If Dir(hedef_dizin & Dir(kaynak_dosya)) <> "" Then
  21. If MsgBox("Hedefte bu dosya mevcut; üzerine yazılsın mı?", _
  22. vbExclamation + vbYesNo) = vbYes Then _
  23. Kill hedef_dizin & Dir(kaynak_dosya)
  24. End If
  25.  
  26. 'Kaynağı (1) "okumak" için aç; hedefi (2) "yazmak" için aç...
  27. Open kaynak_dosya For Binary As #1
  28. Open hedef_dizin & Dir(kaynak_dosya) For Binary As #2
  29.  
  30. 'Durumu ölçebilmek için tam genişliği tut...
  31. memProgressWidth = progress_ust.Width
  32.  
  33. 'Çakma progressbar takımını hazırla... :-))
  34. progress_ust.Width = 0
  35. progress_ust.Visible = True
  36. progress_yuzde.Visible = True
  37.  
  38. 'Tek seferde kaç byte okunacağını yukarıda belirledik,
  39. 'buna göre döngü kaç kez tekrar edeceğini hesapla...
  40. donus = Int(LOF(1) / buff4)
  41.  
  42. For i = 1 To donus
  43. DoEvents 'çakma progressbarın eş zamanlı güncelliği için gerekli.
  44. per = i / (donus + 1) 'Yüzdeyi hesapla...
  45. Get #1, , buffer 'oku...
  46. Put #2, , buffer 've yaz...
  47.  
  48. 'Çakma progressbarın genişliğini ayarla...
  49. progress_ust.Width = per * memProgressWidth
  50.  
  51. 'Yüzfeyi de göster...
  52. progress_yuzde.Caption = "% " & Int(per * 100)
  53. Next
  54.  
  55. '---------------------------------------------------------------------'
  56. 'Dönüş sayısı tam olarak byte okumayı karşılayamaz. -ki, hep öyledir-
  57. 'Bir tur fazla dönse buffer fazla geleceğinden kalan byte kadar
  58. 'buffer ayarlıyoruz.
  59. 'En son kalan byte kırıntılarını aşağıdaki gibi okuyoruz...
  60. If (LOF(1) - LOF(2)) > 0 Then
  61. 'Okunmamış kalan byte kadar buffer ayarla...
  62. ReDim buffer(1 To (LOF(1) - LOF(2)))
  63.  
  64. Get #1, , buffer 'oku...
  65. Put #2, , buffer 've yaz...
  66.  
  67. 'Çakma progressbarın genişliğini ayarla...
  68. progress_ust.Width = memProgressWidth
  69.  
  70. 'Yüzfeyi de göster...
  71. progress_yuzde.Caption = "% 100"
  72. End If
  73. '----------------------------------------------------------------------'
  74.  
  75. Close #1
  76. Close #2
  77. End Sub
  78.  
  79. Private Sub hedef_gozat_Click()
  80. Set gozat = CreateObject("shell.application"). _
  81. browseforfolder(0, "Hedef klasörü seçin", 0)
  82.  
  83. If Not gozat Is Nothing Then hedef_dizin.Value = gozat.self.Path
  84. End Sub
  85.  
  86. Private Sub kaynak_gozat_Click()
  87. With Application.FileDialog(msoFileDialogFilePicker)
  88. .AllowMultiSelect = False
  89. .ButtonName = "Bir dosya seçin!"
  90. .Filters.Add "Tüm Dosyalar (*.*)", "*.*", 1
  91. .InitialView = msoFileDialogViewList
  92. .Title = "Kopyalanacak dosyayı seçin!"
  93. dosya_secili_mi = .Show
  94.  
  95. If Not dosya_secili_mi = 0 Then
  96. kaynak_dosya.Value = .SelectedItems(1)
  97. End If
  98.  
  99. End With
  100. End Sub




Eklenti Dosyaları
.jpg   copy.JPG (Boyut: 20,01 KB / İndirilme: 538)
.rar   FileCopy_test.rar (Boyut: 20,2 KB / İndirilme: 247)



  Alıntı
Bu mesajı beğenenler:
#2
Ornek icin cok tesekkurler. Ancak referans hatasi aliyorum. Hangi referanslarin secilmesi gerekli? (Windows Shell Library gibi)



  Alıntı
Bu mesajı beğenenler:
#3
Uyarı için teşekkürler. Diyalog için gereklidir.

Referans şudur.
"Micosoft Office 1? Object Libarary"

Çalışma anında referans eklemeyi alışkanlık edinmek lazım bundan böyle. Smile



  Alıntı
Bu mesajı beğenenler:
#4
hocam bu işlemde kopyalanan dosyalarını boyutunu nasıl hesaplatabilir ve formda gösterebilirim



  Alıntı
Bu mesajı beğenenler:
#5
Zeki Bey çok güzel bir örnek olmuş, elinize sağlık paylaşım için teşekkürler...Vv



  Alıntı
Bu mesajı beğenenler:
#6
elinize sağlık çok güzel acaba klasör kopyalama yapılabilirmi ?



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Resim, Video, Müzik, Ms Offıce Belge, Dosya Isimlerini Düzenleme(arşivleme) dsezgin 5 1.153 18-11-2021, 14:31
Son Mesaj: onur_can
  Dosya Arşivlemek Için Kısa Bir Kod örneği hedefkaya 1 1.119 23-11-2019, 03:44
Son Mesaj: dsezgin
  FTP ye çoklu dosya gönderimi (upload) beab05 20 12.143 28-10-2019, 19:26
Son Mesaj: umits
  Meslek Liseleri Için Beceri Eğitimi Dosya Programı sefersanli 2 1.023 26-09-2019, 22:00
Son Mesaj: halily
  Dosya Arama Örneği Zeki Gürsoy 40 27.964 06-05-2018, 22:37
Son Mesaj: obaysal42
access-sql-12 Form Üzerinden Bir Dosyayı Farklı Klasöre Kopyalama Taruz 9 6.063 29-05-2014, 15:11
Son Mesaj: ali rıza özer
  Dosya taşıma beab05 2 3.440 29-05-2014, 14:18
Son Mesaj: sel306
  Progressbar Abdullah 15 7.669 20-04-2013, 14:31
Son Mesaj: beyazgulum

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi