PDA

Ver la Versión Completa : extraer nombre de fichero sin su path de un savedialog


zaryus
19-08-2007, 03:06:27
hola, ojala alguien sepa, quisiera saber si hay algun metodo , clase o comos e llame paara extraer solo el nombre de un fichero seleccionado por un usuario mediante un SaveDialog, y que se muestra en un textbox Edit1, pero la ruta larga no me sirve, asi que necesito mostrar solo el nombre del fichero me explico:
en vez de:

C:\archivos\noseque\archivo.txt

apareciera esto:

archivo.txt

Esto me facilitaria enormemente las cosas para el programa que estoy haciendo.

El codigo que uso es este:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
SaveDialog1->Execute();
Edit1->Text = SaveDialog1->FileTitle;
}
//------------------------------------------------------


Lo otro que aun tengo pendiente es esto:

system("copy \librl.jmp\ \ " Edit1->Text);

Me da errores el compilador :confused:, loq ue quiero es que la ruta de destino sea el contenido del edit1 pero por mas que intento no me resulta, esto accediendo mal a la propiedad del edit???
Muchas gracias (oajala alguien pueda ayudarme)
Apenas me empiecen a enseñar programacion en este semestre prometo ayudar a quienes sepan menos que yo .-:p:rolleyes::cool:
Zaryus.-

rcarrillom
19-08-2007, 08:05:05
Hola, ya hace bastante que no uso Builder, pero en Delphi se usa la función ExtractFileName. En C si deseas usar rutas que incluyan backslash, debes de ponerlo doble ya que sencillo indica una secuencia de escape, p.e \n es salto de línea y si tienes algo como "c:\new folder", no anda con la ruta :rolleyes:

system("copy \\librl.jmp\\ (file://librl.jmp//) \\ " Edit1->Text);

Espero no estar errado y ser de utilidad

zaryus
19-08-2007, 17:13:19
hola en otro foro yaq respondieron parte de la preguntaa asi que apenas soluccione el problema pongo la solucion aki, en todo casi si alguien sabe algo mas, bienvenido sea.:o
Saludos

zaryus
19-08-2007, 20:59:55
holaps, en el otro foro me sugirieron hacer un puntero que recorra el savefile o el textbox hasta la ultima barra invertida de este modo "discriminar" el fichero de su path y poder procesarlo a posteriori, empero, el problema es que apenas se que es un fichero, y menos implementarlo en c++ builder :(.

gracias

ContraVeneno
20-08-2007, 15:53:22
¿en builder no existe la función "ExtractNameFile" ?

Gabo
20-08-2007, 16:21:24
¿en builder no existe la función "ExtractNameFile" ?

ExtractFileName si existe...

Description
The resulting string is the rightmost characters of FileName, starting with the first character after the colon or backslash that separates the path information from the name and extension. The resulting string is equal to FileName if FileName contains no drive and directory parts.
Note: This function works for multi-byte character systems (MBCS).

ContraVeneno
20-08-2007, 18:24:44
a esa función me refería :p

zaryus
20-08-2007, 22:48:54
gracias por responder, aca el codigo que si me funciono :D:
Edit1->Text = ExtractFileName(SaveDialog1->FileName);

pero todavia me queda una duda, ojala me la puedan resolver, quiero copiar un archivo pero la primera vez me funco este codigo y la segunda, cuando lo cambie a otro envento no me funco :(, desde ahi no me funco mas, el compilador no da error alguno pero no copia el archivo :S.
system("copy librl.ejm \\RecFolder\\");

:mad:

Gracias:cool:

ContraVeneno
20-08-2007, 23:01:24
Así lo hago en delphi, no debería haber mucha diferencia en builder; de cualquier manera puedes consultar la ayuda de builder para ver si tiene las mismas funciones que delphi:


if not FileExists(ExtractFilePath(ParamStr(0))+ExtractFileName(Archivo)) then begin
try
CopyFile(pchar(Archivo),pchar(ExtractFilePath(ParamStr(0))+ExtractFileName(Archivo)),True);
except on E:Exception do begin
Raise;
end; //except
end; //try
end; //if fileexists


"Archivo" es de tipo cadena y contiene la ruta completa al archivo que quiero copiar