加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 09:05:50 所属栏目:大数据 来源:网络整理
导读:使用Delphi 7处理控制台应用程序,并遇到了问题.我在第26行遇到错误 str := GetEnumName(TypeInfo (words[3].group), ? 错误显示“[错误] Project1.dpr(26):TYPEINFO标准函数需要一个类型标识符”如果有人可以帮助这个,那将是一个很大的帮助! 干杯! program
使用Delphi 7处理控制台应用程序,并遇到了问题.我在第26行遇到错误

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

?

错误显示“[错误] Project1.dpr(26):TYPEINFO标准函数需要一个类型标识符”如果有人可以帮助这个,那将是一个很大的帮助!

干杯!

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.

解决方法

您试图传递枚举字段而不是类型标识符.您需要单独声明此枚举(TGroup类型下面的示例中的内容).无论如何,对于每个Type标识符使用T前缀都有一个不成文的约定,因此您可以轻松识别Type.这就是我将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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读