[ Goran Goran @ 02.03.2005. 21:21 ] @
Pozdrav, Kako bi glasio kod koji samo provjeri da li postoji pojedini fajl na odredjenoj lokaciji? Pr: Ako postoji C:\Programs\Imenik.doc msgbox «Imenik postoji» ako ne msgbox «Imenik ne postoji» |
[ Goran Goran @ 02.03.2005. 21:21 ] @
[ Not now, John! @ 02.03.2005. 21:25 ] @
Code: Private Const MAX_PATH = 260 Private Type FileTime dwLowDateTime As Long dwHighDateTime As Long End Type Private Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FileTime ftLastAccessTime As FileTime ftLastWriteTime As FileTime nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * MAX_PATH cAlternate As String * 14 End Type Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long Public Function FileExists(fn As String) As Boolean Dim retval As Long, FindData As WIN32_FIND_DATA, retval2 As Long retval = FindFirstFile(fn, FindData) If retval <> -1 Then FileExists = True retval2 = FindClose(retval) End Function [ Goran Goran @ 02.03.2005. 21:36 ] @
Nisam se nadao ovako brzom odgovoru. Bravo, svaka cast! Usput, sad sam postavio jos jedno pitanje, pa eto... samo dodatno upucujem... pogledajte, pomozite... [ y0y0 @ 03.03.2005. 00:47 ] @
moze i preko file system objecta
Code: Private Sub Form_Load() Dim Fso Set Fso = CreateObject("Scripting.filesystemobject") If Fso.FileExists("C:\text.txt") Then MsgBox "postoji" Else MsgBox "ne postoji" End If End Sub [ Aleksandar Ružičić @ 03.03.2005. 12:46 ] @
ili najjednostavnije, sa ugradjenom Dir funkcijom:
Code: Function Postoji(filename As String) As Boolean Postoji = (Len(Dir(filename))<>0) End Function 'a koristi se ovako: If Postoji("C:\Programs\Imenik.doc") Then MsgBox "Postoji." Else MsgBox "Ne postoji." End If zar nije lakse? :p a takodje mozes i proveravati da li neki folder postoji (sa malom izmenom): Code: Function PostojiDir(dirname As String) As Boolean PostojiDir = (Len(Dir(dirname, vbDirectory))<>0) End Function 'a koristi se ovako: If PostojiDir("C:\Programs\") Then MsgBox "Postoji." Else MsgBox "Ne postoji." End If pozdrav! [ Dark Icarus @ 03.03.2005. 16:35 ] @
Bravo krcko! Samo može funkcija da bude i malko jednostavnija.
Code: Postoji = (Dir(filename)<>"") [ Shadowed @ 03.03.2005. 16:44 ] @
Ma da. A ne moraju ni te zagrade (spoljne). Zapravo, ja to ne bih ni smestio u funkciju vec bih samo koristio Dir(filename)<>"" ;).
[ Aleksandar Ružičić @ 03.03.2005. 19:05 ] @
Citat: Dark Icarus: Bravo krcko! Samo može funkcija da bude i malko jednostavnija. Code: Postoji = (Dir(filename)<>"") da al je ona moja brza! :D negde sam procitao da VB brze procesuje ovo: Code: If Len(somestring)=0 Then od ovoga: Code: If somestring="" Then :D [ Aleksandar Ružičić @ 03.03.2005. 19:18 ] @
evo proguglah malo:
How NOT to optimize in VB Optimize string handling in Visual Basic 6.0 dobro sad malo kad pogledah nije: Code: If Len(somestring)=0 Then vec Code: If LenB(somestring)=0 Then :D, dobro odavno sam ja ovo citao... :P [ Dark Icarus @ 03.03.2005. 23:19 ] @
To su već detalji, LenB vraća bajt a šta ćeš ako je fajl zakopan ispod 20 podfoldera? Onda će ti LenB(Path) vratiti grešku (valjda).
Istina je da je brže raditi sa numeričkim operatorima, ali ne verujem da bi funkciju "Postoji" program pozivao 50x u sekundi, tako da možeš sebi da priuštiš ipak da dodaš malo čitljivosti u kod nauštrb brzine. Zar je bitno da li komparacija traje 10ms ili 50ms, ako se vrši samo jednom (npr. kada korisnik klikne na neko dugme). [ Aleksandar Ružičić @ 04.03.2005. 19:08 ] @
da, mislim da si u pravu....
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|