【发布时间】:2011-10-24 15:40:58
【问题描述】:
我正在尝试将 Advantech (BDaqCL.pas) 库添加到我在 Delphi 5 中的应用程序项目中,但 .PAS 文件中充斥着以下代码:
AccessMode = (
ModeRead = 0,
ModeWrite,
ModeWriteWithReset
);
导致错误的原因:
',' or ')' expected but '=' found
这是D5 不兼容的Delphi 后期版本的一个特性吗?如果是这样,是否值得手动更改每个人(有很多),还是我一定会遇到更深层次的问题?
编辑:大多数枚举如上,但也有很多更复杂的,如下所示。手动操作太多:
DioPortDir = (
Input = $00,
LoutHin = $0F,
LinHout = $F0,
Output = $FF
);
编辑:我开始将它们声明为常量。谁能告诉我以下操作是否正确
var
DioPortDir = LongInt;
const
Input = $00;
LoutHin = $0F;
LinHout = $F0;
Output = $FF;
我将列出 var 声明并将 const 声明移到顶部。
我不确定当 const 不等于任何东西时该怎么办,例如
ValueRange = (
V_OMIT = -1, // Unknown when get, ignored when set
V_Neg15To15 = 0, // +/- 15 V
V_Neg10To10, // +/- 10 V
V_Neg5To5, // +/- 5 V
V_Neg2pt5To2pt5, // +/- 2.5 V
V_Neg1pt25To1pt25, // +/- 1.25 V
V_Neg1To1, // +/- 1 V
V_0To15, // 0~15 V
V_0To10, // 0~10 V
V_0To5, // 0~5 V
V_0To2pt5, // 0~2.5 V
V_0To1pt25, // 0~1.25 V
V_0To1, // 0~1 V
mV_Neg625To625, // +/- 625mV
mV_Neg500To500, // +/- 500 mV
mV_Neg312pt5To312pt5, // +/- 312.5 mV
mV_Neg200To200, // +/- 200 mV
mV_Neg150To150, // +/- 150 mV
mV_Neg100To100, // +/- 100 mV
mV_Neg50To50, // +/- 50 mV
mV_Neg30To30, // +/- 30 mV
mV_Neg20To20, // +/- 20 mV
mV_Neg15To15, // +/- 15 mV
mV_Neg10To10, // +/- 10 mV
mV_Neg5To5, // +/- 5 mV
mV_0To625, // 0 ~ 625 mV
mV_0To500, // 0 ~ 500 mV
mV_0To150, // 0 ~ 150 mV
mV_0To100, // 0 ~ 100 mV
mV_0To50, // 0 ~ 50 mV
mV_0To20, // 0 ~ 20 mV
mV_0To15, // 0 ~ 15 mV
mV_0To10, // 0 ~ 10 mV
mA_Neg20To20, // +/- 20mA
mA_0To20, // 0 ~ 20 mA
mA_4To20, // 4 ~ 20 mA
mA_0To24, // 0 ~ 24 mA
// For USB4702_4704
V_Neg2To2, // +/- 2 V
V_Neg4To4, // +/- 4 V
V_Neg20To20, // +/- 20 V
Jtype_0To760C = $8000, // T/C J type 0~760 'C
Ktype_0To1370C, // T/C K type 0~1370 'C
Ttype_Neg100To400C, // T/C T type -100~400 'C
Etype_0To1000C, // T/C E type 0~1000 'C
Rtype_500To1750C, // T/C R type 500~1750 'C
Stype_500To1750C, // T/C S type 500~1750 'C
Btype_500To1800C, // T/C B type 500~1800 'C
Pt392_Neg50To150, // Pt392 -50~150 'C
Pt385_Neg200To200, // Pt385 -200~200 'C
Pt385_0To400, // Pt385 0~400 'C
Pt385_Neg50To150, // Pt385 -50~150 'C
Pt385_Neg100To100, // Pt385 -100~100 'C
Pt385_0To100, // Pt385 0~100 'C
Pt385_0To200, // Pt385 0~200 'C
Pt385_0To600, // Pt385 0~600 'C
Pt392_Neg100To100, // Pt392 -100~100 'C
Pt392_0To100, // Pt392 0~100 'C
Pt392_0To200, // Pt392 0~200 'C
Pt392_0To600, // Pt392 0~600 'C
Pt392_0To400, // Pt392 0~400 'C
Pt392_Neg200To200, // Pt392 -200~200 'C
Pt1000_Neg40To160, // Pt1000 -40~160 'C
Balcon500_Neg30To120, // Balcon500 -30~120 'C
Ni518_Neg80To100, // Ni518 -80~100 'C
Ni518_0To100, // Ni518 0~100 'C
Ni508_0To100, // Ni508 0~100 'C
Ni508_Neg50To200, // Ni508 -50~200 'C
Thermistor_3K_0To100, // Thermistor 3K 0~100 'C
Thermistor_10K_0To100, // Thermistor 10K 0~100 'C
Jtype_Neg210To1200C, // T/C J type -210~1200 'C
Ktype_Neg270To1372C, // T/C K type -270~1372 'C
Ttype_Neg270To400C, // T/C T type -270~400 'C
Etype_Neg270To1000C, // T/C E type -270~1000 'C
Rtype_Neg50To1768C, // T/C R type -50~1768 'C
Stype_Neg50To1768C, // T/C S type -50~1768 'C
Btype_40To1820C, // T/C B type 40~1820 'C
Jtype_Neg210To870C, // T/C J type -210~870 'C
Rtype_0To1768C, // T/C R type 0~1768 'C
Stype_0To1768C, // T/C S type 0~1768 'C
// 0xC000 ~ 0xF000 : user customized value range type
UserCustomizedVrgStart = $C000,
UserCustomizedVrgEnd = $F000,
// AO external reference type
V_ExternalRefBipolar = $F001, // External reference voltage unipolar
V_ExternalRefUnipolar = $F002 // External reference voltage bipolar
);
如您所见,我的工作已经完成,所以最好先确保我做得对。 谢谢
【问题讨论】:
-
我认为枚举也在 D5 中...这不是问题...
-
@Evilone 枚举在 D1、Turbo Pascal 等中。这是导致编译器堵嘴的显式序数。
-
答案应该注意,在这种特殊情况下,您可以安全地删除显式分配的序数,因为它是多余的,但是由于您说代码充满了这些,如果一些类似的声明是 不是多余的,那么如果代码中有特定原因导致这样做,您可能会遇到麻烦。
-
是的。感谢您提供所有信息,但这个单元的长度超过 2500 行。虽然我只会使用其中的一小部分,但我无法想象手动更改它。我会问研华他们是否有没有 Enums 的版本,但不太可能,因为它用于与 Windows7 上的访问控制 PCI 驱动程序通信
-
有关 DioPortDir 之类的内容,请参阅@da-soft 答案。