GARANTIR DESCONTO

Fórum Salvar TstringList Fazer os arquivos em formato Unix(Linux) e nao DOS(Windows) #5056

27/04/2009

0

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
Frigorifico Sa

Frigorifico Sa

Responder

Posts

27/04/2009

Rodrigo Mourão

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

Responder

Gostei + 0

27/04/2009

Frigorifico Sa

Vou verificar com o fornecedor.   E dou retorno.   Obrigado.   Att.. Ricardo Horoi
Responder

Gostei + 0

27/04/2009

Rodrigo Mourão

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
Responder

Gostei + 0

28/04/2009

Frigorifico Sa

Bom dia.   A codificaçao dos arquivos é apenas UNIX.     Att.. Ricardo Horoi
Responder

Gostei + 0

28/04/2009

Rodrigo Mourão

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
Responder

Gostei + 0

28/04/2009

Frigorifico Sa

Ok   Vou alterar o sistema e enviar o arquivo para o Fornecedor, assim que tiver uma posição lhe informo.   Obrigado.   Att.. Ricardo Horoi
Responder

Gostei + 0

29/04/2009

Rodrigo Mourão

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
Responder

Gostei + 0

30/04/2009

Frigorifico Sa

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
Responder

Gostei + 0

30/04/2009

Rodrigo Mourão

Olá Ricardo, sei exatamente o que é isso !!!

Fica tranquilo, estaremos aguardando !!!

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
Responder

Gostei + 0

05/05/2009

Devmedia

Ricardo,
podemos encerrar o chamado?
Responder

Gostei + 0

06/05/2009

Frigorifico Sa

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
Responder

Gostei + 0

07/05/2009

Devmedia

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.
Responder

Gostei + 0

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

Aceitar