프로그래밍 노트

델파이에서 XML에 CRLF를 쓰고 읽을 때의 문제점 본문

델파이

델파이에서 XML에 CRLF를 쓰고 읽을 때의 문제점

떡잎 2010. 7. 22. 22:46
델파이에서 XML에 CRLF를 쓰고 읽으려고 하면
CRLF를 써도 읽어지는 것은 LF만 읽어진다.

인터넷에서 열심히 뒤져 봐도 뾰족한 대안을 못찾았다.

그래서 생각해낸 방법은 LF만 있을 경우 LF를 모두 CRLF로 바꾸면 된다.

먼저 LF만 있는지 확인하는 방법


function CheckOnlyLF(sSrc: string): boolean;
var
  iCrLf, iLf : integer;
begin
  result := false;

  iCrLf := Pos(#13 + #10, sSrc);
  iLf := Pos(#10, sSrc);

  if (iCrLf = 0) and (iLf > 0) then result := true;
end;

이 소스는 LF를 하나만 검색하면 그냥 나와버린다.

그리고 LF를 모두 CRLF로 변경하려면 간단하게 할 수 있다.

function LfToCrLf(sSrc: string): string;
begin
  if CheckOnlyLF(sSrc) = true then
    result := StringReplace(sSrc, #10, #13+#10, [rfReplaceAll, rfIgnoreCase]);
end;

이 함수에도 좀 문제가 있을 수 있다.
문자열에 LF와 CRLF가 섞여있으면
CRCRLF가 되어 버린다. -.-;;
하기야 이렇게 표시에는 문제가 없지만 문자가 하나 더 추가되는 것이 찜찜하면
모든 문자열을 일일히 검색하면서 CRLF인지 LF인지를 검색하는 수 밖에 없다.

이렇게 까지하는 것은 귀찮아서 생략
혹시 그렇게 프로그램을 짜신 분은 트랙백해주세요. ^^;


Comments