我继承了一些我需要修改的代码.原文基本上就是下面的内容.我需要在枚举列表中添加第九项,但是当我这样做时,我在"ord(byte(ts))"处得到了无效的类型转换.
program OrdTest;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
type
TFlag = (tsOne, tsTwo, tsThree, tsFour, tsFive, tsSix, tsSeven, tsEight); // , tsNine
TStatus = set of TFlag;
function GetStatus(i: integer): TStatus;
var
ts: TStatus;
j: smallint;
begin
try
ts := GetStatus(4); // returned from a table
j := ord(byte(ts)); // Invalid typecast
except
on E: Exception do
Writeln(E.Message)
end;
end;
end.
Run Code Online (Sandbox Code Playgroud)
因为一个字节可以是任何有效的255,我不明白这个例外.
我能做些什么才能添加第九个枚举并仍具有代码功能?
在你添加之前你tsNine有8个枚举值,所以它们中的一组取8位并装入一个Byte.现在你有9位,需要一个Word适合的设置.所以你必须投入到Word现在.您可以SizeOf(ts)自己查看.
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |