2012년 11월 10일 토요일

String 다루는 방법이 바귀였습니다. (Delphi 2009 이후)


procedure TForm1.Button1Click(Sender: TObject);
var
  ipChar: pAnsiChar;
  S1,S2,S5,S6: AnsiString;
  jpChar: pChar;
  S3, S4: String;
begin
  S1:= '1234 이정귀';
  S2:= S1; // S1 와 S2는 같은 어드레스를 가르킴
  ipChar:= pAnsiChar(S1);
  // ipChar[1]:= 'G'; 델파이 2009 버전 부터는 컴파일 에러 발생
  S1[1]:= 'G'; // S1의 어드레스가 바뀜니다.
  Edit1.Text:= S2;
  //
  S3:= '1234 이정귀';
  S4:= S3;   // S3 와 S4는 같은 어드레스를 가르킴
  jpChar:= pChar(S3);
  // jpchar[1]:= 'G'; 델파이 2009 버전 부터는 컴파일 에러 발생
  S3[1]:= 'G'; // S3의 어드레스가 바뀜니다.
  Edit2.Text:= S4;
  MessageBox(Handle, pChar(S3), pChar(S4), MB_OK); // 주1
  S4[6]:= 'G';
  Edit3.Text:= S4;
  s5:= '1234 이정귀';
  s6:= S5;
  S5[6]:= 'G';
  Edit4.Text:= S5;
end;

예전 버전에서는 jpchar[1] 과 같은 연산이 가능 했으며,
이 연산 이후에 S3, S4 의 어드레스가 같았습니다.

이젠 pChar 는 정말로 주1 과 같은 경우이외는 사용 할 필요가 없는 것 같습니다.

댓글 없음:

델파이의 부활(Antigravity와의 만남)?

 델파이 프로그램을 사용하여 개인적으로 필요한 프로그램을 생성해 왔는데, 얼마전부터 파이썬으로 옮겨갔다.  그런데 Google 의 Antigravity를 만나고 나서 델파이에 대한 미련을 버리지 못해  제미나이가 Delphi이에 대한 학습도 엄청 했을...