回复 9楼 liunis
strtofile
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
DECLARE long _strdup IN msvcrt as apiStrdup string DECLARE long free IN msvcrt as apiFree long 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 cs = FILETOSTR(fn) ps = apiStrdup(cs) p = ps n = LEN(cs) m = 0 DO WHILE m < n ALINES(arr,RIGHT(TRANSFORM(m,"@0"),8)+TRANSFORM(STRCONV(SYS(2600,p,IIF((n-m)<16,n-m,16)),15),"@R "+REPLICATE(" ##",16)),15,0h20) INSERT INTO tt FROM ARRAY arr p = p + 16 m = m + 16 ENDDO apiFree(ps) SELECT * FROM tt
DECLARE long malloc IN msvcrt as apiMalloc long DECLARE long free IN msvcrt as apiFree long 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 cs = FILETOSTR(fn) n = LEN(cs) ps = apiMalloc(n) IF ps == 0 ? "分配内存失败" RETURN ENDIF p = ps SYS(2600,p,n,cs) m = 0 DO WHILE m < n ALINES(arr,RIGHT(TRANSFORM(m,"@0"),8)+TRANSFORM(STRCONV(SYS(2600,p,IIF((n-m)<16,n-m,16)),15),"@R "+REPLICATE(" ##",16)),15,0h20) INSERT INTO tt FROM ARRAY arr p = p + 16 m = m + 16 ENDDO apiFree(ps) SELECT * FROM tt