Q&A

  • 포인터 변수 사용에 관한 질문..
안녕하세요
다름이 아니오라 아래 소스중
이부분(DogData  := @buffer[1];)
에서 에러가 발생됩니다
고수님들의 답변부탁드리니다.


procedure TForm1.FormActivate(Sender: TObject);
var
    DogData:^byte;
    buffer: array[0..12] of char;
begin

  buffer:='       ';
  // 에러발생위치 및 메세지
  DogData  := @buffer[1]; // <<== incompirtable type "byte" and "char" error
  ----
  ----
  ----
end;
4  COMMENTS
  • Profile
    김영대 2003.04.03 12:25
    // 안녕하세요  김영대(http://www.howto.pe.kr)입니다

    // Delphi 5,7 에서 테스트 했는데 에러 안나는데요
    // 이상하네...
    // ^Byte를 PChar 로 바꾸어서 해보세요

    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;

    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);
    var
      // DogData: PChar;
      DogData: ^Byte;
      buffer: array[0..9] of char;
      i: Integer;
    begin
      buffer := '0123456789';

      for i := 0 to high(buffer) do
      begin
        DogData := @buffer[i];
        ShowMessage(Char(DogData^));
      end;  
    end;

    end.
  • Profile
    이기석 2003.04.03 20:18
    안녕하세요
    친절한 답변 감사 드립니다

    사실 저도 sample Test에서 에러는 안났습니다.

    그런데 특정 프로젝드에서만 에러가 발생됩니다.

    특정프로젝트에서 환경과 맞질 않아 에러가 나는것인지

    도저히 알수가 었습니다.

    혹 프로젝트 환경에 따라 에러가 발생될수 있는것인지요??



  • Profile
    프리맨 2003.04.04 02:12
    프로젝트 옵션에서  "Typed @ operator"
    항목을 끄고 Build 해보십시오.
    이 항목은 @ 오퍼레이터가 타입을 가진 포인터로
    반환할것인가를 설정하는것입니다.
    항목을 끄면 모든 포인터에 호환됩니다.


  • Profile
    이기석 2003.04.04 22:04
    ..