Movendo arquivos
Galera alguem me ajuda aqui, ele executa certinho mais na linha do MOveFile, ele não esta movendo o arquivo, o caminho que a edit recebe seria C:\Teste.txt e a edit destino seria C:\Pasta1 , alguém sabe o pq dele não estar movendo o arquivo ? :s
begin
A:=false;
AssignFile(arq, edtRecebeCaminho.Text);
{$I-} // desativa a diretiva de Input
Reset(arq); // [ 3 ] Abre o arquivo texto para leitura
{$I+} // ativa a diretiva de Input
A := true;
while not eof(arq) do
begin
readln(arq, linha); // [ 6 ] Lê uma linha do arquivo
if (copy(linha, 1, 56) = 'ALERTA : Cupom Fiscal já registrado no sistema na linha ') then
begin
end;
end;
if (copy(linha, 1, 56) = 'ALERTA : Cupom Fiscal já registrado no sistema na linha ') then
begin
CloseFile(arq);
MoveFile(Pchar(edtRecebeCaminho.Text),pchar(edtDestino.text));
showmessage('Arquivos Separados');
end;
begin
A:=false;
AssignFile(arq, edtRecebeCaminho.Text);
{$I-} // desativa a diretiva de Input
Reset(arq); // [ 3 ] Abre o arquivo texto para leitura
{$I+} // ativa a diretiva de Input
A := true;
while not eof(arq) do
begin
readln(arq, linha); // [ 6 ] Lê uma linha do arquivo
if (copy(linha, 1, 56) = 'ALERTA : Cupom Fiscal já registrado no sistema na linha ') then
begin
end;
end;
if (copy(linha, 1, 56) = 'ALERTA : Cupom Fiscal já registrado no sistema na linha ') then
begin
CloseFile(arq);
MoveFile(Pchar(edtRecebeCaminho.Text),pchar(edtDestino.text));
showmessage('Arquivos Separados');
end;
Lucas Garcia
Curtidas 0
Respostas
Marcos Oliveira
01/10/2013
Lucas, tenta colocar no destino, o caminho completo do arquivo: Pasta + Nome do arquivo.extensão.
Att,
Marcos
Att,
Marcos
GOSTEI 0
Lucas Garcia
01/10/2013
Não deu certo amigo , :(
GOSTEI 0
Lucas Garcia
01/10/2013
Alguem ? :s
GOSTEI 0
Marcos Oliveira
01/10/2013
Lucas, faça um teste, por favor: Coloque um breakpoint na linha do MoveFile e espere. Depois tente mover o arquivo manualmente.
Se conseguir mover o arquivo, realmente você tem um problema no seu fonte. Se não conseguir mover, o arquivo pode ainda estar aberto.
Att,
Marcos
Se conseguir mover o arquivo, realmente você tem um problema no seu fonte. Se não conseguir mover, o arquivo pode ainda estar aberto.
Att,
Marcos
GOSTEI 0
Lucas Garcia
01/10/2013
Obrigado Marcos, manualmente ele move mesmo, o problema é que eu não consigo ver onde eu errei
GOSTEI 0
Marcos Oliveira
01/10/2013
Lucas, creio que o problema esteja no seu fonte mesmo. Teria como você postar o conteúdo de um arquivo texto seu, para que eu possa analisar?
GOSTEI 0
Lucas Garcia
01/10/2013
O conteúdo do arquivo de texto está assim:
aaa
204
ALERTA: Cupom Fiscal já regis65465rado no sistema na linha
ALERTA: Cupom Fiscal já registrado no sis54545tema na linha
ALERTA: Cupom Fiscal já registrado no sistema na linha
ah intensão é que ele busque somente pela linha correta
aaa
204
ALERTA: Cupom Fiscal já regis65465rado no sistema na linha
ALERTA: Cupom Fiscal já registrado no sis54545tema na linha
ALERTA: Cupom Fiscal já registrado no sistema na linha
ah intensão é que ele busque somente pela linha correta
GOSTEI 0
Marcos Oliveira
01/10/2013
Lucas, repare o seu fonte e o conteúdo que você me mandou. No seu fonte, após a palava ALERTA, tem um espaço. No conteúdo que você me mandou não tem.
Pode ser esse o problema.
De qualquer forma, fiz algumas modificações no seu fonte, e comigo deu certo.
Att,
Marcos
Pode ser esse o problema.
De qualquer forma, fiz algumas modificações no seu fonte, e comigo deu certo.
var
A: Boolean;
Arq: TextFile;
linha: String;
begin
A:=false;
AssignFile(arq, edtRecebeCaminho.Text);
{$I-} // desativa a diretiva de Input
Reset(arq); // [ 3 ] Abre o arquivo texto para leitura
{$I+} // ativa a diretiva de Input
while not eof(arq) do
begin
readln(arq, linha); // [ 6 ] Lê uma linha do arquivo
if (Trim(linha) = 'ALERTA: Cupom Fiscal já registrado no sistema na linha') then
A := true;
end;
CloseFile(arq);
if A then
begin
MoveFile(Pchar(edtRecebeCaminho.Text),pchar(edtDestino.text));
showmessage('Arquivos Separados');
end;
end;
Att,
Marcos
GOSTEI 0
Lucas Garcia
01/10/2013
Bom Marcos coloquei o código da sua forma também, e não adiantou, o código está perfeitamente igual ao seu, ele mostra a message avisando que foi separado, entretanto não funciona
GOSTEI 0
Marcos Oliveira
01/10/2013
O que você informa nos campos EdtRecebecaminho e EdtDestino?
GOSTEI 0
Lucas Garcia
01/10/2013
edtRecebeCaminho = S:\Testes\Programa\erros\teste.txt
edtDestino = S:\Testes\Programa\erros\erros103
ele tem um Open dialog em buttons para cada edit, funcionam perfeitamente, e a parte do arquivo txt o usuario inseri sem apagar o restante do caminho
edtDestino = S:\Testes\Programa\erros\erros103
ele tem um Open dialog em buttons para cada edit, funcionam perfeitamente, e a parte do arquivo txt o usuario inseri sem apagar o restante do caminho
GOSTEI 0
Marcos Oliveira
01/10/2013
Blz. Faça um teste aí: informe no destino o conteúdo abaixo:
edtDestino = S:\Testes\Programa\erros\erros103\teste.txt
Veja se o arquivo será movido.
Att,
Marcos
edtDestino = S:\Testes\Programa\erros\erros103\teste.txt
Veja se o arquivo será movido.
Att,
Marcos
GOSTEI 0
Lucas Garcia
01/10/2013
Então fiz o teste , e também não foi movido rs , to pensando em ir me benzer porque ta complicado
GOSTEI 0
Marcos Oliveira
01/10/2013
Como você mesmo disse, manualmente, você consegue, certo?
Tente executar seu projeto como administrador, e refaça os testes, inclusive esse último.
Calma que vamos chegar lá!
Tente executar seu projeto como administrador, e refaça os testes, inclusive esse último.
Calma que vamos chegar lá!
GOSTEI 0
Lucas Garcia
01/10/2013
Pronto acabei de fazer os testes em usuario administrador, mesmo assim não deu certo, ele só me manda a mensagem mais quando vou verificar o arquivo continua na mesma pasta
GOSTEI 0
Lucas Garcia
01/10/2013
Também debuguei ele, ele executa a linha do MoveFile , e não move do mesmo jeito
GOSTEI 0
Lucas Garcia
01/10/2013
Marcos, no caso se tiver como me explicar uma forma de que ele abra os arquivos .log , e que seja N arquivos seira muito bom, Obrigado pela ajuda
GOSTEI 0
Marcos Oliveira
01/10/2013
Como assim? Você fala analisar vários arquivos dentro de uma pasta?
GOSTEI 0
Lucas Garcia
01/10/2013
Marcos, obrigado mais ja consegui arrumar o erro ok, mais eu tenho uma pergunta, o comando assignfile ele aceita o *.txt ?
GOSTEI 0
Lucas Garcia
01/10/2013
Isso mesmo, no caso eu preciso que ele verifique em todos os arquivos da pasta.
GOSTEI 0
Deivison Melo
01/10/2013
Por favor, postar o seu código com a solução, assim outras pessoas que compartilharem a mesma dúvida terão lugares para pesquisar no fórum!
Abração e bons códigos!!
Abração e bons códigos!!
GOSTEI 0
Lucas Garcia
01/10/2013
AI GALERA ESTA AI O CÓDIGO RESOLVIDO , OBRIGADO PELA AJUDA !
procedure Tf_SeparaErros.Button3Click(Sender: TObject);
var
arq: TextFile; { declarando a variável "arq" do tipo arquivo texto }
linha: string;
Ch, Ch2 : String;
sc_vt: Word;
sc_vai: TSearchRec;
begin
A:=false;
ch := edtRecebeCaminho.Text;
Ch2 := edtDestino.Text;
sc_vt := FindFirst(edtRecebeCaminho.Text + '???????????????????.log', faArchive, sc_vai);
While sc_vt = 0 Do
Begin
If Length(sc_vai.Name) < 20 Then
Begin
sc_vt := FindNext(sc_vai);
Continue;
End;
AssignFile(arq, edtRecebeCaminho.Text + sc_vai.Name);
{$I-} // desativa a diretiva de Input
Reset(arq); // [ 3 ] Abre o arquivo texto para leitura
{$I+} // ativa a diretiva de Input
while not eof(arq) do
begin
readln(arq, linha); // [ 6 ] Lê uma linha do arquivo
if (copy(linha, 1, 75) ='ALERTA : Cupom Fiscal já registrado no sistema na linha') then
begin
A:=true;
end;
end;
CloseFile(arq);
if A=true then
begin
Ch:=Ch+sc_vai.Name;
Ch2:=Ch2+sc_vai.Name;
MoveFile(PCHAR(Ch),PCHAR(ch2));
showmessage('Arquivos Separados');
end;
sc_vt:= FindNext(sc_vai);
end;
if A=false then
begin
showmessage('Nenhum arquivo foi separado');
end;
showmessage('processo finalizado');
end;
procedure Tf_SeparaErros.Button3Click(Sender: TObject);
var
arq: TextFile; { declarando a variável "arq" do tipo arquivo texto }
linha: string;
Ch, Ch2 : String;
sc_vt: Word;
sc_vai: TSearchRec;
begin
A:=false;
ch := edtRecebeCaminho.Text;
Ch2 := edtDestino.Text;
sc_vt := FindFirst(edtRecebeCaminho.Text + '???????????????????.log', faArchive, sc_vai);
While sc_vt = 0 Do
Begin
If Length(sc_vai.Name) < 20 Then
Begin
sc_vt := FindNext(sc_vai);
Continue;
End;
AssignFile(arq, edtRecebeCaminho.Text + sc_vai.Name);
{$I-} // desativa a diretiva de Input
Reset(arq); // [ 3 ] Abre o arquivo texto para leitura
{$I+} // ativa a diretiva de Input
while not eof(arq) do
begin
readln(arq, linha); // [ 6 ] Lê uma linha do arquivo
if (copy(linha, 1, 75) ='ALERTA : Cupom Fiscal já registrado no sistema na linha') then
begin
A:=true;
end;
end;
CloseFile(arq);
if A=true then
begin
Ch:=Ch+sc_vai.Name;
Ch2:=Ch2+sc_vai.Name;
MoveFile(PCHAR(Ch),PCHAR(ch2));
showmessage('Arquivos Separados');
end;
sc_vt:= FindNext(sc_vai);
end;
if A=false then
begin
showmessage('Nenhum arquivo foi separado');
end;
showmessage('processo finalizado');
end;
GOSTEI 0