blockread(f,dat,100,numread);//正常通过,且通过后numread=100
-----------------------------
错了。
blockread(f,dat,100,numread);//正常通过,且通过后numread=100
这个没有找到相应的源码,和函数说明。
下面是静态成员的汇编
Unit1.pas.66: blockread(f, dat, 100, numread);//正常通过,且通过后numread=100
0044E84C 8D45FC lea eax,[ebp-$04]
0044E84F 50 push eax
0044E850 8D954CFEFFFF lea edx,[ebp-$000001b4]
0044E856 B964000000 mov ecx,$00000064
0044E85B 8D85B0FEFFFF lea eax,[ebp-$00000150]
0044E861 E85648FBFF call @BlockRead
0044E866 E88943FBFF call @_IOTest
Unit1.pas.67: if read > 0 then
0044E86B 85DB test ebx,ebx
0044E86D 7E07 jle +$07
Unit1.pas.68: dat[0]:=0;//这里就出错了
0044E86F C6854CFEFFFF00 mov byte ptr [ebp-$000001b4],$00
0044E876 33C0 xor eax,eax
0044E878 5A pop edx
0044E879 59 pop ecx
0044E87A 59 pop ecx
0044E87B 648910 mov fs:[eax],edx
0044E87E 689BE84400 push $0044e89b
二动态成员的汇编
0044E89C E81B48FBFF call @BlockRead
0044E8A1 E84E43FBFF call @_IOTest
Unit1.pas.68: dat[0]:=0;//这里就出错了
0044E8A6 8B45FC mov eax,[ebp-$04]
0044E8A9 C60000 mov byte ptr [eax],$00
0044E8AC 33C0 xor eax,eax
0044E8AE 5A pop edx
0044E8AF 59 pop ecx
0044E8B0 59 pop ecx
0044E8B1 648910 mov fs:[eax],edx
0044E8B4 68D1E84400 push $0044e8d1
Unit1.pas.78: CloseFile(F);
0044E8B9 8D85ACFEFFFF lea eax,[ebp-$00000154]
0044E8BF E81848FBFF call @Close
0044E8C4 E82B43FBFF call @_IOTest
0044E8C9 C3 ret
0044E8CA E91D58FBFF jmp @HandleFinally
0044E8CF EBE8 jmp -$18
0044E8D1 33C0 xor eax,eax
0044E8D3 5A pop edx
0044E8D4 59 pop ecx
0044E8D5 59 pop ecx