我标的那几个地方是什么意思?
type
  TMappingMem = record; //这句是什么意思啊? 
    Handle: DWORD;
    MsgID: DWORD;
    KeyCode: DWORD;
  end;
这个type 我知道是自定义类型用的可是我这么写怎么不行呢?如下:
type
  \\TMappingMem = record; //这句删掉? 执行的时候会报错,为什么啊?
    Handle: DWORD;
    MsgID: DWORD;
    KeyCode: DWORD;
  end;
如果我这样改一下:如下:
type
  \\TMappingMem = record; //这句删掉? 执行的时候会报错,为什么啊?
    Handle: DWORD;
    MsgID: DWORD;
    KeyCode: DWORD;
  //end; 我把 这个 "end" 这句删掉,就可以运行了,为什么啊,不是要end结束的吗?
可是这样的却没问题啊:type
  TMappingMem = record; //这句是什么意思啊? 
    Handle: DWORD;
    MsgID: DWORD;
    KeyCode: DWORD;
  end;
  PMappingMem = ^TMappingMem;//这句是什么意思啊?为什么加这个“^”符号。
  if DLLHandle <> 0 then
  begin
    FreeLibrary(DLLHandle);
    DLLHandle := 0;
    @StartKeyboardHook := nil;//这个为什么加 “@”阿,它代表什么?
    @StopKeyboardHook := nil;
  end;
end;

解决方案 »

  1.   

    type
      TMappingMem = record; //这句是什么意思啊? 
    //定义一个record类型,相当于C/C++的结构体
        Handle: DWORD;
        MsgID: DWORD;
        KeyCode: DWORD;
      end;
    这个type 我知道是自定义类型用的可是我这么写怎么不行呢?如下:
    type
      \\TMappingMem = record; //这句删掉? 执行的时候会报错,为什么啊?
        Handle: DWORD;
        MsgID: DWORD;
        KeyCode: DWORD;
      end;
    如果我这样改一下:如下:
    type
      \\TMappingMem = record; //这句删掉? 执行的时候会报错,为什么啊?
        Handle: DWORD;
        MsgID: DWORD;
        KeyCode: DWORD;
      //end; 我把 这个 "end" 这句删掉,就可以运行了,为什么啊,不是要end结束的吗?
    可是这样的却没问题啊:type
      TMappingMem = record; //这句是什么意思啊? 
        Handle: DWORD;
        MsgID: DWORD;
        KeyCode: DWORD;
      end;
      PMappingMem = ^TMappingMem;//这句是什么意思啊?为什么加这个“^”符号。
    //^表示前面的PMappingMem是TMappingMem的指针
      if DLLHandle <> 0 then
      begin
        FreeLibrary(DLLHandle);
        DLLHandle := 0;
        @StartKeyboardHook := nil;//这个为什么加 “@”阿,它代表什么? @表示取地址
        @StopKeyboardHook := nil;
      end;
    end;
      

  2.   

    你出错的原因是record后面多了个";"号,去掉就好了。