procedure TForm1.Button1Click(Sender: TObject);
var
MyCaption, MyText : String;
begin
MyCaption := '캡션';
MyText := '텍스트';
Application.MessageBox(MyText, MyCaption, MB_OK); <- 여기서 에러가
end;
강좌에 나와있는대로 했는데(강좌는 델파이5, 저는 델파이 7 사용) 컴파일 하면 에러가 나네요.
[Error] Unit1.pas(32): Incompatible types: 'String' and 'PAnsiChar'
[Error] Unit1.pas(32): Incompatible types: 'String' and 'PAnsiChar'
에러 원인과 답변 부탁드립니다.
String 과 PAnsiChar는 타입이 맞지 않습니다.
Incompatible types: 'String' and 'PAnsiChar'
이뜻은 당신(프로그래머)이 스트링으로 정의된 변수를 억지로 PAnsiChar로 정의된 파라메터에
집어넣으려고 한다. 나는(델파이 컴파일러) 이것을 절대로 용인할 수 없으므로 타입을 제대로
맞추지 않으면 컴파일 해 줄수 없다.
function MessageBox(const Text, Caption: PChar; Flags: Longint = MB_OK): Integer;
보시는바와 같이 타입이 Pchar인데 스트링으로 억지로 집어넣었다는 이야기 입니다.
타입을 맞추어 보세요
물론..
Application.MessageBox(PCHAR(MyText), PCAHR(MyCaption), MB_OK);
일단 스트링은 이런식으로 Pchar(...)로 타입캐스팅하면 됩니다.
이것도 내부적으로 이야기 할것이 너무 많아서...에고...
생략하는것이 지금 단계에서는 맞게네요
그럼이만...