Duvida com txt

Delphi

04/08/2005

Caros colegas,
Estou criando um arquivo texto em uma aplicação, estava fazendo isso no form principal e o codigo está assim:

procedure TFrmPrincipal.SpeedButton3Click(Sender: TObject);
var
txt: TextFile;
begin
AssignFile(txt,´c:\BD.txt´);
Rewrite(txt);
Writeln(txt, EdVendedor.Text);
Writeln(txt, LblNumPedido.Caption);
......................................
No form principal está funcionando perfeitamente, mas resolvi fazer isso em um outro form(secundário) coloquei o mesmo codigo lá(e tirei do principal), só q ai quando eu executo essa operação da o seguinte erro na linha
Rewrite(txt);

O erro é esse: Project Pedido.exe raised exception class EInOutError with message ´Invalid fileName´. Process Stopped. Use step or run to continue.

Alguem saberia me dizer o motivo??

Desde já agradeço.
[]´s.


Fabiano_aprendiz

Fabiano_aprendiz

Curtidas 0

Respostas

Decandido21

Decandido21

04/08/2005

var
Txt: TextFile;
begin
try
AssignFile(Txt,´C:\CLIENTES.TXT´);
Rewrite(Txt);
except
showmessage(´Erro ao gerar arquivo!´);
exit;
end;

WriteLn(Txt, QryClienteNome.AsString);
WriteLn(Txt, QryClienteEndereco.AsString);
...............................................

closefile(Txt);
showmessage(´Arquivo gerado com sucesso.´);
end;


GOSTEI 0
Fabiano_aprendiz

Fabiano_aprendiz

04/08/2005

Isso não funcionou, continua rolando o mesmo erro.


GOSTEI 0
Massuda

Massuda

04/08/2005

Project Pedido.exe raised exception class EInOutError with message ´Invalid fileName´....
Essa mensagem de erro fala que o nome do arquivo é inválido... qual nome de arquivo você está usando?


GOSTEI 0
Fabiano_aprendiz

Fabiano_aprendiz

04/08/2005

O arquivo texto?? Se for é BD.txt, mas já tentei renomear esse cara, mas continuou rolando o mesmo problema.


GOSTEI 0
Fabiano_aprendiz

Fabiano_aprendiz

04/08/2005

Esclarecendo, o problema está na linha do AssignFile. Pois se ela já estiver com o caminho determinado funciona. Ex:
AssignFile(txt,´a:\BD.txt´);

O problema é q eu vou executar esse software em diversos usuarios diferentes, e pode ser q em algum usuario o drive de disquete não esteja definido com a letra A. Então eu coloquei um componente DriveComboBox, na criação do formulário esse kra já recebe a letra A mas no caso d o usuario quizer mudar não tem problema. Fiz isso aqui no codigo.

procedure TFrmGravar.BitBtn1Click(Sender: TObject);
var
DriverDestino: String;
txt: TextFile;
begin
DriverDestino := DriveComboBox1.Drive + ´:´;

AssignFile(txt,DriverDestino\BD.txt´);
Rewrite(txt);
Writeln(txt, FrmPrincipal.EdVendedor.Text);
Writeln(txt, FrmPrincipal.LblNumPedido.Caption);
......................

Aí sim não funciona e ocorre o erro já citado. Parece q ele não pego o conteúdo da variavel ´DriverDestino´


GOSTEI 0
Rjun

Rjun

04/08/2005

Acredito q você tenha digitado errado, mas....

AssignFile(txt, ´DriverDestino´ + ´\BD.txt´); 



GOSTEI 0
Fabiano_aprendiz

Fabiano_aprendiz

04/08/2005

RJun, já tinha tentado assim tbm e acontece o mesmo erro.


GOSTEI 0
Rjun

Rjun

04/08/2005

Tenta usar o TStringList.

procedure TFrmGravar.BitBtn1Click(Sender: TObject); 
var 
  DriverDestino: String; 
  Txt: TextFile; 
  Lista: TStringList;
begin 
  Lista := TStringList.Create;
  try
    DriverDestino := DriveComboBox1.Drive + ´:´; 
    Lista.Add(FrmPrincipal.EdVendedor.Text);
    Lista.Add(FrmPrincipal.LblNumPedido.Caption); 
    Lista.SaveToFile(DriverDestino + ´\BD.TXT´);
  finally
    FreeAndNil(Lista);
  end;
end;



GOSTEI 0
Fabiano_aprendiz

Fabiano_aprendiz

04/08/2005

Vlw Rogério Jun, estava mesmo pesquisando sobre TStringList (pois só tinha visto isso uma unica vz e não lembrava direito) com essa sua dica funcionou s/problemas. Obrigado pela força, não só sua como d todos os outros q tbm postaram aqui.
[]´s.


GOSTEI 0
POSTAR