Q&A

  • 구분자(tab)로 된 txt 화일 정렬된 txt로 만드는 방법좀...부탁드려요.
워낙 제가 기본만(!) 할줄 알아서...-_-...기본도 사실은 잘 몰라요..부끄러워요...

원시자료....

질문자 440-851 경기도 수원시장안구 파장동 00번지 0호 00/0 0층000호 경기00더0000 2004-04-11 (2004-03-12~2004-05-11) 2004-03-12~2004-05-11

질문자 440-851 경기도 수원시장안구 파장동 0호 00/0 0층000호 경기00더0000 2004-04-11 (2004-03-12~2004-05-11) 2004-03-12~2004-05-11

질문자 440-851 경기도 수원시장안구 파장동 000번지00/0 0층000호 경기00더0000 2004-04-11 (2004-03-12~2004-05-11) 2004-03-12~2004-05-11



자료는 이런식으로 오는데요...사이사이에 텝키가 있습니다.

이 화일을 불러들여서...텝키 삭제하구요.. 칸수 맞게 정열을 해야하는데요..

예를 들어.....

델파이입니다<tab>들푸래님<tab>왕초보

델파이예요<tab>들푸래<tab>초보

델파이<tab>들푸래<tab>왕초보

이렇게..

델파이입니다 들푸래님   왕초보

델파이예요    들푸래      초보

델파이          들푸래      왕초보


물론...화일은 txt로 생성되어야 하구요... 힘드시더라도...초보에게 구원의 손길을....

3  COMMENTS
  • Profile
    한원희 2004.04.08 11:46
    안녕하세요. 한원희입니다.

    탭 문자로 각 줄마다 잘라서, 항목들을 추출하기 위해서, TParse를 이용하면 좋을 것 같은데... 복잡하므로, 간단하게 한 줄을 읽어서 탭 문자를 #13#10으로 바꾸고, 바꾼 줄을 TStringList에 대입한 다음에, 라인별로 처리하면 항목별로 분리할 수 있습니다.

    slLine:=TStringList.Create;
    slLine.Text:=StringReplace(strLine, #8, #13#10, [rfReplaceAll]);
    slLine.Strings[0]; // 이름
    slLine.Strings[1]; // 주소
    slLine.Strings[2]; // 차번호
    slLine.Strings[3]; // 날짜
    ...

    출력할 때는 Format 함수를 이용하여, 자리수를 맞춰주면 됩니다.

    strLine:=Format("%10s %50s %12s %10s", [slLine.Strings[0], slLine.Strings[1], slLine.Strings[2], slLine.Strings[3]]);

    각 항목별 자리수는 미리 정해서 %s앞에 숫자로 자릿수를 정해주면 됩니다.
    Format로 나온 결과를 다시 텍스트 파일로 저장하면 됩니다.

    그럼, 즐프~


  • Profile
    보리문디 2004.04.29 22:30


    안녕 하십니까 !

    저 또한 Format 관련된 부분 찾다가 한원희님의 답변을 보고 처리를 했는데...
    원 질문자께서 원하시는 답변대로 처리가 될려면 문자의 좌측 정렬을 지정해
    주는 부분이 빠졌더군요.

    strLine:=Format("%-10s %-50s %-12s %-10s", [slLine.Strings[0], slLine.Strings[1], slLine.Strings[2], slLine.Strings[3]]);

    식으로 '-' 심볼을 넣어줘야 좌측 정렬이 됩니다. ^^
  • Profile
    Crazy 2004.04.08 09:18
    안녕하세요.
    제가 걍 만들어서 쓰고 있는건데 소스보시고 분석하셔셔 조금 수정해서 하시면 될듯 싶네요.

    function TF_FORMPARENT.Value_Cut( sData : String; sValue : Char; iNumber : Byte ) : String;
    var
         i : Integer;
         sTemp, sResult : String;
    begin
         sTemp := sData;
         for i := 1 to iNumber do
         begin
              if Pos( sValue, sTemp ) = 0 then
              begin
                   sResult := sTemp;
                   sTemp   := '';
              end else begin
                   sResult := Copy( sTemp, 1, Pos( sValue, sTemp ) -1 );
                   sTemp   := Copy( sTemp, Pos( sValue, sTemp ) + 1, Length( sTemp ) - Pos( sValue, sTemp ) );
              end;
         end;
         Result := sResult;
    end;