Q&A

  • [질문] format 관련 질문입니다.
     s := ansistrings.format('%-95s %15s  %14s',
                [ ' ', formatfloat('###,###,###,###',ld_sumcha),
                  formatfloat('##,###,###,###',ld_sumdae) ]);

ld_sumcha, ld_sumdae는 변수명이구요..

95자리를 공백으로 채우고 그뒤에 ld_sumcha, ld_sumdae를 출력하는 부분인데요

델2009로 바꾸면서 format 이었던걸 ansistrings.format으로 바꾸고 있는 중인데

'%-95s  이부분에서 계속 에러가 나네요..

혹시나 해서 %-95s 이부분을  95칸 스페이스로 띄우고

     s := ansistrings.format('                                                                                                                                   %15s  %14s',
                [ formatfloat('###,###,###,###',ld_sumcha),
                  formatfloat('##,###,###,###',ld_sumdae) ]);

이런식으로 띄우고 했더니 출력이 되네요..
' ' 이부분 빈공백 입력하는 부분이 문제인거 같은데 왜그런지 모르겠어요...
아시는분 있으면 좀 알려주세요~ 부탁해요~
2  COMMENTS
  • Profile
    구창민 2009.07.07 22:32
    안녕하세요..

    ansistrings 를 빼시고 하시면 정상출력될텐데요?..

    - 는 좌측정렬일텐데.. 공백을 채우면서 왜 좌측정렬 했는지 잘 이해가 안가고요..

    암튼 대충 아래처럼 해보면 되지 않을까 싶네요..

    var
    s : string;
    begin
    s := format('%-95s %15s %14s',
    [ ' ', formatfloat('###,###,###,###',ld_sumcha),
    formatfloat('##,###,###,###',ld_sumdae) ]);
    Memo1.Lines.Add(s);
  • Profile
    TOMATO 2009.07.08 00:09
    델2009로 오면서 유니코드로 바꼈잖아요? 그런데 소스는 예전꺼라
    ansi코드를 기준으로 format 형식을 만들었는데(한글=2byte)
    유니코드로 바껴서 한글을 4byte(3byte인가 -_-;;)로 계산하더라구요.. 그래서 자리수가 안맞아서 그렇게 했습니다.