mFileExists.bas [Tan rustico como se pueda :D]

Iniciado por Elemental Code, 1 Febrero 2011, 22:28 PM

0 Miembros y 2 Visitantes están viendo este tema.

Elemental Code

Siguiendo con lo rustico aca les dejo este modulo para hacer una funcion que VB deberia haber tenido :P

Código (vb) [Seleccionar]
'---------------------------------------------------------------------------------------
' Module    : mFileExists
' Author    : Elemental Code
' Date      : 01/02/2011
' Purpose   : Check if a file exists in the most rustic way
'---------------------------------------------------------------------------------------
Option Explicit
Dim attr As VbFileAttribute
Public Function FileExists(ByVal sPath As String) As Boolean
On Error GoTo Missing
attr = GetAttr(sPath)
FileExists = True
Exit Function
Missing:
FileExists = False
End Function


Esta es la version estupida, facil y rustica de averiguar si un archivo existe.
Posiblemente haya aproximadamente 15.000 formas mejores pero esta funciona y la arme yo de guapo que soy.

Ademas uso esto como palanca para que un programador capo (Ejem Karcrack, Cobein, Seba123neo, BlackZeroX, Mr.Frog, LeandroA) se jueguen y saquen una version super rapida, con inline de ASM y que tire rayos por los ojos :D

Saludos.

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

79137913

HOLA!!!

Creo que la manera mas rustica y corta seria:

Código (vb) [Seleccionar]
Private Function F_Exist(sPath as string) As Boolean
    If Dir(sPath) <> "" then F_Exist = True
End Function


GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

LeandroA



Private Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long


CBool(GetFileAttributes(sPath) <> -1)



Elemental Code

Copado falta la parte de Inline ASM y que tire rayos por los ojos  :rolleyes: :rolleyes:

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

Psyke1

#4
La forma más rápida de hacerlo que encontrarás es la que usa LA. :silbar:
Aquí una forma más fea:

Código (vb) [Seleccionar]
Option Explicit

Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFilename As String, lpFindFileData As WIN32_FIND_DATA) As Long

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 * 260
   cAlternate          As String * 14
End Type

Private myWFD As WIN32_FIND_DATA

Public Function MrFrogFileExists(ByRef strFileName As String) As Boolean
   MrFrogFileExists = Not (FindFirstFile(strFileName, myWFD) = -1)
End Function


DoEvents! :P

Edu


Karcrack

#6
Otra alternativa mas:
Código (vb) [Seleccionar]
'KERNEL32
Private Declare Function OpenFile Lib "KERNEL32" (ByVal lpFileName As String, ByRef lpReOpenBuff As Any, ByVal wStyle As Long) As Long

Private Function DoFileExists(ByVal sPath As String) As Boolean
   Dim OFSTRUCT(&H21)  As Long
   DoFileExists = CBool(OpenFile(sPath, OFSTRUCT(0), &H4000) <> -1)
End Function

MOD:La ruta tiene una limitación de 128 caracteres... Problema de usar funciones diseñadas para 16bits :xD

79137913

#7
HOLA!!!

Mmm, el Inline Asm te lo debo, pero tira rayos por los ojos XD

Código (vb) [Seleccionar]
'armen un form con:
' 2 shapes
' 2 lines
' 1 timer
' y denle a f5

Private Function F_Exist(sPath As String) As Boolean
    If Dir(sPath) <> "" Then F_Exist = True
End Function


Private Sub Form_Load()
    Me.ScaleMode = vbPixels
    Me.ScaleHeight = 600
    Me.ScaleWidth = 800
    Shape1.Top = Me.ScaleHeight / 2 - 200
    Shape2.Top = Me.ScaleHeight / 2 - 200
    Shape1.Left = Me.ScaleWidth / 2 - 150
    Shape2.Left = Me.ScaleWidth / 2 + 150
    Shape1.Shape = 2
    Shape2.Shape = 2
    Shape1.Width = 150
    Shape2.Width = 150
    Shape1.Height = 300
    Shape2.Height = 300
    Line1.BorderColor = &HFF&
    Line2.BorderColor = &HFF&
    Line1.X1 = Shape1.Left + Shape1.Width / 2
    Line1.Y1 = Shape1.Top + Shape1.Height / 2
    Line2.X1 = Shape2.Left + Shape2.Width / 2
    Line2.Y1 = Shape2.Top + Shape2.Height / 2
    Timer1.Interval = 100
End Sub

Private Sub Timer1_Timer()
    Randomize
    neg = 1
    If Rnd() * 2 > 1 Then neg = -1
    Line1.X2 = Shape1.Left + Shape1.Width / 2 + Rnd() * 300 * neg
    neg = 1
    If Rnd() * 2 > 1 Then neg = -1
    Line1.Y2 = Shape1.Top + Shape1.Height / 2 + Rnd() * 300 * neg
    neg = 1
    If Rnd() * 2 > 1 Then neg = -1
    Line2.X2 = Shape2.Left + Shape2.Width / 2 + Rnd() * 300 * neg
    neg = 1
    If Rnd() * 2 > 1 Then neg = -1
    Line2.Y2 = Shape2.Top + Shape2.Height / 2 + Rnd() * 300 * neg
    Debug.Print F_Exist("c:\hola.txt")
End Sub


GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

Psyke1

#8
Jajajjaja
Estás loco... :laugh:

DoEvents! :P

Elemental Code

LOQUISIMO

FUNCIONA BOLUDO  ;D ;D ;D ;D


TIRA RAYITOS POR LOS OJOS!!!

Fantastico :D

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas