estrazzjoni ZIP bil-bar-progress

Frar 13, 2009 mill AcidRaZor · Leave a Comment
Iffajljati taħt: . NET , Programmazzjoni 101

Bl-użu SharpZipLib ICSharpCode's, I kick off proċess ħaddiem sfond (raden dak I ġew playing madwar il, lol) u estratt fajls ZIP. Jintuża flimkien ma 'tiegħi Downloader, isir pjuttost nifty jekk I jistgħu jgħidu hekk myself!

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 ByVal text As String , ByVal percent As Integer ) Delegate Sub zipCompleteSafe ( ByVal cancelled As Boolean ) Dim extractDir As String = Application. StartupPath & "\extracted\" Private Sub bckZip_DoWork ( ByVal sender As System. Object , ByVal e As System. ComponentModel . DoWorkEventArgs ) Handles bckZip. DoWork Dim zipFilename As String = Me . whereToSave If File . Exists ( zipFilename ) Then Dim safedelegate As New zipProgressSafe ( AddressOf zipProgress ) Me . Invoke ( safedelegate, "Start Unzipping Process..." , 0 ) 'Invoke the TreadsafeDelegate Dim Redo As Integer = 1 Dim MyZipInputStream As ZipInputStream Dim MyFileStream As FileStream MyZipInputStream = New ZipInputStream ( New FileStream ( zipFilename, FileMode. Open , FileAccess. Read ) ) Dim MyZipEntry As ZipEntry = MyZipInputStream. GetNextEntry Directory . CreateDirectory ( extractDir ) Dim nRead, total As Integer Dim percent As Integer While Not MyZipEntry Is Nothing Me . Invoke ( safedelegate, "Calculating ZIP File Size..." , 0 ) total += 1 MyZipEntry = MyZipInputStream. GetNextEntry End While Me . Invoke ( safedelegate, "Resetting ZIP File..." , 0 ) MyZipInputStream = New ZipInputStream ( New FileStream ( zipFilename, FileMode. Open , FileAccess. Read ) ) MyZipEntry = MyZipInputStream. GetNextEntry Me . Invoke ( safedelegate, "Start Unzipping file 1 of " & total. ToString , 0 ) While Not MyZipEntry Is Nothing If bckZip. CancellationPending Then 'If user abort download Exit While End If If ( MyZipEntry. IsDirectory ) Then Directory . CreateDirectory ( extractDir & "\" & MyZipEntry. Name ) Else If Not Directory . Exists ( extractDir & "\" & Path. GetDirectoryName ( MyZipEntry. Name ) ) Then Directory . CreateDirectory ( extractDir & "\" & Path. GetDirectoryName ( MyZipEntry. Name ) ) End If MyFileStream = New FileStream ( extractDir & "\" & MyZipEntry. Name , FileMode. OpenOrCreate , FileAccess. Write ) Dim count As Integer Dim buffer ( 4096 ) As Byte count = MyZipInputStream. Read ( buffer, 0 , 4096 ) While count > 0 MyFileStream. Write ( buffer, 0 , count ) count = MyZipInputStream. Read ( buffer, 0 , 4096 ) End While MyFileStream. Close ( ) End If nRead += 1 percent = ( ( nRead / total ) * 100 ) Me . Invoke ( safedelegate, "Start Unzipping file " & nRead. ToString & " of " & total. ToString , percent ) Try MyZipEntry = MyZipInputStream. GetNextEntry Catch ex As Exception MyZipEntry = Nothing End Try End While If Not ( MyZipInputStream Is Nothing ) Then MyZipInputStream. Close ( ) If Not ( MyFileStream Is Nothing ) Then MyFileStream. Close ( ) If Me . bckZip . CancellationPending Then Dim cancelDelegate As New zipCompleteSafe ( AddressOf zipComplete ) Me . Invoke ( cancelDelegate, True ) Exit Sub End If Dim completeDelegate As New zipCompleteSafe ( AddressOf zipComplete ) Me . Invoke ( completeDelegate, False ) Else Dim cancelDelegate As New zipCompleteSafe ( AddressOf zipComplete ) Me . Invoke ( cancelDelegate, True ) Exit Sub End If End Sub Public Sub zipProgress ( ByVal text As String , ByVal percent As Integer ) Me . Label4 . Text = text Me . ProgressBar1 . Value = percent End Sub Public Sub zipComplete ( ByVal cancelled As Boolean ) If cancelled Then Me . Label4 . Text = "Cancelled" Else Me . Label4 . Text = "Successfully Unzipped" End If Me . ProgressBar1 . Value = 0 End Sub Delegat zipProgressSafe Sub (test ByVal Kif String, mija ByVal Kif Integer) Delegat zipCompleteSafe Sotto (ByVal kanċellati Kif Boolean) extractDir DIM Kif String = Applikazzjoni. StartupPath & "\ estratt \" Sub bckZip_DoWork Privat (mittent ByVal Fir-Sistema. Għan, e ByVal Kif Sistema. ComponentModel. DoWorkEventArgs) bckZip Mankijiet. DoWork zipFilename DIM Kif = Me. whereToSave String Jekk Fajl. teżisti (zipFilename) DIM safedelegate Imbagħad Kif zipProgressSafe Ġdid (zipProgress AddressOf) Me. Invoke (safedelegate, "Bidu Unzipping Proċess ..." , 0) "'tinvoka l-jerġa DIM TreadsafeDelegate Kif Integer = 1 DIM MyZipInputStream Kif ZipInputStream DIM MyFileStream Kif = MyZipInputStream ZipInputStream Ġodda FileStream (New FileStream (zipFilename, FileMode. Miftuħ, FileAccess. Aqra)) DIM MyZipEntry Kif ZipEntry = MyZipInputStream Direttorju GetNextEntry.. CreateDirectory (extractDir) DIM nRead, totali Kif Integer mija DIM Kif Integer Filwaqt Mhux MyZipEntry Huwa Xejn Me. Invoke (safedelegate, "Il-kalkolu ZIP Daqs fajl ...", 0) + totali = 1 MyZipEntry = MyZipInputStream. GetNextEntry Tmiem Filwaqt Me. jinvokaw (safedelegate, "resetting ZIP File ...", 0) = MyZipInputStream ġodda ZipInputStream (New FileStream (zipFilename, FileMode. Miftuħ, FileAccess. Aqra)) MyZipEntry = MyZipInputStream. GetNextEntry Me. Invoke (safedelegate, "Unzipping Bidu fajl 1 ta '"& totali. ToString, 0) Filwaqt Mhux MyZipEntry Huwa Xejn Jekk bckZip. CancellationPending Imbagħad" Jekk abort utent tniżżel Ħruġ Filwaqt Tmiem Jekk Jekk (MyZipEntry. IsDirectory) Imbagħad Direttorju. CreateDirectory (extractDir & "\" & MyZipEntry. Isem) Else Jekk Mhux Direttorju. jeżisti (extractDir & "\" & Path. GetDirectoryName (Isem MyZipEntry.)) Imbagħad Direttorju. CreateDirectory (extractDir & "\" & Path. GetDirectoryName (Isem MyZipEntry.)) Tmiem Jekk MyFileStream = ġodda FileStream (extractDir & "\" & MyZipEntry. Isem, FileMode. OpenOrCreate, FileAccess. Ikteb) DIM għadd Kif Integer buffer DIM (4096) Fir-għadd ta 'Byte = MyZipInputStream. Aqra (buffer, 0, 4,096) Filwaqt li għadd> 0 MyFileStream. Ikteb (buffer, 0 ,) jgħodd għadd = MyZipInputStream. Aqra (buffer, 0, 4,096) Tmiem Filwaqt MyFileStream. Agħlaq () Tmiem Jekk + nRead = 1 fil-mija = ((nRead / total) * 100) Me. Invoke (safedelegate, "fajl Unzipping Bidu" & nRead. ToString & "ta '" & totali. ToString, fil-mija) Ipprova MyZipEntry = MyZipInputStream. Qabda GetNextEntry ex Kif Eċċezzjoni MyZipEntry = Xejn Tmiem Ipprova Tmiem Filwaqt Jekk Mhux (MyZipInputStream Huwa Xejn) Imbagħad MyZipInputStream. Agħlaq () Jekk Mhux (MyFileStream Huwa Xejn) Imbagħad MyFileStream. Agħlaq () Jekk Me. bckZip. CancellationPending Imbagħad cancelDelegate DIM Kif zipCompleteSafe Ġdid (AddressOf zipComplete) Me. Invoke (cancelDelegate, Veru) Ħruġ Sotto Tmiem Jekk completeDelegate DIM Kif zipCompleteSafe Ġdid (AddressOf zipComplete) Me. Invoke (completeDelegate , Foloz) DIM cancelDelegate Else Kif zipCompleteSafe Ġdid (AddressOf zipComplete) Me. Invoke (cancelDelegate, Veru) Ħruġ Sotto Tmiem Jekk Tmiem Sub Pubblika zipProgress Sub (test ByVal Kif, ByVal Fir-mija Integer) Me. Label4 String. Test = test Me. = il-valur fil-mija Tmiem Sub Pubblika Sub zipComplete (ByVal kanċellati Kif Boolean) Jekk kanċellati Imbagħad Me. Label4.. Test = "Imħassra" Else Me. Label4 ProgressBar1. Test = "għaddew unzipped" Tmiem Jekk Me. ProgressBar1. Valur = 0 Tmiem Sub 

Download File kalkolu tal-veloċità u l-progress Sfond Ħaddiem & progress bar

Frar 13, 2009 mill AcidRaZor · Leave a Comment
Iffajljati taħt: . NET , Programmazzjoni 101

Hawn xi kodiċi li ser tagħmel użu mill VB.NET 's-klassi Backgroundworker u jibdew talba web biex tniżżel fajl. Hija se jikkalkolaw il-veloċità tal-fajl kif ukoll jindikaw huwa l-progress fuq progress bar. Kollha filwaqt li tinżamm il-Formola ewlenin disponibbli.

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 'Where the program save the file Delegate Sub ChangeTextsSafe ( ByVal length As Long , ByVal position As Integer , ByVal percent As Integer , ByVal speed As Double ) Delegate Sub DownloadCompleteSafe ( ByVal cancelled As Boolean ) Public Sub DownloadComplete ( ByVal cancelled As Boolean ) Me . txtFileName . Enabled = True Me . btnDownload . Enabled = True Me . btnCancel . Enabled = False If cancelled Then Me . Label4 . Text = "Cancelled" 'MessageBox.Show("Download aborted", "Aborted", MessageBoxButtons.OK, MessageBoxIcon.Information) Else Me . Label4 . Text = "Successfully downloaded" 'MessageBox.Show("Successfully downloaded!", "All OK", MessageBoxButtons.OK, MessageBoxIcon.Information) End If Me . ProgressBar1 . Value = 0 Me . Label5 . Text = "Downloading: " Me . Label6 . Text = "Save to: " Me . Label3 . Text = "File size: " Me . Label2 . Text = "Download speed: " Me . Label4 . Text = "" End Sub Public Sub ChangeTexts ( ByVal length As Long , ByVal position As Integer , ByVal percent As Integer , ByVal speed As Double ) Me . Label3 . Text = "File size: " & Math. Round ( ( length / 1024 ) , 2 ) & " KB" Me . Label5 . Text = "Downloading: " & Me . txtFileName . Text Me . Label4 . Text = "Downloaded " & Math. Round ( ( position / 1024 ) , 2 ) & " KB of " & Math. Round ( ( length / 1024 ) , 2 ) & "KB (" & Me . ProgressBar1 . Value & "%)" If speed = - 1 Then Me . Label2 . Text = "Download speed: calculating..." Else Me . Label2 . Text = "Download speed: " & Math. Round ( ( speed / 1024 ) , 2 ) & " KB/s" End If Me . ProgressBar1 . Value = percent End Sub Private Sub btnDownload_Click ( ByVal sender As System. Object , ByVal e As System. EventArgs ) Handles btnDownload. Click If Me . txtFileName . Text <> "" AndAlso Me . txtFileName . Text . StartsWith ( "http://" ) Then Me . SaveFileDialog1 . FileName = Me . txtFileName . Text . Split ( "/" c ) ( Me . txtFileName . Text . Split ( "/" c ) . Length - 1 ) If Me . SaveFileDialog1 . ShowDialog = Windows. Forms . DialogResult . OK Then Me . whereToSave = Me . SaveFileDialog1 . FileName Me . SaveFileDialog1 . FileName = "" Me . Label6 . Text = "Save to: " & Me . whereToSave Me . txtFileName . Enabled = False Me . btnDownload . Enabled = False Me . btnCancel . Enabled = True Me . BackgroundWorker1 . RunWorkerAsync ( ) 'Start download End If Else MessageBox. Show ( "Please insert valid URL for download" , "Warning" , MessageBoxButtons. OK , MessageBoxIcon. Warning ) End If End Sub Private Sub btnCancel_Click ( ByVal sender As System. Object , ByVal e As System. EventArgs ) Handles btnCancel. Click Me . BackgroundWorker1 . CancelAsync ( ) 'Send cancel request Try Me . bckZip . CancelAsync ( ) Catch ex As Exception 'Do Nothing End Try End Sub Private Sub BackgroundWorker1_DoWork ( ByVal sender As System. Object , ByVal e As System. ComponentModel . DoWorkEventArgs ) Handles BackgroundWorker1. DoWork 'Creating the request and getting the response Dim theResponse As HttpWebResponse Dim theRequest As HttpWebRequest Try 'Checks if the file exist theRequest = WebRequest. Create ( Me . txtFileName . Text ) theResponse = theRequest. GetResponse theRequest. Timeout = 10000000 Catch ex As Exception MessageBox. Show ( "An error occurred while downloading file. Possibe causes:" & ControlChars. CrLf & _ "1) File doesn't exist" & ControlChars. CrLf & _ "2) Remote server error" , "Error" , MessageBoxButtons. OK , MessageBoxIcon. Error ) Dim cancelDelegate As New DownloadCompleteSafe ( AddressOf DownloadComplete ) Me . Invoke ( cancelDelegate, True ) Exit Sub End Try Dim length As Long = theResponse. ContentLength 'Size of the response (in bytes) Dim safedelegate As New ChangeTextsSafe ( AddressOf ChangeTexts ) Me . Invoke ( safedelegate, length, 0 , 0 , 0 ) 'Invoke the TreadsafeDelegate Dim writeStream As New IO. FileStream ( Me . whereToSave , IO. FileMode . Create ) 'Replacement for Stream.Position (webResponse stream doesn't support seek) Dim nRead As Integer 'To calculate the download speed Dim speedtimer As New Stopwatch Dim currentspeed As Double = - 1 Dim readings As Integer = 0 Do If BackgroundWorker1. CancellationPending Then 'If user abort download Exit Do End If speedtimer. Start ( ) Dim readBytes ( 4096 ) As Byte Dim bytesread As Integer = theResponse. GetResponseStream . Read ( readBytes, 0 , 4096 ) nRead += bytesread Dim percent As Integer = ( nRead / length ) * 100 Me . Invoke ( safedelegate, length, nRead, percent, currentspeed ) If bytesread = 0 Then Exit Do writeStream. Write ( readBytes, 0 , bytesread ) speedtimer. Stop ( ) readings += 1 If readings > = 5 Then 'For increase precision, the speed it's calculated only every five cicles currentspeed = 20480 / ( speedtimer. ElapsedMilliseconds / 1000 ) speedtimer. Reset ( ) readings = 0 End If Loop 'Close the streams theResponse. GetResponseStream . Close ( ) writeStream. Close ( ) If Me . BackgroundWorker1 . CancellationPending Then IO. File . Delete ( Me . whereToSave ) Dim cancelDelegate As New DownloadCompleteSafe ( AddressOf DownloadComplete ) Me . Invoke ( cancelDelegate, True ) Exit Sub End If Dim completeDelegate As New DownloadCompleteSafe ( AddressOf DownloadComplete ) Me . Invoke ( completeDelegate, False ) End Sub whereToSave DIM Kif String "Fejn il-programm ħlief il-fajl Delegat Sotto ChangeTextsSafe (tul ByVal Kif ByVal pożizzjoni twal, kif ByVal mija Integer, Kif Integer, veloċità ByVal Kif Double) Delegat Sotto DownloadCompleteSafe (ByVal kanċellati Kif Boolean) Pubblika Sub DownloadComplete (ByVal kanċellati Kif Boolean) Me. txtFileName. Iffaċilitati = True Me. btnDownload. Iffaċilitati = True Me. btnCancel. Iffaċilitati = Foloz Jekk kanċellati Imbagħad Me. Label4. Test = "Imħassra" "MessageBox.Show (" Download "abortiti," abortiti ", , MessageBoxIcon.Information) Else Me. Label4 MessageBoxButtons.OK. Test = "għaddew jitniżżel" "MessageBox.Show (" għaddew jitniżżel! "," kollha OK ", MessageBoxButtons.OK, MessageBoxIcon.Information) Tmiem Jekk Me. ProgressBar1. Valur = 0 Me. Label5. Test = "Tniżżil:" Me. Label6. Test = "Salv għal:" Me. Label3. Test = "daqs fajl:" Me. Label2. Test = "veloċità Download:" Me. Label4. Test "Tmiem Sub Pubblika Sub ChangeTexts (ByVal Kif tul fit-pożizzjoni Kif, ByVal Integer mija Kif, ByVal Integer, ByVal Kif veloċità Double) Me. Label3 =. Test =" daqs fajl: "& Matematika. Round ((tul / 1024) , 2) & "KB" Me. Label5. Test = "Tniżżil:" & Me. txtFileName. Me. Label4 Test. Test = "trasferiment" & Matematika. Round ((pożizzjoni / 1024), 2) & "KB ta '" & Matematika. Round ((tul / 1024), 2) & "KB (" & Me. ProgressBar1. Valur & "%)" Jekk veloċità = - 1 Imbagħad Me. Label2. Test = "veloċità Download: kalkolu ..." inkella Me. Label2. Test = "veloċità Download:" & Matematika. Round ((/ veloċità 1024), 2) & "KB / i" Tmiem Jekk Me. ProgressBar1. Valur = perċentwali Tmiem Sub Privat btnDownload_Click Sub (mittent ByVal Fir-Sistema . Għan, e ByVal Fir Sistema. EventArgs) Mankijiet btnDownload. Ikklikkja Jekk Me. txtFileName. Test <> "" AndAlso Me. txtFileName. Test. StartsWith ("http://") Imbagħad Me. SaveFileDialog1. isem tal-file = Me. txtFileName . Test. Split ("/" c) (Me. txtFileName. Test. Split ("/" c). Tul - 1) Jekk Me. SaveFileDialog1. ShowDialog = Windows. Formoli. DialogResult. OK Imbagħad Me. whereToSave = Me. SaveFileDialog1. isem tal-file Me. SaveFileDialog1. isem tal-file = "Me. Label6. Test =" Salv għal: "& Me. whereToSave Me. txtFileName. Iffaċilitati = Foloz Me. btnDownload. Iffaċilitati = Foloz Me. btnCancel. Iffaċilitati = True Me. BackgroundWorker1 . RunWorkerAsync () "Bidu tniżżel Tmiem Jekk Else MessageBox. Uri (" Jekk jogħġbok daħħal URL validu għal "download," Twissija ", MessageBoxButtons. OK, MessageBoxIcon. Twissija) Tmiem Jekk Tmiem Sub Privat btnCancel_Click Sub (mittent ByVal Fir-Sistema. Għan, e ByVal Fir Sistema. EventArgs) Mankijiet btnCancel. Ikklikkja Me. BackgroundWorker1. CancelAsync () "Ibgħat tħassar it-talba Ipprova Me. bckZip. CancelAsync () Qabda ex Kif Eċċezzjoni" L Tmiem Xejn Ipprova Tmiem Sub Privat Sub BackgroundWorker1_DoWork (mittent ByVal Fir-Sistema. Għan, e ByVal Fir-Sistema. ComponentModel. DoWorkEventArgs) Mankijiet BackgroundWorker1. DoWork "Noħolqu t-talba u jkollna l-DIM theResponse rispons Kif HttpWebResponse theRequest DIM Kif HttpWebRequest Ipprova" Kontrolli jekk il-fajl jeżistu theRequest = WebRequest. Oħloq (Me. txtFileName. Test) = theResponse theRequest. theRequest GetResponse. timeout = 10000000 Qabda Bħala ex Eċċezzjoni MessageBox. Uri ("Ġara żball waqt tniżżil fajl. Possibe kawżi:" & ControlChars. CrLf & _ "1) Fajl ma jeżistix" & ControlChars. CrLf & _ "2) bogħod server żball", "Żball", MessageBoxButtons. OK, MessageBoxIcon. Error) cancelDelegate DIM Kif ġodda DownloadCompleteSafe (AddressOf DownloadComplete) Me. Invoke (cancelDelegate, Veru) Ħruġ Sotto Tmiem Ipprova tul DIM Kif Twil = theResponse. ContentLength "Daqs ta 'l-rispons (fil-bytes) safedelegate DIM Kif ChangeTextsSafe (AddressOf ChangeTexts) Me. Invoke (safedelegate, it-tul, 0, 0, 0)"' tinvoka l-TreadsafeDelegate Kif writeStream DIM ġodda IO. FileStream (Me. whereToSave ġodda, IO. . Oħloq) "Sostituzzjoni FileMode għall Stream.Position (fluss webResponse ma tappoġġjax ifittxu) DIM nRead Kif Integer" Sabiex jiġi kkalkulat l-download veloċità speedtimer DIM Kif ġodda Stopwatch DIM currentspeed Kif Double = - qari DIM 1 Kif Integer = 0 Do Jekk BackgroundWorker1 . CancellationPending Imbagħad "Jekk abort Ħruġ tniżżel utent Do Tmiem Jekk speedtimer. Bidu () DIM readBytes (4096) Fir-Byte DIM bytesread Kif Integer = theResponse. GetResponseStream. Aqra (readBytes, 0, 4,096) + nRead = bytesread mija DIM Kif Integer = (/ nRead tul) * 100 Me. Invoke (safedelegate, it-tul, nRead, mija, currentspeed) Jekk bytesread = 0 Imbagħad Ħruġ Do writeStream. Ikteb (readBytes, 0, bytesread) speedtimer. Stop () + = 1 qari Jekk qari> = 5 Imbagħad "Għall żieda ta 'preċiżjoni, l-veloċità huwa kkalkolat biss kull cicles ħames currentspeed = 20,480 / (speedtimer. ElapsedMilliseconds / 1000) speedtimer. Irrisettja () = 0 qari Tmiem Jekk" Agħlaq il-flussi ta' ingassa theResponse. GetResponseStream. Agħlaq () writeStream . Agħlaq () Jekk Me. BackgroundWorker1. CancellationPending Imbagħad IO. Fajl. Ħassar (Me. whereToSave) DIM cancelDelegate Kif ġodda DownloadCompleteSafe (AddressOf DownloadComplete) Me. Invoke (cancelDelegate, Veru) Ħruġ Sotto Tmiem Jekk completeDelegate DIM Kif ġodda DownloadCompleteSafe (AddressOf DownloadComplete ) Me. Invoke (completeDelegate, Foloz) Tmiem Sub 

SEO Powered by SEO Platinum mill Techblissonline