var
  pal: PLogPalette;
  hpal: HPALETTE;  i: Integer;
begin
  pal := nil;
  try
    GetMem(pal, sizeof(TLogPalette) + sizeof(TPaletteEntry) * 255);//?
    pal.palVersion := $300;  //?
    pal.palNumEntries := 256;  //?
    for i := 0 to 255 do
    begin
      pal.palPalEntry[i].peRed := Random(255); //?
      pal.palPalEntry[i].peGreen := Random(255);
      pal.palPalEntry[i].peBlue := Random(255);
    end;
    hpal := CreatePalette(pal^); //?
    if hpal <> 0 then      Bitmap.Palette := hpal;
  finally
    FreeMem(pal);
  end;
end;//代码结束
这代码我试了下好像是搞乱窗体界面色彩的我是个新手想知道注明//?的部分是怎么理解的。
特别是(pal^)  这里面的  ^  这个符号是什么意思在DELPHI中

解决方案 »

  1.   

    GetMem(pal, sizeof(TLogPalette) + sizeof(TPaletteEntry) * 255);//给pal指针分配内存
    pal.palVersion := $300;  //调色板的版本,一般都是这个数(16进值)
    pal.palNumEntries := 256;  //调色板是256色
    pal.palPalEntry[i].peRed := Random(255); //随机数颜色
    hpal := CreatePalette(pal^); //创建调色板
    符号 ^ 有两种用途,当它出现在类型标识符之前,如 ^typeName 表示一个类型,该类型表示指向typeName类型变量的指针。
    当它出现在指针变量之后,如pointer^ 该符号对指针解除参照,
    也就是说,返回存储在内存地址(该地址保存在指针中)的值。