gpt4 book ai didi

delphi - GetEnumName TypeInfo 问题(pascal/Delphi 控制台)

转载 作者:行者123 更新时间:2023-12-03 15:47:12 24 4
gpt4 key购买 nike

使用 Delphi 7 开发控制台应用程序,并遇到了问题。我在

str := GetEnumName(TypeInfo (words[3].group),

The error reads "[Error] Project1.dpr(26): TYPEINFO standard function expects a type identifier" if anyone could help with this, it would be a great help!

Cheers!

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils,
TypInfo;

type
wordset = Record
word : String;
group : (flavour, colour, place, animal);
end;
Var
words : Array [1..50] of wordset;
str : string;
groups: string;
Begin
words[1].word := 'chocolate';
words[1].group := flavour;
words[2].word := 'vanilla';
words[2].group := flavour;
words[3].word := 'strawberry';
words[3].group := flavour;

str := GetEnumName(TypeInfo (words[3].group), integer(group));

readln;
end.
之后的第 26 行收到错误

最佳答案

您正在尝试向那里传递一个枚举字段,而不是类型标识符。您需要单独声明此枚举(下面示例中的 TGroup 类型)。

无论如何,有一个不成文的约定,即使用 T 前缀对于每个类型标识符,这样您就可以轻松识别类型。这就是我将 Wordset 重命名为 TWordset 的原因。另外,word 并不是字段或变量的好名称,因为它也是 Delphi 中的一种数据类型。

program Project1;

{$APPTYPE CONSOLE}

uses SysUtils, TypInfo;

type
TGroup = (Flavour, Color, Place, Animal);

type
TWordset = record
Name: string;
Group: TGroup;
end;

var
Str: string;
Words: array [1..50] of TWordset;

begin
Words[1].Name := 'Vanilla';
Words[1].Group := Flavour;
Words[2].Name := 'Green';
Words[2].Group := Color;
Words[3].Name := 'Home';
Words[3].Group := Place;
Words[4].Name := 'Cat';
Words[4].Group := Animal;

Str := GetEnumName(TypeInfo(TGroup), Integer(Words[3].Group));

Writeln(Str);
Readln;
end.

关于delphi - GetEnumName TypeInfo 问题(pascal/Delphi 控制台),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6273290/

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