gpt4 book ai didi

delphi - 如何反序列化没有内置转换器的属性?

转载 作者:行者123 更新时间:2023-12-01 19:37:00 25 4
gpt4 key购买 nike

这是我上一个问题的衍生内容 How does delphi convert ModalResult properties?

由于 Delphi 不转换 ModalResult 属性,那么将 ModalResult 属性转换为整数的最佳方法是什么?

我真的不想要:

If SpecialCase then
else if AnotherSpecialCase then
else BehaveNormally

那么如何将 'mrOk' 等值转换为 1

注意:我正在使用

PropInfo := GetPropInfo(Instance, PropertyName);
SetPropValue(Instance, PropInfo, PropertyValue);

设置属性值。

德尔福2007

最佳答案

ModalResults 没有转换器,Delphi 将整数表示形式存储在 DFM 中。作为解决方案,我注册了一个新的转换器

const
ModalResults: array[0..10] of TIdentMapEntry = (
(Value: mrNone; Name: 'mrNone'),
(Value: mrOk; Name: 'mrOk'),
(Value: mrCancel; Name: 'mrCancel'),
(Value: mrAbort; Name: 'mrAbort'),
(Value: mrRetry; Name: 'mrRetry'),
(Value: mrIgnore; Name: 'mrIgnore'),
(Value: mrYes; Name: 'mrYes'),
(Value: mrNo; Name: 'mrNo'),
(Value: mrAll; Name: 'mrAll'),
(Value: mrNoToAll; Name: 'mrNoToAll'),
(Value: mrYesToAll; Name: 'mrYesToAll'));



function ModalResultToIdent(ModalResult: Longint; var Ident: string): Boolean;
begin
Result := IntToIdent(ModalResult, Ident, ModalResults);
end;

function IdentToModalResult(const Ident: string; var ModalResult: Longint): Boolean;
begin
Result := IdentToInt(Ident, ModalResult, ModalResults);
end;
initialization
RegisterIntegerConsts(TypeInfo(TModalResult), IdentToModalResult, ModalResultToIdent);

关于delphi - 如何反序列化没有内置转换器的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3395348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com