| 
	
		|  Autor | Tema: [RETO] Obtener nombre de archivo  (Leído 19,175 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.aviDeberia 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 = sPathEnd 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 StringDim partes() As Stringpartes = 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?@seba123neo Jajajajaja te barriste con tu segunda funcion     |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  | 
			| 
					
						| seba123neo | 
 
con la clase CTiming , la podes bajar de aca:CTiming aca 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 IntegerPrivate 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 LongDim ValTest As LongDim 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 = TrueEnd Sub Private Function StripPath(ByVal sPath As String) As String   Call PathStripPath(sPath)   StripPath = sPathEnd 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 | 11,400 |  23 Junio 2009, 20:29 pm por corax
 |  
						|   |   | Obtener el nombre de PC Programación C/C++
 | .:WindHack:. | 1 | 2,825 |  16 Mayo 2010, 21:40 pm por Foxy Rider
 |  
						|   |   | Obtener ruta y nombre de archivo por el PID Programación C/C++
 | Distorsion | 5 | 6,314 |  13 Enero 2011, 15:11 pm por Distorsion
 |  
						|   |   | [Sockets] Obtener Nombre del archivo .NET (C#, VB.NET, ASP)
 | kub0x | 3 | 3,277 |  14 Abril 2012, 20:06 pm por kub0x
 |  
						|   |   | [RETO] Obtener archivo Web.Config Programación General
 | n3oze3kr | 1 | 2,328 |  17 Febrero 2015, 22:35 pm por engel lex
 |    |