回复 9楼 liunis
strtofile
以下是引用sam_jiang在2023-4-19 13:43:32的发言:
用你的代码读取一个2.79M的图片,也是很卡,可能是我的电脑问题?看来还是需要分页显示。。。
不过你的代码真的简洁,很受启发,谢谢!
用你的代码读取一个2.79M的图片,也是很卡,可能是我的电脑问题?看来还是需要分页显示。。。
不过你的代码真的简洁,很受启发,谢谢!
FILETOSTR极限应该是<16M,但16M对FILETOSTR来说也是“秒杀”。
2.79M就有2925527个字节,每16字节一条记录就有182845条记录多点,循环写182845条记录也就1、2秒。
问题在 SUBSTR(cs,i,16),SUBSTR不适合用来处理较大的字符串。就算每次都是SUBSTR(cs,1,16)也一样,VFP有可能每次都用副本来搜寻,慢在处理副本,否则不可能会那么差劲。
对文件大小不确定,要用低级文件函数来处理。3M左右耗时3、4秒,还可以接受。
程序代码:
CREATE CURSOR tt (字节偏移 c(8),f0 c(2),f1 c(2),f2 c(2),f3 c(2),f4 c(2),f5 c(2),f6 c(2),f7 c(2),; f8 c(2),f9 c(2),fa c(2),fb c(2),fc c(2),fd c(2),fe c(2),ff c(2)) fn = GETFILE() IF !FILE(fn) RETURN ENDIF fp = FOPEN(fn) i = 0 DO WHILE ALINES(arr,RIGHT(TRANSFORM(i,"@0"),8)+TRANSFORM(STRCONV(FREAD(fp,16),15),"@R "+REPLICATE(" ##",16)),15,0h20) > 1 INSERT INTO tt FROM ARRAY arr i = i + 16 ENDDO FCLOSE(fp) SELECT * FROM tt