Code:
Dim i
For i = 1 To 1000
If CMD.Filename <> "" Then Filename = CMD.Filename + (i) Else Filename = "c:\video.avi"
Ovo ti nish' ne valja... For petlja mora da ima i Next deo, a ti si ga izostavio... Pravilno bi bilo:
Code:
Dim i
For i = 1 To 1000
If CMD.Filename <> "" Then Filename = CMD.Filename + (i) Else Filename = "c:\video.avi"
Next i
Opet, ne mozhesh da dodajesh broj stringu, odnosno, deo CMD.Filename + (i) tje prouzrokovati type mismatch greshku... Pravilno bi bilo:
Code:
For i = 1 To 1000
If CMD.Filename <> "" Then Filename = CMD.Filename + CStr(i) Else Filename = "c:\video.avi"
Next i
E sad, ovako je ispravan kod, ali tje uraditi sledetje: 1000 puta tje da proveri da li je CMD.Filename <> "", pa ako jeste, promenljivoj Filename tje dodeliti CMD.Filename + vrednost i pretvorena u string, a ako nije 1000 puta tje promenljivu Filename postaviti na vrednost "c:\video.avi".
I kad odradi petlju do kraja, Filename bi imala ili vrednost CMD.Filename + "1000" ili "c:\video.avi"... A to ti ne treba...
Ako hotjesh da svaki put snimi sa drugachijim imenom, pokushaj neshto ovako (Ovaj kod nije testiran, moratjesh proveriti, i mozhda neshto malo izmeniti):
Code:
Filename = "C:\Video.avi"
For i = 1 to 1000
If Dir("C:\Video" & Padd(i,4) & ".avi") = "" Then
Filename = "C:\Video" & Padd(i,4) & ".avi"
Exit for
End If
Next i
Funkcija Dir je ugradjena u VB i pomotju nje mozhesh da proverish postojanje odredjenog fajla, nema potrebe za korishtjenjem FSO, samo se povetjava distribucija, i stvara zavisnost of MS Scripting biblioteke... Dobra je praksa shto vishe smanjiti zavisnost programa od drugih biblioteka...
Ovaj primer gore, tje da prodje petlju 1000 puta, i da pogleda da li postoji fajl Video####.avi, ako nema, postavlja Filename na odgovarajutje ime, i izlazi iz petlje. Ukoliko petlja dodje do kraja, odnosno postoji 1000 Video####.avi fajlova, Filename ostaje "C:\Video.Avi". Naravno, ovo mozhe da ide na neogranicheni broj, odnosno, da se koristi Do...Loop petlja, sa counterom koji se povetjava u svakom prolazu...
Funkcija Padd je funkcija koju sam ja napisao, da kad mi treba leading ili trailing 0, ne moram svaki put da kuckam kod:
Code:
Public Function Padd(ByVal Num As Long, ByVal Count As Long, Optional ByVal Trailing As Byte = 0) As String
Dim sNum As String
sNum = Trim(CStr(Num))
If Trailing = 0 Then ' Ovde upada ako 0 idu ispred texta
Padd = String(Count, "0") & sNum
Else ' Ovde upada ako 0 idu iza texta
Padd = sNum & String(Count, "0")
End If
End Function
Eto, nadam se da je ovo pomoglo...
-
SKRati link -
JaZaKraljevo.rs -
"I have never let my schooling interfere with my education." - Mark Twain