You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Delphi中以C++类似的十六进制值方式创建CLSID(TGUID)?

Delphi中创建TGUID(CLSID)的正确十六进制赋值方式

错误原因

你写的代码报错是因为Delphi中TGUID构造函数的第四个参数要求是字节数组,而($12, $34, $56, $78, $90, $AB, $CD, $EF)这种写法不符合Delphi的数组字面量语法规则,编译器无法识别。

几种正确的实现方式

方式一:使用TGUID构造函数(数组字面量)

直接将第四个参数改为Delphi支持的数组字面量格式(用方括号包裹):

var
  clsid: TGUID;
begin
  clsid := TGUID($12345678, $1234, $1234, [$12, $34, $56, $78, $90, $AB, $CD, $EF]);
end;

方式二:直接赋值TGUID的字段

TGUID的结构包含D1(DWORD)、D2(Word)、D3(Word)和D4(长度为8的字节数组),可以直接给每个字段赋值:

var
  clsid: TGUID;
begin
  clsid.D1 := $12345678;
  clsid.D2 := $1234;
  clsid.D3 := $1234;
  clsid.D4[0] := $12;
  clsid.D4[1] := $34;
  clsid.D4[2] := $56;
  clsid.D4[3] := $78;
  clsid.D4[4] := $90;
  clsid.D4[5] := $AB;
  clsid.D4[6] := $CD;
  clsid.D4[7] := $EF;
end;

方式三:通过字符串转换(直观易读)

如果觉得十六进制拆分麻烦,可以直接使用标准GUID字符串格式,通过StringToGUID转换:

var
  clsid: TGUID;
begin
  clsid := StringToGUID('{12345678-1234-1234-1234-567890ABCDEF}');
end;

以上三种方式生成的TGUID都可以直接用于CoCreateInstance调用,完全符合CLSID的要求。

内容的提问来源于stack exchange,提问作者FLASHCODER

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 15:32:50