FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Ayuda con un memo
Saludos
Resulta que utilice este codigo para encontrar archivos mp3 en x directorio: for i:=1 to 5 do begin findfirst('c:\musica\'+I+'*.mp3',Anyfile,searchrec); con este metodo encontro los archivos llamados musica1.mp3 y musica2.mp3, y los pase a un memo: memo1.lines.add(searchrec.name); findclose(searchrec); entonces en el memo muestra lo siguiente: memo1 musica1.mp3 musica2.mp3 Lo que quiero es quitar los 3 ultimos caracteres ('.mp3') de manera que solo aparezcan los nombres del archivo encontrado y no la extension de estos que metodo se recomienda para hacer esto?
__________________
Mexicali |
#2
|
||||
|
||||
Función para quitar la extensión de un archivo
Código:
function SoloNombre(Archivo: String): String; var Punto: Integer; begin Punto := Pos('.', Archivo); if Punto > 0 then Result := Copy(Archivo, 1, Punto - 1) else Result := Archivo; end; La usarías así: memo1.lines.add(SoloNombre(searchrec.name)); Nota. La función fallará para archivos con nombres raros que tengan más de un punto. // Saludos |
#3
|
||||
|
||||
Prueba con este ejemplo:
Código:
procedure TForm1.Button1Click(Sender: TObject); var s:String; n:Integer; r:Integer; begin for n:=0 to Memo1.Lines.Count -1 do begin S:=memo1.lines[n]; r:=Pos('.mp3',S); if r >0 then begin Delete(s,r,4); memo1.Lines[n]:=s; end; end; end;
__________________
Guía de Estilo de los Foros Cita:
|
#4
|
|||
|
|||
Si quieres que "el quitar" la extensión no dependa del tipo de archivo (como la solución del amigo Marcos) y que no tenga el problema de archivos raros (como la solución del amigo Román), puedes utilizar la función ExtractFileExt (almenos a partir de Delphi 6) y mezclarlo con el código de Marcos
Código:
procedure TForm1.Button1Click(Sender: TObject); var s, ext : String; n : Integer; r : Integer; begin for n := 0 to Memo1.Lines.Count - 1 do begin S := memo1.lines[n]; ext := ExtractFileExt(s); r := Pos('.' + ext, S); if r > 0 then begin Delete(s, r, 4); memo1.Lines[n] := s; end; end; end; |
#5
|
||||
|
||||
¡Ey Cadetill! No es justo!
Aquí son las 5:00 am. Por razones que omito tengo insomnio y entre las muchas cosas absurdas que uno piensa cuando tiene insomnio, pensaba en que podía usarse ExtractFileExt. Harto de dar vueltas en la cama vengo y me encuentro con que me has ganado la idea. De cualquier forma y para no quedarme con las ganas de aportar he de indicar que es innecesario añadir el '.' a Ext ya que ExtractFileExt lo incluye. // Saludos |
#6
|
||||
|
||||
Ok, ahí va otra solución si la versión de Delphi incluye la función ReverseStr de la unidad StrUtils:
Código:
function RemoveFileExt(FileName: String): String; var Dot: Integer; begin Result := ReverseString(FileName); Dot := Pos('.', Result); if Dot > 0 then Result := Copy(Result, Dot + 1, Length(Result)); Result := ReverseString(Result); end; |
#7
|
|||
|
|||
Cita:
Cita:
Pues nada, otro día será PD: La solucion con ReverseString es muy ingeniosa, pero sigue teniendo un problema. Qué pasaría si el archivo se llamara "Mi.Archivo"? es decir, sin extensión pero con un '.' por el medio del nombre |
#8
|
||||
|
||||
Cita:
Hasta donde yo sé, Windows no tiene forma de saber que "Archivo" es parte del nombre y no la extensión. // Saludos pd: Tengo sueño |
#9
|
||||
|
||||
Bueno... para sembrar un poco de cizaña yo te recomiendo usar ChangeFileExt...
Código:
Memo1.Lines.Add(ChangeFileExt(SearchRec.Name, '')); Saludos!!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#10
|
||||
|
||||
Cita:
¡El que sabe sabe! // Saludos pd: cesarjbf, por favor omite todas las respuestas anteriores a la de delphi.com.ar |
#11
|
||||
|
||||
Yo puse el mensaje a las 7h45, nada más llegar al puesto de trabajo y respondí en orden a resolver el problema ya dentro del Memo.
Pero, la solución desde fuera se hubiera parecido mucho a la que dí. Por lo tanto, siempre me gusta hacer hacer una prueba con las propuestas que se dan, y esto fué lo que salio. Código:
procedure TForm1.Button1Click(Sender: TObject); var s:String; begin s:= ChangeFileExt('MiArchivo.bmp',''); ShowMessage(s); ShowMessage('Merci Delphi.com'); end;
__________________
Guía de Estilo de los Foros Cita:
|
#12
|
|||
|
|||
sólo haré un comentario
Lo brebe, si bueno, dos veces bueno. Muy bien compañero |
#13
|
||||
|
||||
En realidad todos sabíamos la respuesta óptima, es sólo que antes de leer este hilo nos habíamos dado una vuelta por el de Aprender a pensar.
|
#14
|
|||
|
|||
Probe todos los metodos a como iban saliendo y me funcionaron varios pero ninguno mejor que el de una sola linea
posteado por el moderador delphi.com.ar gracias el problema esta resuelto,no cabe duda que esta es una excelente pagina.
__________________
Mexicali |
#15
|
|||
|
|||
La verdad es que esta parte es [para Grandes Ligas_pero sigo leyendo...- Para aprender mas.
Atte.Utecyber La Sabiduria se adquiere, No se gana. |
|
|
|