Salvar TstringList Fazer os arquivos em formato Unix(Linux) e nao DOS(Windows)
Preciso savar arquivos em formato Unix(Linux) e nao DOS(Windows).
estou usando o procedimento abaixo.
procedure ExpTXT(DataSet: TDataSet; DataSetAux: TClientDataSet; Arq: string; Cabecalho : boolean ; Separador,FimLinha : String; var msg : String);
var
i,Registro :integer;
sl: TStringList;
st,Tipo: string;
Mascara : Array [0..100] of string;
begin
DataSet.First;
sl := TStringList.Create;
try
st := '';
for i := 0 to DataSet.Fields.Count - 1 do
st := st + DataSet.Fields[i].DisplayLabel + ';';
if Cabecalho then
sl.Add(st);
DataSet.First;
for i := 0 to DataSetAux.RecordCount - 1 do
begin
Mascara[i] := Trim(DataSetAux.FieldByName('MASCARA').AsSTring);
DataSetAux.Next;
end; Separador := Separadores(Separador);
Registro := 0;
while not DataSet.Eof do
begin
Inc(Registro); st := '';
for i := 0 to DataSet.Fields.Count - 1 do
begin Tipo := Mascara[i]; if i = DataSet.Fields.Count - 1 then
st := st + FormatString(Trim(DataSet.Fields[i].DisplayText),Tipo) + FimLinha
else
st := st + FormatString(Trim(DataSet.Fields[i].DisplayText),Tipo) + Separador; end;
sl.Add(st);
DataSet.Next;
end;
sl.SaveToFile(Arq);
finally
begin
if not DataSet.eof then
msg := 'Registro :' + InttoStr(Registro) + ' Coluna :' + Inttostr(i) + ' Conteudo :'+ DataSet.Fields[i].DisplayText;
sl.SaveToFile(Arq);
sl.free; end;
end;
end; Delphi 7 Att.. Ricardo Horoi
var
i,Registro :integer;
sl: TStringList;
st,Tipo: string;
Mascara : Array [0..100] of string;
begin
DataSet.First;
sl := TStringList.Create;
try
st := '';
for i := 0 to DataSet.Fields.Count - 1 do
st := st + DataSet.Fields[i].DisplayLabel + ';';
if Cabecalho then
sl.Add(st);
DataSet.First;
for i := 0 to DataSetAux.RecordCount - 1 do
begin
Mascara[i] := Trim(DataSetAux.FieldByName('MASCARA').AsSTring);
DataSetAux.Next;
end; Separador := Separadores(Separador);
Registro := 0;
while not DataSet.Eof do
begin
Inc(Registro); st := '';
for i := 0 to DataSet.Fields.Count - 1 do
begin Tipo := Mascara[i]; if i = DataSet.Fields.Count - 1 then
st := st + FormatString(Trim(DataSet.Fields[i].DisplayText),Tipo) + FimLinha
else
st := st + FormatString(Trim(DataSet.Fields[i].DisplayText),Tipo) + Separador; end;
sl.Add(st);
DataSet.Next;
end;
sl.SaveToFile(Arq);
finally
begin
if not DataSet.eof then
msg := 'Registro :' + InttoStr(Registro) + ' Coluna :' + Inttostr(i) + ' Conteudo :'+ DataSet.Fields[i].DisplayText;
sl.SaveToFile(Arq);
sl.free; end;
end;
end; Delphi 7 Att.. Ricardo Horoi
Frigorifico Sa
Curtidas 0
Respostas
Rodrigo Mourão
27/04/2009
Olá Ricardo !!!
Poderia me informar qual o enconding utilizado que deseja gerar o arquivo ???
O padrão dos arquivos windows e ANSI, porém isso pode variar no UNIX (me corrija se estiver errado).
Algumas codificações possíveis são:
UTF-8
UNICODE
UNICODE BIG ENDIAN
ETC.
Fico no aguardo !!!
Abs !!!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
Poderia me informar qual o enconding utilizado que deseja gerar o arquivo ???
O padrão dos arquivos windows e ANSI, porém isso pode variar no UNIX (me corrija se estiver errado).
Algumas codificações possíveis são:
UTF-8
UNICODE
UNICODE BIG ENDIAN
ETC.
Fico no aguardo !!!
Abs !!!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Frigorifico Sa
27/04/2009
Vou verificar com o fornecedor.
E dou retorno.
Obrigado.
Att..
Ricardo Horoi
GOSTEI 0
Rodrigo Mourão
27/04/2009
Olá Ricardo !!
Bem acredito que seja UTF-8 sendo assim já me antecido com um código que possa lhe ajudar.
procedure SalvaUTF8(const FileName:String; Content: TStrings);
const
constUTF8 = $BFBBEF;
var
FileUTF8: UTF8String;
FS: TFileStream;
Byte: Integer;
begin
if TRIM(Content.Text) <> '' then
begin
FileUTF8:= Content.Text;
FS:= Tfilestream.create(FileName, fmCreate );
try
Byte := constUTF8;
FS.WriteBUffer( Byte, sizeof(Byte)-1);
FS.WriteBuffer( FileUTF8[1], Length(FileUTF8)*Sizeof( FileUTF8[1] ));
finally
FS.free
end;
end;
end;
Esta procedure recebe um parametro que é o caminho onde quer salvar o arquivo convertido e outro que é o conteúdo que você quer converter. Repare que você terá que passar o conteúdo num TString. Um Exemplo de uso seria:
procedure TForm1.Button1Click(Sender: TObject);
var
F: TStringList;
begin
F := TStringList.Create;
F.LoadFromFile('C:\ArquivoNoFormatoWindows.txt');
SalvaUTF8('C:\ArquivoConvertidoParaUtf-8.txt',F);
FreeAndNil(F);
end;
Caso o enconding seja outro favor me avisar !!
Abs !!!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
Bem acredito que seja UTF-8 sendo assim já me antecido com um código que possa lhe ajudar.
procedure SalvaUTF8(const FileName:String; Content: TStrings);
const
constUTF8 = $BFBBEF;
var
FileUTF8: UTF8String;
FS: TFileStream;
Byte: Integer;
begin
if TRIM(Content.Text) <> '' then
begin
FileUTF8:= Content.Text;
FS:= Tfilestream.create(FileName, fmCreate );
try
Byte := constUTF8;
FS.WriteBUffer( Byte, sizeof(Byte)-1);
FS.WriteBuffer( FileUTF8[1], Length(FileUTF8)*Sizeof( FileUTF8[1] ));
finally
FS.free
end;
end;
end;
Esta procedure recebe um parametro que é o caminho onde quer salvar o arquivo convertido e outro que é o conteúdo que você quer converter. Repare que você terá que passar o conteúdo num TString. Um Exemplo de uso seria:
procedure TForm1.Button1Click(Sender: TObject);
var
F: TStringList;
begin
F := TStringList.Create;
F.LoadFromFile('C:\ArquivoNoFormatoWindows.txt');
SalvaUTF8('C:\ArquivoConvertidoParaUtf-8.txt',F);
FreeAndNil(F);
end;
Caso o enconding seja outro favor me avisar !!
Abs !!!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Frigorifico Sa
27/04/2009
Bom dia.
A codificaçao dos arquivos é apenas UNIX.
Att..
Ricardo Horoi
GOSTEI 0
Rodrigo Mourão
27/04/2009
Ok !!!
Bem não conheçp este tipo de codificação, acredito que os arquivos unix usem umas das codificações de arquivo padronizadas.
Teste com o código abaixo e me informe o resultado. Ficarei no aguardo !!!
Abs !!!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
Bem não conheçp este tipo de codificação, acredito que os arquivos unix usem umas das codificações de arquivo padronizadas.
Teste com o código abaixo e me informe o resultado. Ficarei no aguardo !!!
Abs !!!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Frigorifico Sa
27/04/2009
Ok
Vou alterar o sistema e enviar o arquivo para o Fornecedor, assim que tiver uma posição lhe informo.
Obrigado.
Att..
Ricardo Horoi
GOSTEI 0
Rodrigo Mourão
27/04/2009
Olá Ricardo !!
Alguma posição ???
Estamos a disposição, sinalize caso possamos encerrar o chamado !!
abs
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Frigorifico Sa
27/04/2009
Rodrigo bom dia.
Me dê mais um tempinho fiz mandei para o fornecedor, mas acho que tenho que salvar o arquivo no formato windows primeiro e chamar o procedimento que vc me passou. O Fornecedor me respondeu que estava incorreto.
É que o dia a dia acaba atrasando um pouco os projeto ainda mais quando chega aquelas solicitações da Receita Federal, pedindo informação digital de periodos anteriores.
Assim que tiver uma posição te passo.
Att..
Ricardo Horoi
GOSTEI 0
Rodrigo Mourão
27/04/2009
Olá Ricardo, sei exatamente o que é isso !!!
Fica tranquilo, estaremos aguardando !!!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
Fica tranquilo, estaremos aguardando !!!
Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Devmedia
27/04/2009
Ricardo,
podemos encerrar o chamado?
podemos encerrar o chamado?
GOSTEI 0
Frigorifico Sa
27/04/2009
Ainda não.
O fornecedor informou que o arquivo ainda esta no formato DOS.
Pedi uma sugestão para o fornecedor.
Estou meio sem tempo para trabalhar esta informação por isso preciso do suporte tb.
Temos que entregar um arquivo para a Receita Federal até o dia 12/05/2009.
Att..
Ricardo Horoi
GOSTEI 0
Devmedia
27/04/2009
Ok Ricardo,
esse chgamado será colocado como concluído, mas assim que estiver novas dúvidas sobre o assunto desse chamado, pode posta-las que o consultor lhe atenderá.
Att.
esse chgamado será colocado como concluído, mas assim que estiver novas dúvidas sobre o assunto desse chamado, pode posta-las que o consultor lhe atenderá.
Att.
GOSTEI 0