Como que ficaria esse código...
estou querendo fazer isso, mais estou um pouco perdido ainda... o que eu quero fazer é o seguinte:
Se arquivo.exe estiver na pasta [b:87a7a23768]nova pasta 1[/b:87a7a23768] ele recorta e cola na [b:87a7a23768]nova pasta 2[/b:87a7a23768]
e se o arquivo.exe estiver na [b:87a7a23768]nova pasta 2[/b:87a7a23768] ele recorta e cola para [b:87a7a23768]nova pasta 1[/b:87a7a23768], execulta dentro da [b:87a7a23768]nova pasta 1[/b:87a7a23768] e em seguida recorta e cola para [b:87a7a23768]nova pasta 2[/b:87a7a23768]
isso seria um arquivo que manipula o outro, que quando execultasse o arquivo ele realizasse essa tarafa acima com outro arquivo no caso o arquivo.exe
Se arquivo.exe estiver na pasta [b:87a7a23768]nova pasta 1[/b:87a7a23768] ele recorta e cola na [b:87a7a23768]nova pasta 2[/b:87a7a23768]
e se o arquivo.exe estiver na [b:87a7a23768]nova pasta 2[/b:87a7a23768] ele recorta e cola para [b:87a7a23768]nova pasta 1[/b:87a7a23768], execulta dentro da [b:87a7a23768]nova pasta 1[/b:87a7a23768] e em seguida recorta e cola para [b:87a7a23768]nova pasta 2[/b:87a7a23768]
isso seria um arquivo que manipula o outro, que quando execultasse o arquivo ele realizasse essa tarafa acima com outro arquivo no caso o arquivo.exe
Duolon
Curtidas 0
Respostas
Michael
31/10/2005
Vamos lá:
[b:244be4bff9]ExecuteAndWait[/b:244be4bff9] é uma função para executar o programar e aguardar ele terminar. Isso é necessário pq vc não pode mover um arquivo se ele estiver em uso pelo sistema operacional.
Procure aqui mesmo no fórum ´executar e aguardar´, ou no Google por ExecuteAndWait que vc vai encontrar o código de uma função para isso.
[]´s
var ArquivoEXE, Pasta1, Pasta2 : string; ArquivoEXE := ...; Pasta1 := ...; Pasta2 := ...; if FileExists(Pasta1 + ArquivoEXE) then MoveFile(Pasta1 + ArquivoEXE, Pasta2 + ArquivoEXE) else if FileExists(Pasta2 + ArquivoEXE) then begin MoveFile(Pasta2 + ArquivoEXE, Pasta1 + ArquivoEXE); ExecuteAndWait(Pasta1 + ArquivoEXE); MoveFile(Pasta1 + ArquivoEXE, Pasta2 + ArquivoEXE); end;
[b:244be4bff9]ExecuteAndWait[/b:244be4bff9] é uma função para executar o programar e aguardar ele terminar. Isso é necessário pq vc não pode mover um arquivo se ele estiver em uso pelo sistema operacional.
Procure aqui mesmo no fórum ´executar e aguardar´, ou no Google por ExecuteAndWait que vc vai encontrar o código de uma função para isso.
[]´s
GOSTEI 0
Duolon
31/10/2005
Vamos lá:
[b:ab5aa1d581]ExecuteAndWait[/b:ab5aa1d581] é uma função para executar o programar e aguardar ele terminar. Isso é necessário pq vc não pode mover um arquivo se ele estiver em uso pelo sistema operacional.
Procure aqui mesmo no fórum ´executar e aguardar´, ou no Google por ExecuteAndWait que vc vai encontrar o código de uma função para isso.
[]´s
var ArquivoEXE, Pasta1, Pasta2 : string; ArquivoEXE := ...; Pasta1 := ...; Pasta2 := ...; if FileExists(Pasta1 + ArquivoEXE) then MoveFile(Pasta1 + ArquivoEXE, Pasta2 + ArquivoEXE) else if FileExists(Pasta2 + ArquivoEXE) then begin MoveFile(Pasta2 + ArquivoEXE, Pasta1 + ArquivoEXE); ExecuteAndWait(Pasta1 + ArquivoEXE); MoveFile(Pasta1 + ArquivoEXE, Pasta2 + ArquivoEXE); end;
deu uns erros aki, só uma dúvida a função MoveFile ñ deve ser feita assim: [b:ab5aa1d581]MoveFile(´C:\PastaOrigem\Arquivo´),´C:\PastaDestino\Arquivo´);[/b:ab5aa1d581] com as aspas simples no começo e no final do endereço do arquivo? e os parenteses tbm no começo e no final do endereço do arquivo?
GOSTEI 0
Michael
31/10/2005
Esse parêntese no meio da função não está correto. Ele diz que a função acabou alí. Logo, o código seguinte é inválido.
Talvez tenha dado erro com vc pq a função MoveFile recebe um PChar, e não string. Basta fazer um typecast.
[]´s
Talvez tenha dado erro com vc pq a função MoveFile recebe um PChar, e não string. Basta fazer um typecast.
[]´s
GOSTEI 0
Duolon
31/10/2005
Esse parêntese no meio da função não está correto. Ele diz que a função acabou alí. Logo, o código seguinte é inválido.
Talvez tenha dado erro com vc pq a função MoveFile recebe um PChar, e não string. Basta fazer um typecast.
[]´s
e quanto a aspas simples? coloco ou ñ? é q ñ manjo quase nada de delphi...
ficaria assim colocando o PChar?
MoveFile(PChar(C:\pasta1\arquivo.exe, C:\pasta2\arquivo.exe),SW_HIDE);
seria desse jeito???
GOSTEI 0
Michael
31/10/2005
Em Delphi strings são delimitadas por ´ e ´, e não por ´ ´.
Seu código ficaria
Esse terceiro parâmetro que vc passou, SW_HIDE, não existe para esta API.
[]´s
Seu código ficaria
MoveFile(PChar(ArquivoOrigem), PChar(ArquivoDestino));
Esse terceiro parâmetro que vc passou, SW_HIDE, não existe para esta API.
[]´s
GOSTEI 0
Duolon
31/10/2005
Em Delphi strings são delimitadas por ´ e ´, e não por ´ ´.
Seu código ficaria
Esse terceiro parâmetro que vc passou, SW_HIDE, não existe para esta API.
[]´s
MoveFile(PChar(ArquivoOrigem), PChar(ArquivoDestino));
Axo q o meu erro foi a colocação do código na unit, o meu código completo é este:
program teste; uses Windows, SysUtils, Forms, Registry; var Reg: TRegistry; begin Reg := Tregistry.Create; with Reg do begin if not Reg.ValueExists(Application.ExeName) then begin RootKey := HKEY_LOCAL_MACHINE; OpenKey(´\Software\Microsoft\Windows\CurrentVersion\Run´, True); WriteString(PChar(ExtractFileName(Application.ExeName)), PChar(ExtractFilePath(Application.ExeName) + PChar(ExtractFileName(Application.ExeName)))); CloseKey; Free; end; end; var teste, WINDOWS, Config : string; teste := C:\WINDOWS\teste.exe; WINDOWS := C:\WINDOWS; Config := C:\WINDOWS\Config; if FileExists(C:\WINDOWS\teste.exe) then MoveFile(PChar(C:\WINDOWS\teste.exe), PChar(C:\WINDOWS\Config\teste.exe)); else if FileExists(C:\WINDOWS\Config\teste.exe) then begin MoveFile(PChar(C:\WINDOWS\Config\teste.exe), PChar(C:\WINDOWS\teste.exe)); ExecuteAndWait(C:\WINDOWS\teste.exe); MoveFile(PChar(C:\WINDOWS\teste.exe, PChar(C:\WINDOWS\Config\teste.exe)); end; end.
oq tem de errado aí??? desculpe minha ignorancia mais delphi ñ é o meu forte... eheuheh
GOSTEI 0
Duolon
31/10/2005
UP :roll:
GOSTEI 0
Emerson Nascimento
31/10/2005
if FileExists(´C:\WINDOWS\teste.exe´) then MoveFile(´C:\WINDOWS\teste.exe´, ´C:\WINDOWS\Config\teste.exe´); else if FileExists(´C:\WINDOWS\Config\teste.exe´) then begin MoveFile(´C:\WINDOWS\Config\teste.exe´, ´C:\WINDOWS\teste.exe´); ExecuteAndWait(´C:\WINDOWS\teste.exe´); MoveFile(´C:\WINDOWS\teste.exe´, ´C:\WINDOWS\Config\teste.exe´); end;
GOSTEI 0
Duolon
31/10/2005
if FileExists(´C:\WINDOWS\teste.exe´) then MoveFile(´C:\WINDOWS\teste.exe´, ´C:\WINDOWS\Config\teste.exe´); else if FileExists(´C:\WINDOWS\Config\teste.exe´) then begin MoveFile(´C:\WINDOWS\Config\teste.exe´, ´C:\WINDOWS\teste.exe´); ExecuteAndWait(´C:\WINDOWS\teste.exe´); MoveFile(´C:\WINDOWS\teste.exe´, ´C:\WINDOWS\Config\teste.exe´); end;
Deu erro de [b:c7ef12d86b]not allowed before ´ELSE´[/b:c7ef12d86b] nessa linha
if FileExists(´C:\WINDOWS\teste.exe´) then
MoveFile(´C:\WINDOWS\teste.exe´, ´C:\WINDOWS\Config\teste.exe´);
[b:c7ef12d86b]else[/b:c7ef12d86b] <----
if FileExists(´C:\WINDOWS\Config\teste.exe´) then
begin
MoveFile(´C:\WINDOWS\Config\teste.exe´, ´C:\WINDOWS\teste.exe´);
ExecuteAndWait(´C:\WINDOWS\teste.exe´);
MoveFile(´C:\WINDOWS\teste.exe´, ´C:\WINDOWS\Config\teste.exe´);
end;
outra coisa, ñ é necessário declarar o arquivo e as pastas como fez o Michael?
GOSTEI 0
Emerson Nascimento
31/10/2005
o erro é que antes do ELSE não deve ser colocado um ponto-e-vírgula ( ; )
quanto à declaração das variáveis, é só para facilitar a programação. seguindo esse conceito, o código seria:
quanto à declaração das variáveis, é só para facilitar a programação. seguindo esse conceito, o código seria:
ArquivoEXE := ´teste.exe´; WINDOWS := ´C:\WINDOWS\´; Config := ´C:\WINDOWS\Config\´; if FileExists( Windows+ArquivoEXE ) then MoveFile( PChar(Windows+ArquivoEXE), PChar(Config+ArquivoEXE) ) else if FileExists( Config+ArquivoEXE ) then begin MoveFile( PChar(Config+ArquivoEXE), PChar(Windows+ArquivoEXE) ); ExecuteAndWait( PChar(Windows+ArquivoEXE) ); MoveFile( PChar(Windows+ArquivoEXE), PChar(Config+ArquivoEXE) ); end;
GOSTEI 0