2012년 10월 23일 화요일

TStringBuilder

2005 버전 부턴가(?) 델파이에도 TStringBuilder라는 클래스가 포함되었다.
당초에 델파이는 string 이라는 Type이 있고 이 타입은 아주 잘 설계되어 있었으며, Integer 나 Char 처럼 문자를 아주 간단하게 사용 할 수 있게 하였으며, 관련 함수들도 엄청 많이 준비되었습니다.

그후, 254 문자 이상을 처리하기 위하여, 기존의 string 을 AnsiString 이라고 바꾸고 새로운 방식의 string 타입을 사용케 하였으며, 포인트 처리를 돕기위하여 Pchar 연산이 보강되었습니다.

또, 델파이가 unicode를 지원하기 위하여 또한번의 변동이 이루어 졌습니다.
유니코드를 지원하기 위하여 기존의 2바이트 문자 처리용 Widestring 을 String으로 하고, 이전 1 바이트 쳬계의 문자 string을 AnsiString으로 바꾸고, 이전의 AnsiString 을 ShortString으로 바꾸었습니다.

극기야, 타언어와의 호환성 또는 속도 개선을 위하여 TStringBuilder라는 클래스가 만들어 졌습니다. 당초 파스칼과 베이직을  제외한 포인터 방식의 언어에서는 String을 기본 타입으로 가지고 있지 못 했기에 델파이와 같은 string 처리를 클래스화 하게 된게 아닌가 생각합니다(틀린 추측일 수 있습니다).

일단 살펴보면 속성은 Capacity, Chars, Length, MaxCapacity  가 있으며,
메소드로는 Append, Appendformat, AppendLine, Clear, CopyTo, Create, Equals, Free,
  Insert, Remove Replace, ToString
등의 유용한 기능이 추가 되었습니다.

사용예)

procedure TForm3.Button2Click(Sender: TObject);
var iSb: TStringBuilder;
begin
  iSb:= TStringBuilder.Create;
  try
    isb.Append('내이름은 %이름입니다.').Append(#13#10).Append('좋은 하루 되세요.');
    isb.Replace('%이름', '이정귀');
    memo1.Text:= isb.ToString;
  finally
    isb.Free;
  end;
end;

Append 사용 방법이 좀 특이하지요. 계속하여 추가할 수 있고, InttoStr 사용하지 않아도 되고...


댓글 없음:

tensorflow gpu 사용하기에서

 tensorflow 설치시 주의해야 한다. # Anything above 2.10 is not supported on the GPU on Windows Native python - m pip install "tensorflow<2.11...