X x-dsl Unregistered / Unconfirmed GUEST, unregistred user! 2005-07-05 #1 1)文件教大,有没有办法先把文件放到内存然后再读(文本文件,面对行的)?<br>2)每行的内容如下:123.333 323.111;由于中间有个空格,而且读出来的时候是字符串,那位高手能提供最优的算法,把这两项赋值到(var a,b ouble)?因为数据量巨大,所以这个算法很重要,可以的话可以用汇编。<br>再次感谢
1)文件教大,有没有办法先把文件放到内存然后再读(文本文件,面对行的)?<br>2)每行的内容如下:123.333 323.111;由于中间有个空格,而且读出来的时候是字符串,那位高手能提供最优的算法,把这两项赋值到(var a,b ouble)?因为数据量巨大,所以这个算法很重要,可以的话可以用汇编。<br>再次感谢
X x-dsl Unregistered / Unconfirmed GUEST, unregistred user! 2005-07-05 #2 1)文件教大,有没有办法先把文件放到内存然后再读(文本文件,面对行的)?<br>2)每行的内容如下:123.333 323.111;由于中间有个空格,而且读出来的时候是字符串,那位高手能提供最优的算法,把这两项赋值到(var a,b ouble)?因为数据量巨大,所以这个算法很重要,可以的话可以用汇编。<br>再次感谢
1)文件教大,有没有办法先把文件放到内存然后再读(文本文件,面对行的)?<br>2)每行的内容如下:123.333 323.111;由于中间有个空格,而且读出来的时候是字符串,那位高手能提供最优的算法,把这两项赋值到(var a,b ouble)?因为数据量巨大,所以这个算法很重要,可以的话可以用汇编。<br>再次感谢
L LSUPER Unregistered / Unconfirmed GUEST, unregistred user! 2005-07-05 #3 1、使用内存 mapfile,在 delphi 5 开发人员指南中有实例代码<br>2、这是 HyperString 中使用的函数:<br><br>function ChrToDbl(const Source:AnsiString)ouble;<br><br> {Convert any 8 char. string into a Double floating point value. See<br> IntToChr for discussion. As always with floating point, the<br> representation is only approximate.}<br><br> asm<br> Push EDI<br> Push ESI<br><br> Mov ESI,EAX //Move address to EDX<br> Xor EDX,EDX<br> Xor EAX,EAX //Default return<br> Or ESI,ESI<br> Jz @Done<br> Mov ECX,[ESI-4] //String Length into ECX<br> Cmp ECX,8 //Less than 8 bytes?<br> Jb @Done //Yes, then abort<br><br> Mov EDX,[ESI] //put 4 MSB into EDX<br> BSwap EDX<br><br> Mov EAX,[ESI+4] //put 4 LSB into EAX<br> BSwap EAX<br>@Done:<br> Lea EDI,@Result<br> Mov [EDI],EAX<br> Mov [EDI+4],EDX<br><br> Pop ESI<br> Pop EDI<br> end; //and we're outta here
1、使用内存 mapfile,在 delphi 5 开发人员指南中有实例代码<br>2、这是 HyperString 中使用的函数:<br><br>function ChrToDbl(const Source:AnsiString)ouble;<br><br> {Convert any 8 char. string into a Double floating point value. See<br> IntToChr for discussion. As always with floating point, the<br> representation is only approximate.}<br><br> asm<br> Push EDI<br> Push ESI<br><br> Mov ESI,EAX //Move address to EDX<br> Xor EDX,EDX<br> Xor EAX,EAX //Default return<br> Or ESI,ESI<br> Jz @Done<br> Mov ECX,[ESI-4] //String Length into ECX<br> Cmp ECX,8 //Less than 8 bytes?<br> Jb @Done //Yes, then abort<br><br> Mov EDX,[ESI] //put 4 MSB into EDX<br> BSwap EDX<br><br> Mov EAX,[ESI+4] //put 4 LSB into EAX<br> BSwap EAX<br>@Done:<br> Lea EDI,@Result<br> Mov [EDI],EAX<br> Mov [EDI+4],EDX<br><br> Pop ESI<br> Pop EDI<br> end; //and we're outta here
欧 欧阳炎炎 Unregistered / Unconfirmed GUEST, unregistred user! 2005-07-05 #4 去http://delphi.freemai.com上问一下