我的任务是将传统的Delphi应用程序移植到C#.Net。最初的delphi开发人员在我被聘用前几个月离开了。我收到了:
E2010不兼容的类型:'整数'和'字符'错误
以下方法。我正在尝试在Delphi 2007 IDE中编译应用程序,我被告知原始应用程序是Delphi 4或5,如果这有帮助。我理解错误告诉我的是什么,但我不明白为什么\它如何应用于下面的代码片段。任何帮助\方向将不胜感激。
提前致谢 - 不确定我是否在代码上完成了它。
上限:
Upper: array[1..256] of Char =
(#$00,#$01,#$02,#$03,#$04,#$05,#$06,#$07,#$08,#$09,#$0A,#$0B,#$0C,#$0D,#$0E,#$0F,
#$10,#$11,#$12,#$13,#$14,#$15,#$16,#$17,#$18,#$19,#$1A,#$1B,#$1C,#$1D,#$1E,#$1F,
#$20,#$21,#$22,#$23,#$24,#$25,#$26,#$27,#$28,#$29,#$2A,#$2B,#$2C,#$2D,#$2E,#$2F,
#$30,#$31,#$32,#$33,#$34,#$35,#$36,#$37,#$38,#$39,#$3A,#$3B,#$3C,#$3D,#$3E,#$3F,
#$40,#$41,#$42,#$43,#$44,#$45,#$46,#$47,#$48,#$49,#$4A,#$4B,#$4C,#$4D,#$4E,#$4F,
#$50,#$51,#$52,#$53,#$54,#$55,#$56,#$57,#$58,#$59,#$5A,#$5B,#$5C,#$5D,#$5E,#$5F,
#$60,#$41,#$42,#$43,#$44,#$45,#$46,#$47,#$48,#$49,#$4A,#$4B,#$4C,#$4D,#$4E,#$4F,
#$50,#$51,#$52,#$53,#$54,#$55,#$56,#$57,#$58,#$59,#$5A,#$7B,#$7C,#$7D,#$7E,#$7F,
#$80,#$81,#$82,#$83,#$84,#$85,#$86,#$87,#$88,#$89,#$8A,#$8B,#$8C,#$8D,#$8E,#$8F,
#$90,#$91,#$92,#$93,#$94,#$95,#$96,#$97,#$98,#$99,#$9A,#$9B,#$9C,#$9D,#$9E,#$9F,
#$A0,#$A1,#$A2,#$A3,#$A4,#$A5,#$A6,#$A7,#$A8,#$A9,#$AA,#$AB,#$AC,#$AD,#$AE,#$AF,
#$B0,#$B1,#$B2,#$B3,#$B4,#$B5,#$B6,#$B7,#$B8,#$B9,#$BA,#$BB,#$BC,#$BD,#$BE,#$BF,
#$C0,#$C1,#$C2,#$C3,#$C4,#$C5,#$C6,#$C7,#$C8,#$C9,#$CA,#$CB,#$CC,#$CD,#$CE,#$CF,
#$D0,#$D1,#$D2,#$D3,#$D4,#$D5,#$D6,#$D7,#$D8,#$D9,#$DA,#$DB,#$DC,#$DD,#$DE,#$DF,
#$E0,#$E1,#$E2,#$E3,#$E4,#$E5,#$E6,#$E7,#$E8,#$E9,#$EA,#$EB,#$EC,#$ED,#$EE,#$EF,
#$F0,#$F1,#$F2,#$F3,#$F4,#$F5,#$F6,#$F7,#$F8,#$F9,#$FA,#$FB,#$FC,#$FD,#$FE,#$FF);
function StrIComp_JOH_PAS_1(const Str1, Str2: PChar): Integer;
var
Ch1, Ch2 : Char;
Offset : Integer;
PStr : PChar;
begin;
PStr := Str1;
Offset := Str2 - PStr;
repeat
Ch1 := Upper[PStr^];
Ch2 := Upper[PStr[Offset]];
if (Ch1 = #0) or (Ch1 <> Ch2) then
Break;
Inc(PStr);
until False;
Result := Integer(Ch1) - Integer(Ch2);
end;
答案 0 :(得分:3)
您拥有的代码对Upper
常量进行了错误的修改。它应该是:
Upper: array[Char] of Char = ....
当然,更好的方法是简单地抛弃这个例程并使用SysUtils
单元中Delphi附带的StrIComp
版本。如果只是删除代码将导致程序正确,那么解决这个问题似乎没什么意义。
由于您要将其移植到C#,您只需使用String.Compare
并将true
传递给ignoreCase
参数。
感谢@Ulrich认识到此代码来自FastCode项目。
答案 1 :(得分:2)
pascal模块中是否有 const Upper 定义? 如果没有,请从here
获取