Autor
|
Tema: [RETO] Obtener nombre de archivo (Leído 17,015 veces)
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
Un reto fácil, en el que creo que puede participar mucha gente. Consiste en obtener el nombre de archivo a partir de una ruta, así: C:\Documents and Settings\Llamazares\Mis documentos\Downloads\SexoDeRanas.avi Deberia devolver la función: Quien sea más rápido, gana. Se testeará con cFrogContest.cls DoEvents!
|
|
|
En línea
|
|
|
|
ignorantev1.1
Desconectado
Mensajes: 617
/\ Así acabo cuando quiero programar...
|
Function getFileName(ByVal path As String) As String Dim cM As Integer cM = InStrRev(path, "\") + 1 If cM = 0 Then Exit Function getFileName = Mid(path, cM) End Function
|
|
|
En línea
|
|
|
|
seba123neo
|
Private Declare Sub PathStripPath Lib "shlwapi.dll" Alias "PathStripPathA" (ByVal pszPath As String) Public Function StripPath(ByVal sPath As String) As String Call PathStripPath(sPath) StripPath = sPath End Function
|
|
|
En línea
|
|
|
|
seba123neo
|
la api es una de las mas compactas, pero es la mas lenta, aca paso una optimizacion de la que puso ignorantev1.1 , es unos 300 milisegundos mas rapida. Function getFileName(ByVal path As String) As String getFileName = Mid$(path, InStrRev(path, "\") + 1) End Function
|
|
|
En línea
|
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
HOLA!!! No tengo el VB aca asi que solo dejo el codigo(sin testear): Private Declare Function GetFileTitle Lib "comdlg32.dll" Alias "GetFileTitleA" (ByVal lpszFile As String, ByVal lpszTitle As String, ByVal cbBuf As Integer) As Integer Private Function Fn7913(sPath As String) As String Dim Mem As String Mem = String(255, 0) GetFileTitle sPath, Mem, 255 Fn7913 = Trim(Mem) End Function
GRACIAS POR LEER!!!
|
|
|
En línea
|
"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*
|
|
|
grester43hck
Desconectado
Mensajes: 57
|
Function nombre_archivo(ByVal Ruta As String) As String Dim partes() As String partes = Split(Ruta, "\") nombre_archivo = partes(UBound(partes)) End Function
Seguramente no es la mas rapida ni por asomo xD
|
|
« Última modificación: 13 Febrero 2011, 20:56 pm por grester43hck »
|
En línea
|
|
|
|
seba123neo
|
Seguramente no es la mas rapida ni por asomo xD
no, es lentisima las 2 mas rapidas hasta ahora es la segunda que puse yo y la de 79137913, a veces una dura mas y la otra menos, esta en la pelea.
|
|
|
En línea
|
|
|
|
ignorantev1.1
Desconectado
Mensajes: 617
/\ Así acabo cuando quiero programar...
|
Esta pregunta la he hecho unas 450 veces pero se me olvida Como medimos la velocidad? @seba123neoJajajajaja te barriste con tu segunda funcion
|
|
|
En línea
|
|
|
|
|
seba123neo
|
con la clase CTiming, la podes bajar de aca: CTimingaca va el codigo, con las funciones posteadas hasta ahora. pongan un boton en el form y este codigo. Option Explicit Private CTiming As CTiming Private Declare Function GetFileTitle Lib "comdlg32.dll" Alias "GetFileTitleA" (ByVal lpszFile As String, ByVal lpszTitle As String, ByVal cbBuf As Integer) As Integer Private Declare Sub PathStripPath Lib "shlwapi.dll" Alias "PathStripPathA" (ByVal pszPath As String) Const Path As String = "C:\Documents and Settings\Llamazares\Mis documentos\Downloads\SexoDeRanas.avi" Dim i As Long Dim ValTest As Long Dim vres As String Private Sub Command1_Click() Me.Print "Test de velocidad" & vbCrLf ValTest = 10000 CTiming.Reset For i = 0 To ValTest vres = StripPath(Path) Next Me.Print "seba123neo api: " & CTiming.sElapsed CTiming.Reset For i = 0 To ValTest vres = GetFileName(Path) Next Me.Print "ignorantev1.1: " & CTiming.sElapsed CTiming.Reset For i = 0 To ValTest vres = getFileName2(Path) Next Me.Print "seba123neo (ignorantev1.1): " & CTiming.sElapsed CTiming.Reset For i = 0 To ValTest vres = Fn7913(Path) Next Me.Print "79137913: " & CTiming.sElapsed CTiming.Reset For i = 0 To ValTest vres = nombre_archivo(Path) Next Me.Print "grester43hck: " & CTiming.sElapsed CTiming.Reset For i = 0 To ValTest vres = GetFileMrFrog(Path) Next Me.Print "Mr. Frog ©: " & CTiming.sElapsed CTiming.Reset For i = 0 To ValTest vres = GetFileName123(Path) Next Me.Print "seba123neo (segunda): " & CTiming.sElapsed CTiming.Reset For i = 0 To ValTest vres = SacarFilenameE_C(Path) Next Me.Print "Elemental Code: " & CTiming.sElapsed CTiming.Reset For i = 0 To ValTest vres = SacarFilenameE_Cv2(Path) Next Me.Print "Elemental Code 2: " & CTiming.sElapsed End Sub Private Sub Form_Load() Set CTiming = New CTiming Me.AutoRedraw = True End Sub Private Function StripPath(ByVal sPath As String) As String Call PathStripPath(sPath) StripPath = sPath End Function Private Function getFileName2(ByVal Path As String) As String getFileName2 = Mid$(Path, InStrRev(Path, "\") + 1) End Function Private Function GetFileName(ByVal Path As String) As String Dim cM As Integer cM = InStrRev(Path, "\") + 1 If cM = 0 Then Exit Function GetFileName = Mid(Path, cM) End Function Private Function Fn7913(ByVal sPath As String) As String Dim Buffer As String Buffer = String(255, 0) GetFileTitle sPath, Buffer, Len(Buffer) Fn7913 = Left$(Buffer, InStr(1, Buffer, Chr$(0)) - 1) End Function Private Function nombre_archivo(ByVal Ruta As String) As String Dim partes() As String partes = Split(Ruta, "\") nombre_archivo = partes(UBound(partes)) End Function Public Static Function GetFileMrFrog(ByRef sFile As String) As String GetFileMrFrog = RightB$(sFile, LenB(sFile) - InStrB(sFile, "\") - 1) End Function Public Function GetFileName123(ByRef vPath As String) As String GetFileName123 = Right$(vPath, Len(vPath) - InStrRev(vPath, "\")) End Function Public Function SacarFilenameE_C(ByRef sPath As String) As String SacarFilenameE_C = StrReverse(Left(StrReverse(sPath), InStr(1, StrReverse(sPath), "\", vbBinaryCompare) - 1)) End Function Public Function SacarFilenameE_Cv2(ByRef sPath As String) As String SacarFilenameE_Cv2 = Right(sPath, Len(sPath) - InStrRev(sPath, "\", Len(sPath), vbBinaryCompare)) End Function
PD: no vi que era con la clase modificada de Mr. Frog © , pero me imagino que no hay diferencia no ? saludos.
|
|
« Última modificación: 13 Febrero 2011, 22:12 pm por seba123neo »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Batch] obtener nombre de archivo (solucionado)
Scripting
|
corax
|
2
|
10,952
|
23 Junio 2009, 20:29 pm
por corax
|
|
|
Obtener el nombre de PC
Programación C/C++
|
.:WindHack:.
|
1
|
2,460
|
16 Mayo 2010, 21:40 pm
por Foxy Rider
|
|
|
Obtener ruta y nombre de archivo por el PID
Programación C/C++
|
Distorsion
|
5
|
5,852
|
13 Enero 2011, 15:11 pm
por Distorsion
|
|
|
[Sockets] Obtener Nombre del archivo
.NET (C#, VB.NET, ASP)
|
kub0x
|
3
|
3,037
|
14 Abril 2012, 20:06 pm
por kub0x
|
|
|
[RETO] Obtener archivo Web.Config
Programación General
|
n3oze3kr
|
1
|
2,006
|
17 Febrero 2015, 22:35 pm
por engel lex
|
|