Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   invertir string, duda!! (https://www.clubdelphi.com/foros/showthread.php?t=60180)

pablitous 23-09-2008 19:40:16

invertir string, duda!!
 
este boton lo que hace es llamar a un explorador para seleccionar una imagen y guardala. yo guardo la ruta en la db, pero no quiero que me guarde el path completo, sino que quiero que me guarte en la misma carpeta de donde ejecuto el programa, por lo que se me ocurrio cortar el path de la siguiente manera:
· ponele que subo una foro que esta en c:\foto.jpg
· empiezo a copiar de atras para adelante a otro string hasta que haya una barra(\). me quedaria gpj.otof
· luego vuelvo a invertir el string para que me quede bien, foto.jpg
· y asi guardar el path con solo foto.jpg sin el c:\
espero hayan entendido y me puedan ayudar

tengo este pedaso de codigo y no me anda, creo que el problema esta en que no me toma el string c:

Código:

procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:string;i,j:integer;
begin
  j:=0;
  OpenDialog1.Execute;
  DBEdit3.Text := OpenDialog1.FileName;
  a:=DBEdit3.Text;
  b:=a;
  for i:=(length(b)-1) downto 0 do
  begin
  while b[i] <> '\' do
  begin
  c[j]:=b[i];
  j:=j+1; // lo mismo si pongo inc(j)
  end;
  end;
  b:='';
  j:=0;
  for i:=(length(c)-1) downto 0 do
  begin
  b[j]:=c[i];
  j:=j+1;
  end;
  copyfile(Pchar(a),Pchar(b),false);
  DBEdit3.Text:=b;
end;


roman 23-09-2008 19:46:46

No te compliques la vida, usa la función ExtractFileName, que te devuelve justo lo que quieres: el nombre del archivo sin la ruta (path).

// Saludos

pablitous 23-09-2008 21:02:35

esa funcion me andubo perfecto, mil gracias

quedo una cosa asi ahora:
Código:

procedure TForm1.Button1Click(Sender: TObject);
var a,b:string;
begin
  OpenDialog1.Execute;
  DBEdit3.Text := OpenDialog1.FileName;
  a:=DBEdit3.Text;
  b:=ExtractFileName(a);
  copyfile(Pchar(a),Pchar(b),false);
  DBEdit3.Text:=b;
end;

pero ahora solo me toma el nombredel archivo, por lo que necesitaria agregarla la ruta de ejecucion del programa y noc de donde sacarla.

solo esta linea me faltaria cambiar:

b:=ruta de ejecucion del programa + '\' + ExtractFileName(a);

y tendria que usar quotedstr?

roman 23-09-2008 21:04:36

Pues usa

Código Delphi [-]
ExtractFilePath(Application.ExeName);

Application.ExeName te da la ruta completa del ejecutable (incluido el nombre del archivo) y ExtractFilePath extrae la ruta.

// Saludos

pablitous 24-09-2008 02:57:21

mil gracias, andubo perfecto


La franja horaria es GMT +2. Ahora son las 06:00:46.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi