我需要验证用户输入并检查输入的字符串是否是有效的GUID。我怎样才能做到这一点?是否有某种IsValidGuid
验证功能?
答案 0 :(得分:2)
您可以调用Windows API函数CLSIDFromString
并检查(失败时)返回值是否为CO_E_CLASSSTRING
(代表无效的输入字符串)。调用内置的StringToGUID
函数是不可靠的,因为它会引发异常,导致您无法获得失败的原因。
如果输入字符串是有效的GUID,则以下函数返回True,否则返回False。在其他(意外)失败的情况下,它会引发异常:
[Code]
const
S_OK = $00000000;
CO_E_CLASSSTRING = $800401F3;
type
LPCLSID = TGUID;
LPCOLESTR = WideString;
function CLSIDFromString(lpsz: LPCOLESTR; pclsid: LPCLSID): HRESULT;
external 'CLSIDFromString@ole32.dll stdcall';
function IsValidGuid(const Value: string): Boolean;
var
GUID: LPCLSID;
RetVal: HRESULT;
begin
RetVal := CLSIDFromString(LPCOLESTR(Value), GUID);
Result := RetVal = S_OK;
if not Result and (RetVal <> CO_E_CLASSSTRING) then
OleCheck(RetVal);
end;