• Viernes 8 de Noviembre de 2024, 21:41

Autor Tema:  Separar path de fichero sin instrrev  (Leído 5536 veces)

J-Ant

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Separar path de fichero sin instrrev
« en: Miércoles 1 de Diciembre de 2010, 14:14 »
0
Buenas tardes.
Tengo un problema con un proyecto realizado en vb4, el cual no puedo migrar a vb6 o .net, ya que tiene controles personalizados externos.

Bueno, el caso no es ese. En dicho proyecto estoy intentando recoger el path y nombre de fichero desde un commondialog, y separar el path del nombre de fichero. Al estar en vb4, no tengo acceso a la funcion InstrRev, con lo que creo que deberia recorrer el filename hasta encontrar el último caracter "", y guardar hasta ahi en el path. El caso es que no se como recorrer para buscar la ultima instancia de un caracter.

Agradecido por cualquier ayuda que me puedan prestar

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Separar path de fichero sin instrrev
« Respuesta #1 en: Miércoles 1 de Diciembre de 2010, 20:30 »
0
StrReverse e InStr

EDITO: InStrRev hace lo mismo que las anteriores combinadas.

PD: por favor, consulta la documentación de VB antes de preguntar, normalmente ahi tienes la respuesta a la mayoría de estas preguntas simples  :P

J-Ant

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Separar path de fichero sin instrrev
« Respuesta #2 en: Jueves 2 de Diciembre de 2010, 10:16 »
0
Hola,
Antes de preguntar, he de decir que ya consulte manuales, pero no me percaté de StrReverse... porque se incluia en Visual Basic 2005, no en vb4, pero gracias igualmente por el aporte  :good: .

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Separar path de fichero sin instrrev
« Respuesta #3 en: Domingo 5 de Diciembre de 2010, 20:43 »
0
Puedes usar el 'filesystemobject' contiene clases que permiten manipular ficheros...

un ejemplo de código:
Código: Visual Basic
  1.  
  2. Dim fso As New FileSystemObject
  3. Dim Dr As Drive
  4. Dim Fi As File
  5. Dim Fo As Folder
  6.  
  7. Private Sub Command1_Click()
  8.     Dim ruta As String
  9.    
  10.     ruta = "C:autoexec.bat"
  11.     Set Fi = fso.GetFile(ruta)
  12.    
  13.     If Not (Fi  Is Nothing) Then
  14.         MsgBox "Ruta completa : " & Fi.Path & vbCrLf & _
  15.          " en la carpeta: " & Fi.ParentFolder & vbCrLf & _
  16.          " de nombre: " & Fi.Name
  17.     Else
  18.         MsgBox "error, ocurrió un error con el fichero " & ruta
  19.     End If
  20. End Sub
  21.  
  22.  
  23.  
«Ma non troppo»
----> ModoVacaciones = False<----

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Separar path de fichero sin instrrev
« Respuesta #4 en: Lunes 6 de Diciembre de 2010, 01:52 »
0
Alternativas hay muchas que tal si la reversa se la aplicas en un ciclo por ejemplo FOR:

Código: Visual Basic
  1. Function ObtenerNombreArchivo(Ruta As String)
  2.     Dim Final As Integer, C As Integer
  3.     Dim Caracter As String, Cadena As String
  4.     Final = Len(Ruta)
  5.    
  6.     For C = Final To 1 Step -1
  7.         Caracter = Mid(Ruta, C, 1)
  8.         If Caracter = "" Then
  9.             Exit For
  10.         Else
  11.             Cadena = Caracter & Cadena
  12.         End If
  13.     Next C
  14.     ObtenerNombreArchivo= Cadena
  15. End Function
  16.  


Código: Visual Basic
  1.  
  2.    NombreArchivo = ObtenerNombreArchivo("C:DocumentosOtrosArchivo.doc")
  3.  
  4.  

O en cualquier otro ciclo, claro que siempre es mejor utilizar funciones ya hechas para no tener que estar reinventando las cosas, salvo cuando son sistemas heredados , que hay que desarrollar otras soluciones. pero si no se planea la actualizacion tarde o temprano se tendran problemas mas graves

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

J-Ant

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Separar path de fichero sin instrrev
« Respuesta #5 en: Martes 7 de Diciembre de 2010, 09:51 »
0
Efectivamente, F_Tanori, lo solventé recorriendo en orden inverso con un for, tal que asi
 
Código: Visual Basic
  1.  
  2. for I= len(trim(cadena)) to 1 step -1
  3.     If Mid(Trim(cadena), I, 1) = "" then Exit For
  4. Next I
  5. Path =Mid(cadena, 1, I-1)
  6. Archivo= Mid(cadena, I + 1)
  7.  
  8.  


Gracias a todos por vuestra aportación.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Separar path de fichero sin instrrev
« Respuesta #6 en: Martes 7 de Diciembre de 2010, 11:36 »
0
Eso probablemente sea mucho más lento que usar StrRev e InStr, pero vamos, tú mismo  :P

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Separar path de fichero sin instrrev
« Respuesta #7 en: Miércoles 8 de Diciembre de 2010, 17:42 »
0
En esta pagina viene como 'simular ' esas funciones en una version de VB inferior a 6

http://support.microsoft.com/kb/188007/es

si no estan disponibles (Legacy)  ...

y como veras segun la recomendacion de MS ... StrReverse es un ciclo for en reversa  :whistling:

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Separar path de fichero sin instrrev
« Respuesta #8 en: Miércoles 8 de Diciembre de 2010, 21:29 »
0
Como siempre no deja de asombrarme la cutrez de MS  :lol: Mira que usar Mid() y no hacerlo con código más rápido usando C/C++ por ejemplo.

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Separar path de fichero sin instrrev
« Respuesta #9 en: Jueves 9 de Diciembre de 2010, 10:18 »
0
Cita de: "m0skit0"
Como siempre no deja de asombrarme la cutrez de MS  :lol: Mira que usar Mid() y no hacerlo con código más rápido usando C/C++ por ejemplo.

Claro, internamente yo supongo cuando las funciones estan incluidas en el lenguaje, como lo es en VB6 ya vienen en un codigo optimizado, mejor elaborado, y eficiente, pero estas funciones son simulaciones de las funciones que en una version anterior no estan disponibles, para que puedan estarlo.

Pero claro en lo que dices tienes razon pero esto es solo para solventar estas caracteristeicas pare este sistema heredado

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================