Delphi 如何将guid字符串从widestring转换为unicode字符串

Delphi 如何将guid字符串从widestring转换为unicode字符串,delphi,delphi-xe2,Delphi,Delphi Xe2,我有这个问题,我在做: function GenGuid: String; var guid: TGuid; begin CreateGuid(Guid); Result := GuidToString(Guid); end; 它返回字符串格式的guid。但我如何将widestring转换为Unicode销毁?我需要有unicode字符串格式的guid。 非常感谢 更新 function myguid: string; var i: Integer; s:

我有这个问题,我在做:

function GenGuid: String;
var
  guid: TGuid;
begin
  CreateGuid(Guid);
  Result := GuidToString(Guid);
end;
它返回字符串格式的guid。但我如何将widestring转换为Unicode销毁?我需要有unicode字符串格式的guid。 非常感谢

更新

  function myguid: string;
  var
    i: Integer;
    s: string;
    Guid: TGuid;
    t: byte;
  begin
    CreateGuid(Guid);
    s := GuidToString(Guid);
    for i := 1 to Length(s) do
    begin
      t := Ord(MidStr(s, i, 1));
      writeln (t);
    end;
    Result := ....  // for now not need, just a test
  end;

执行此操作时,t始终返回148-124,而不是单个字符的ascii。如果我没有执行ord(),则正确显示字符。

我不确定这是否是您真正想要的

uses
  ComObj, ActiveX;

function CreateGuid: string;
var
  GUID: TGUID;
begin
  Result := '';

  if CoCreateGuid(GUID) = S_OK then
  begin
    Result := IntToHex(GUID.D1, 8) +
              IntToHex(GUID.D2, 4) +
              IntToHex(GUID.D3, 4) +
              IntToHex(GUID.D4[0], 2) +
              IntToHex(GUID.D4[1], 2) +
              IntToHex(GUID.D4[2], 2) +
              IntToHex(GUID.D4[3], 2) +
              IntToHex(GUID.D4[4], 2) +
              IntToHex(GUID.D4[5], 2) +
              IntToHex(GUID.D4[6], 2) +
              IntToHex(GUID.D4[7], 2);
  end;
end;

我不确定这是否是你真正想要的

uses
  ComObj, ActiveX;

function CreateGuid: string;
var
  GUID: TGUID;
begin
  Result := '';

  if CoCreateGuid(GUID) = S_OK then
  begin
    Result := IntToHex(GUID.D1, 8) +
              IntToHex(GUID.D2, 4) +
              IntToHex(GUID.D3, 4) +
              IntToHex(GUID.D4[0], 2) +
              IntToHex(GUID.D4[1], 2) +
              IntToHex(GUID.D4[2], 2) +
              IntToHex(GUID.D4[3], 2) +
              IntToHex(GUID.D4[4], 2) +
              IntToHex(GUID.D4[5], 2) +
              IntToHex(GUID.D4[6], 2) +
              IntToHex(GUID.D4[7], 2);
  end;
end;

WideString和Unicode Destring是同一类型。你有什么问题?我使用的是delphi xe2。我只是想把guid转换成十六进制。关于转换,我在microsoft网站上找到了一些visual basic脚本。但是,以周期为的逐字符读取字符时,它会返回一对值:148-124始终。@Serg
WideString
UnicodeString
不一样
UnicodeString
在写入时使用copy,而
WideString
不使用,并为COM包装一个
BSTR
。@Marcello我无法理解你的问题
String
UnicodeString
同义。您已经有了一个
解压
。请澄清。您好,我有更新代码,为了给更好的想法,也许这样我可以更多的权利。对不起我的英语:(WideString和UnicodeString是同一种类型。你有什么问题?我使用的是delphi xe2。我只想将guid转换为十六进制。关于转换,我在microsoft网站的visual basic中找到了一些脚本。但是,以字符为单位读取字符时,会返回两个值:148-124始终。@Serg
WideString
>UnicodeString
是不一样的。
UnicodeString
使用写时复制,
WideString
没有并为COM包装了一个
BSTR
。@Marcello我不明白你的问题。
String
UnicodeString
的同义词。你已经有了
UnicodeString
。请澄清。你好,我有update代码,为了给出更好的想法,也许这样我可以更正确。对不起我的英文:(