Fórum copiar arquivo #195116

14/11/2003

0

Como se faz para, via programação, copiar um arquivo que está protegido. Ou seja, sem apresentar a mensagem de que houve uma violação de compartilhamento ?


Rodrigo Costa

Rodrigo Costa

Responder

Posts

16/11/2003

Celo-faveri

amigo...você pode fazer da seguinte forma:

[color=darkblue:22be7b85eb]CopyFile(´CAMINHO DO ARQUIVO A SER COPIADO´, ´CAMINHO E NOME DO NOVO ARQUIVO´, False); Exemplo: CopyFile(´C:\TESTE.TXT´, ´C:\TESTE_COPIADO.TXT´, False);[/color:22be7b85eb]


Mas...tipo, como o nome dos arquivos são do estilo PChar, e você quiser colocar os nomes dos arquivos(original e copiado) em tempo de execução, use a seguinte função:

[color=darkblue:22be7b85eb]function ConvertStringToPChar(arq: String): PChar; Var PCharString : Array[0..255] of Char; begin Result := StrPCopy(PCharString,arq); end;[/color:22be7b85eb]


Exemplo de uso:
[color=darkblue:22be7b85eb]function ConvertStringToPChar(arq: String): PChar; Var PCharString : Array[0..255] of Char; begin Result := StrPCopy(PCharString,arq); end; procedure TForm1.Button1Click(Sender: TObject); var arq, arqcopy : string begin arq := ExtractFilePath(Application.ExeName) + ´teste.txt´; arqcopy := ExtractFilePath(Application.ExeName) + ´teste_copiado.txt´; if FileExist(arq) then begin CopyFile(ConvertStringToPChar(arq), ConvertStringToPChar(arqcopy), False); ShowMessage(´Arquivo Copiado´); end; end;[/color:22be7b85eb]


T+ :wink:


Responder

Gostei + 0

17/11/2003

Rodrigo Costa

Valeu pela ajuda celo-faveri, mas não funcionou para arquivos protegidos.

Eu quero copiar o arquivo NTUSER.DAT e não consigo !

Alguem sabe como fazer ?


Responder

Gostei + 0

17/11/2003

Beppe

[quote:e2e2470f0b=´celo-faveri´]
[color=darkblue:e2e2470f0b]function ConvertStringToPChar(arq: String): PChar; Var PCharString : Array[0..255] of Char; begin Result := StrPCopy(PCharString,arq); end;[/color:e2e2470f0b]

[/quote:e2e2470f0b]

Não faça isso. A função StrPCopy copia a string para o array passado, retornando o mesmo. O problema é que você está retornando memória que é garbage, como você usará o retorno da função só quando ela retornar, acessando assim memória inválida.

Quando houver necessidade de converter uma string para PChar para passar para uma função, use uma typecast. Ex Pointer(Minha_String).

Ataliba


Responder

Gostei + 0

18/11/2003

Rodrigo Costa

Obrigado pela resposta Ataliba, mas o problema não é este, pois nem usei esta função. O problema é que este comando: [color=red:73914ac543]CopyFile(´C:\ntuser.dat´, ´C:\backup\ntuser.dat´, False);[/color:73914ac543] não funciona para arquivos protegidos, funciona apenas para copiar arquivos comuns (txt,doc,exe...).

Será que algúem sabe como fazer, ou pelo menos saiba que não tem como copiar arquivos protegidos do Windows ?


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar