大家帮忙分析一下这个奇怪的错误! ( 积分: 50 )

  • 主题发起人 主题发起人 gm88
  • 开始时间 开始时间
G

gm88

Unregistered / Unconfirmed
GUEST, unregistred user!
unit&nbsp;UCRC;<br>interface<br><br>type&nbsp;TCRC=class<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Value:integer;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constructor&nbsp;Create;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;Init;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;Update(const&nbsp;data:&nbsp;array&nbsp;of&nbsp;byte;const&nbsp;offset,size:integer);overload;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;Update(const&nbsp;data:&nbsp;array&nbsp;of&nbsp;byte);overload;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;UpdateByte(const&nbsp;b:integer);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;GetDigest:integer;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br><br>implementation<br><br>var&nbsp;Table:&nbsp;array&nbsp;[0..255]&nbsp;of&nbsp;integer;<br><br>constructor&nbsp;TCRC.Create;<br>begin<br>Value:=-1;<br>end;<br><br>procedure&nbsp;TCRC.Init;<br>begin<br>Value:=-1;<br>end;<br><br>procedure&nbsp;TCRC.Update(const&nbsp;data:&nbsp;array&nbsp;of&nbsp;byte;const&nbsp;offset,size:integer);<br>var&nbsp;i:integer;<br>begin<br>for&nbsp;i&nbsp;:=&nbsp;0&nbsp;to&nbsp;size-1&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;:=&nbsp;Table[(value&nbsp;xor&nbsp;data[offset&nbsp;+&nbsp;i])&nbsp;and&nbsp;$FF]&nbsp;xor&nbsp;(value&nbsp;shr&nbsp;8);<br>end;<br><br>procedure&nbsp;TCRC.Update(const&nbsp;data:&nbsp;array&nbsp;of&nbsp;byte);<br>var&nbsp;size:integer;<br>&nbsp;&nbsp;&nbsp;&nbsp;i:integer;<br>begin<br>size&nbsp;:=&nbsp;length(data);<br>for&nbsp;i&nbsp;:=&nbsp;0&nbsp;to&nbsp;size&nbsp;-&nbsp;1&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;:=&nbsp;Table[(value&nbsp;xor&nbsp;data)&nbsp;and&nbsp;$FF]&nbsp;xor&nbsp;(value&nbsp;shr&nbsp;8);<br>end;<br><br>procedure&nbsp;TCRC.UpdateByte(const&nbsp;b:integer);<br>begin<br>value&nbsp;:=&nbsp;Table[(value&nbsp;xor&nbsp;b)&nbsp;and&nbsp;$FF]&nbsp;xor&nbsp;(value&nbsp;shr&nbsp;8);<br>end;<br><br>function&nbsp;TCRC.GetDigest:integer;<br>begin<br>result:=value&nbsp;xor&nbsp;(-1);<br>end;<br><br>procedure&nbsp;InitCRC;<br>var&nbsp;i,j,r:integer;<br>begin<br>for&nbsp;i&nbsp;:=&nbsp;0&nbsp;to&nbsp;255&nbsp;do&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;:=&nbsp;i;<br>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;j&nbsp;:=&nbsp;0&nbsp;to&nbsp;7&nbsp;do&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((r&nbsp;and&nbsp;1)&nbsp;&lt;&gt;&nbsp;0)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;:=&nbsp;(r&nbsp;shr&nbsp;1)&nbsp;xor&nbsp;integer($EDB88320)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;r&nbsp;:=&nbsp;r&nbsp;shr&nbsp;1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;Table&nbsp;:=&nbsp;r;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>end;<br><br>initialization<br>InitCRC;<br><br>end.<br>以上是我在d3里面编辑的,出现了以下的错误:<br>UCRC.pas(9):Field&nbsp;definition&nbsp;not&nbsp;allowed&nbsp;after&nbsp;method&nbsp;or&nbsp;properties.<br>UCRC.pas(10):Unknown&nbsp;directive&nbsp;'Update'.<br>UCRC.pas(10):'['expected&nbsp;but&nbsp;'OF'&nbsp;found.<br>UCRC.pas(10):'='expected&nbsp;but&nbsp;';'&nbsp;found.<br>UCRC.pas(13):'IMPLEMENTATION'expected&nbsp;but&nbsp;';'&nbsp;found.<br>UCRC.pas(15):'.'expected&nbsp;but&nbsp;'IMPLEMENTATION'&nbsp;found..<br>UCRC.pas(7):Unsatisfied&nbsp;forward&nbsp;or&nbsp;external&nbsp;declaration&nbsp;'TCRC.Create'.<br>UCRC.pas(8):Unsatisfied&nbsp;forward&nbsp;or&nbsp;external&nbsp;declaration&nbsp;'TCRC.Init'.<br>UCRC.pas(9):Unsatisfied&nbsp;forward&nbsp;or&nbsp;external&nbsp;declaration&nbsp;'TCRC.Update'.<br>UCRC.pas(11):Unsatisfied&nbsp;forward&nbsp;or&nbsp;external&nbsp;declaration&nbsp;'UpdateByte'.<br>UCRC.pas(12):Unsatisfied&nbsp;forward&nbsp;or&nbsp;external&nbsp;declaration&nbsp;'GetDigest'.<br>有哪位大侠看出端儿了给指教下,谢谢了。
 
function&nbsp;GetDigest:integer;行上移到constructor&nbsp;Create;行前面便可<br><br>unit&nbsp;UCRC;<br>interface<br><br>type&nbsp;TCRC=class<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Value:integer;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;GetDigest:integer;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constructor&nbsp;Create;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;Init;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;Update(const&nbsp;data:&nbsp;array&nbsp;of&nbsp;byte;const&nbsp;offset,size:integer);overload;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;Update(const&nbsp;data:&nbsp;array&nbsp;of&nbsp;byte);overload;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;UpdateByte(const&nbsp;b:integer);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br><br>implementation<br><br>var&nbsp;Table:&nbsp;array&nbsp;[0..255]&nbsp;of&nbsp;integer;<br><br>constructor&nbsp;TCRC.Create;<br>begin<br>Value:=-1;<br>end;<br><br>procedure&nbsp;TCRC.Init;<br>begin<br>Value:=-1;<br>end;<br><br>procedure&nbsp;TCRC.Update(const&nbsp;data:&nbsp;array&nbsp;of&nbsp;byte;const&nbsp;offset,size:integer);<br>var&nbsp;i:integer;<br>begin<br>for&nbsp;i&nbsp;:=&nbsp;0&nbsp;to&nbsp;size-1&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;:=&nbsp;Table[(value&nbsp;xor&nbsp;data[offset&nbsp;+&nbsp;i])&nbsp;and&nbsp;$FF]&nbsp;xor&nbsp;(value&nbsp;shr&nbsp;8);<br>end;<br><br>procedure&nbsp;TCRC.Update(const&nbsp;data:&nbsp;array&nbsp;of&nbsp;byte);<br>var&nbsp;size:integer;<br>&nbsp;&nbsp;&nbsp;&nbsp;i:integer;<br>begin<br>size&nbsp;:=&nbsp;length(data);<br>for&nbsp;i&nbsp;:=&nbsp;0&nbsp;to&nbsp;size&nbsp;-&nbsp;1&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;:=&nbsp;Table[(value&nbsp;xor&nbsp;data)&nbsp;and&nbsp;$FF]&nbsp;xor&nbsp;(value&nbsp;shr&nbsp;8);<br>end;<br><br>procedure&nbsp;TCRC.UpdateByte(const&nbsp;b:integer);<br>begin<br>value&nbsp;:=&nbsp;Table[(value&nbsp;xor&nbsp;b)&nbsp;and&nbsp;$FF]&nbsp;xor&nbsp;(value&nbsp;shr&nbsp;8);<br>end;<br><br>function&nbsp;TCRC.GetDigest:integer;<br>begin<br>result:=value&nbsp;xor&nbsp;(-1);<br>end;<br><br>procedure&nbsp;InitCRC;<br>var&nbsp;i,j,r:integer;<br>begin<br>for&nbsp;i&nbsp;:=&nbsp;0&nbsp;to&nbsp;255&nbsp;do&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;:=&nbsp;i;<br>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;j&nbsp;:=&nbsp;0&nbsp;to&nbsp;7&nbsp;do&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((r&nbsp;and&nbsp;1)&nbsp;&lt;&gt;&nbsp;0)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;:=&nbsp;(r&nbsp;shr&nbsp;1)&nbsp;xor&nbsp;integer($EDB88320)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;r&nbsp;:=&nbsp;r&nbsp;shr&nbsp;1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;Table&nbsp;:=&nbsp;r;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>end;<br><br>initialization<br>InitCRC;<br><br>end.unit&nbsp;UCRC;<br>interface<br><br>type&nbsp;TCRC=class<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Value:integer;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;GetDigest:integer;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constructor&nbsp;Create;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;Init;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;Update(const&nbsp;data:&nbsp;array&nbsp;of&nbsp;byte;const&nbsp;offset,size:integer);overload;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;Update(const&nbsp;data:&nbsp;array&nbsp;of&nbsp;byte);overload;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;UpdateByte(const&nbsp;b:integer);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br><br>implementation<br><br>var&nbsp;Table:&nbsp;array&nbsp;[0..255]&nbsp;of&nbsp;integer;<br><br>constructor&nbsp;TCRC.Create;<br>begin<br>Value:=-1;<br>end;<br><br>procedure&nbsp;TCRC.Init;<br>begin<br>Value:=-1;<br>end;<br><br>procedure&nbsp;TCRC.Update(const&nbsp;data:&nbsp;array&nbsp;of&nbsp;byte;const&nbsp;offset,size:integer);<br>var&nbsp;i:integer;<br>begin<br>for&nbsp;i&nbsp;:=&nbsp;0&nbsp;to&nbsp;size-1&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;:=&nbsp;Table[(value&nbsp;xor&nbsp;data[offset&nbsp;+&nbsp;i])&nbsp;and&nbsp;$FF]&nbsp;xor&nbsp;(value&nbsp;shr&nbsp;8);<br>end;<br><br>procedure&nbsp;TCRC.Update(const&nbsp;data:&nbsp;array&nbsp;of&nbsp;byte);<br>var&nbsp;size:integer;<br>&nbsp;&nbsp;&nbsp;&nbsp;i:integer;<br>begin<br>size&nbsp;:=&nbsp;length(data);<br>for&nbsp;i&nbsp;:=&nbsp;0&nbsp;to&nbsp;size&nbsp;-&nbsp;1&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;:=&nbsp;Table[(value&nbsp;xor&nbsp;data)&nbsp;and&nbsp;$FF]&nbsp;xor&nbsp;(value&nbsp;shr&nbsp;8);<br>end;<br><br>procedure&nbsp;TCRC.UpdateByte(const&nbsp;b:integer);<br>begin<br>value&nbsp;:=&nbsp;Table[(value&nbsp;xor&nbsp;b)&nbsp;and&nbsp;$FF]&nbsp;xor&nbsp;(value&nbsp;shr&nbsp;8);<br>end;<br><br>function&nbsp;TCRC.GetDigest:integer;<br>begin<br>result:=value&nbsp;xor&nbsp;(-1);<br>end;<br><br>procedure&nbsp;InitCRC;<br>var&nbsp;i,j,r:integer;<br>begin<br>for&nbsp;i&nbsp;:=&nbsp;0&nbsp;to&nbsp;255&nbsp;do&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;:=&nbsp;i;<br>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;j&nbsp;:=&nbsp;0&nbsp;to&nbsp;7&nbsp;do&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((r&nbsp;and&nbsp;1)&nbsp;&lt;&gt;&nbsp;0)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;:=&nbsp;(r&nbsp;shr&nbsp;1)&nbsp;xor&nbsp;integer($EDB88320)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;r&nbsp;:=&nbsp;r&nbsp;shr&nbsp;1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;Table&nbsp;:=&nbsp;r;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>end;<br><br>initialization<br>InitCRC;<br><br>end.
 
报了一串错&nbsp;&nbsp;<br>只有<br>UCRC.pas(9):Field&nbsp;definition&nbsp;not&nbsp;allowed&nbsp;after&nbsp;method&nbsp;or&nbsp;properties.<br>是关键
 
2楼得方法不行啊,测试了一下问题依旧。3楼得朋友可以说得详细点吗,最好能把正确得方法写出来。
 
D7里没有错误
 
d3里有,我观察了下会不会是d3不支持过程重载呢?
 
也许吧,&nbsp;你去掉其中的一个update试一下
 
有可能不支持多态
 
后退
顶部