Copy e Pos Delphi

Delphi

20/12/2016

Olá, estou precisando de uma ajuda.
Tenho esse caminho 'C:\\Users\\vinic\\Desktop\\Atoa\\Win32\\Debug\\Teste.exe' em uma variável string, queria saber como faço para copiar depois da ultima '\\' no caso, somente o nome do arquivo.

Obrigado!
Vinicius

Vinicius

Curtidas 0

Respostas

Raimundo Pereira

Raimundo Pereira

20/12/2016

Porque não pega apenas o nome do exe?
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

20/12/2016

uses
Clipbrd,

begin
Clipboard.AsText:=(ExtractFileName(Application.ExeName));
ShowMessage(Clipboard.AsText);
GOSTEI 0
Vinicius

Vinicius

20/12/2016

É que nesse mesmo caminho, eu tenho vários arquivos, e eu preciso pegar o nome de cada um, vou colocar dentro de uma laço.
GOSTEI 0
Roberto Wutke

Roberto Wutke

20/12/2016

Mas a ideia do amigo acima te ajuda... você tem que ir selecionando os arquivos que você quer, aí pra cada um que vc escolher vc faz os extract file name e salva nesse laço seu
GOSTEI 0
Alberto

Alberto

20/12/2016

Var Dir, Arquivo, Meu_Caminho:String;

Meu_Caminho := 'C:\\\\Users\\\\vinic\\\\Desktop\\\\Atoa\\\\Win32\\\\Debug\\\\Teste.exe';
Dir := ExtractFilePath( Meu_Caminho );
Arquivo := ExtractFileName( Meu_Caminho );

Resultado:
Dir = 'C:\\\\Users\\\\vinic\\\\Desktop\\\\Atoa\\\\Win32\\\\Debug\\\\'
Arquivo = 'Teste.exe'
GOSTEI 0
Vinicius

Vinicius

20/12/2016

Obrigado pela ajuda pessoal!
Consegui, colocando o caminho revertido e copiei até o primeiro '\\', depois reverti novamente para retornar o nome correto.
GOSTEI 0
Marco Antônio

Marco Antônio

20/12/2016

Kra, a solução do Beto não resolveu?
Vc fez tudo isso ao invés de usar ''ExtractFilePath''?
Estranho.
GOSTEI 0
Vinicius

Vinicius

20/12/2016

ExtractFilePath não dá certo, pois, são vários arquivos e os caminhos mudam tbm...
GOSTEI 0
Gutierry Pereira

Gutierry Pereira

20/12/2016

Qual o problema do caminho mudar?
para cada caminho utilize o ExtractFilePath e ele ira retornar o nome do arquivo pra ti.
Não entendi o problema com a função.
Bom caso não queira utilizar ele um método mais elegante seria jogar seu caminho em uma array, quebrando pela '/' , dessa forma basta capturar a ultima posição no array, ela sempre corresponderá ao nome do arquivo, e caso deseje pegar alguma outra prte do caminho basta percorrer o array.

Utilizar um stringList tambem funciona
var 
meuStringList : TStringList:
begin

meuStringList := TStringList.Create();
try
meuStringList .Text := StringReplace(caminho,'/',#13#10);

result := meuStringList [length(meuStringList)-1];
finally
freeandNil(meuStringList);
end;
GOSTEI 0
Jonatas Alves

Jonatas Alves

20/12/2016

Olá,

Desculpe o atraso para responder.

Para resolver este problema....é necessário fazer o seguinte:

// Início do Exemplo

var
pathFile, fileName: string ;

begin

pathFile := ''C:\\\\\\\\Users\\\\\\\\vinic\\\\\\\\Desktop\\\\\\\\Atoa\\\\\\\\Win32\\\\\\\\Debug\\\\\\\\Teste.exe''

pathFile := StringReplace( pathFile, ''\\\\\\\\'', ''\\\\'', [rfReplaceAll, rfIgnoreCase]) ;

fileName := ExtractFileName( pathFile ) ;

end ;

na variável ''fileName'' você vai obter "Teste.exe" ;

// fim do exemplo
GOSTEI 0
Jonatas Alves

Jonatas Alves

20/12/2016

Olá,

Ficou bugada a outra resposta, mals aeee...

Para resolver este problema....é necessário fazer o seguinte:

// Início do Exemplo


var
pathFile, fileName: string ; 

begin

pathFile := ''C:\\\\Users\\\\vinic\\\\Desktop\\\\Atoa\\\\Win32\\\\Debug\\\\Teste.exe''

pathFile := StringReplace( pathFile, ''\\\\'', ''\\'', [rfReplaceAll, rfIgnoreCase]) ;

fileName := ExtractFileName( pathFile ) ; 

end ;

na variável ''fileName'' você vai obter "Teste.exe" ;

// fim do exemplo
GOSTEI 0
POSTAR