Q&A

  • 데이터내용을 텍스트화일로 만들기...
아래에 문장이 예전에 직접 프린터로 출력하는 문을 구성했던 내용입니다...
이번에 데이터를 텍스트화일로 전환해야 하는데 이 구성문을 응용해 해보려하는데 한가지 질문이 있습니다...
필드간의 구분을 tab으로 해야합니다...
즉 텍스트화일을 만들고 바로 엑셀에서 불러올수 있어야 하거든요...
물론 아예 엑셀파일로 만들면 간단하지 싶지만 엑셀은 단지 제대로 만들어졌는지 확인용이고 실제로
텍스트화일을 만들어 디스크에 보관해 외부로 보내주어야 합니다...
엑셀로 먼저 만들고 그곳에서 텍스트로 만들어봄이 어떻냐고 하시는 분들이 간혹 계시던데 사용자가 이중일을
해야하는 문제가 있어서 막바로 텍스트화일을 만들어 주었으면 하네요...
어떻게 하면 되는지 또 아래 문장보다 더 효과적으로 전환할 수 있는 방법이 있는지 좀 알려주십시요...

procedure Tjunpyo2F.SetPrint;
var PrinterF : Textfile;
    m_msg : string;
    m_row : Integer;
begin
  AssignFile(PrinterF,'LPT1');
  ReWrite(PrinterF);

  with main_0.work1 do
       begin
         Close;
         SQL.Clear;
         SQL.Add('Select * from ' + mfilename);
         SQL.Add('Where prtsort >= :a1 ');
         SQL.Add(' and  prtsort <= :a2 ');
         SQL.Add('Order By bno');
         Parambyname('a1').AsFloat := CEdit91.Value ;
         Parambyname('a2').AsFloat := CEdit92.Value + 0.5;
         Open;
         First;
       end;
  while not main_0.work1.Eof do
        begin
          m_msg := LeftStr(main_0.work1.FieldByName('sdt').AsString + '                    ',13);
          m_msg := m_msg + '   ' + RightStr('        ' + main_0.work1.FieldByName('bno').AsString,4);
          m_msg := m_msg + '  '  + RightStr('        ' + main_0.work1.FieldByName('sno').AsString,4);
          m_msg := m_msg + ' '   + RightStr('        ' + Formatfloat('0.0',main_0.work1.FieldByName('ton').AsFloat),4);
          m_msg := m_msg + ' '   + RightStr('        ' + Formatfloat('0',main_0.work1.FieldByName('g1').AsFloat),6);
          m_msg := m_msg + '  '  + RightStr('        ' + Formatfloat('0',main_0.work1.FieldByName('g2').AsFloat),6);
          m_msg := m_msg + '  '  + RightStr('        ' + Formatfloat('0',main_0.work1.FieldByName('g3').AsFloat),6);
          m_msg := m_msg + '  '  + RightStr('        ' + Formatfloat('0',main_0.work1.FieldByName('g4').AsFloat),6);
          m_msg := m_msg + '  '  + RightStr('        ' + Formatfloat('0.0',main_0.work1.FieldByName('f').AsFloat),7);
          m_msg := m_msg + '  '  + RightStr('        ' + Formatfloat('0.0',main_0.work1.FieldByName('d').AsFloat),7);
          m_msg := m_msg + '  '  + RightStr('        ' + Formatfloat('0.0',main_0.work1.FieldByName('ap').AsFloat),7);
          m_msg := m_msg + '   ' + RightStr('        ' + Formatfloat('0.0',main_0.work1.FieldByName('total').AsFloat),8);
          m_msg := m_msg + '   ' + RightStr('        ' + Formatfloat('0',main_0.work1.FieldByName('dtemp').AsFloat),6);
          m_msg := m_msg + '   ' + RightStr('        ' + Formatfloat('0',main_0.work1.FieldByName('htemp').AsFloat),6);
          m_msg := m_msg + '   ' + RightStr('        ' + Formatfloat('0',main_0.work1.FieldByName('atemp').AsFloat),4);
          Writeln(PrinterF,m_msg);
                 :
                 :

          main_0.work1.Next;
        end;
  CloseFile(PrinterF);
end;
1  COMMENTS
  • Profile
    이영주 2006.10.10 19:21
    'LPT1' 을 텍스트파일이름으로 바꾸고
    필드간 구분 문자로 #9 만 넣어주시면 되겠군요.