比较16进制字符串与读文件的问题(55分)

  • 主题发起人 主题发起人 bincle
  • 开始时间 开始时间
B

bincle

Unregistered / Unconfirmed
GUEST, unregistred user!
NO1.怎么样从一个文件中读出前10个字节,并写入一个数组中,例如:
abc:array[0...9] of byte = ($48,$40...) ;

NO2.怎么样比较一串16进制字符串
 
var
F:File;
Buf:char;
abc:array[0..9] of char;
I:integer;
begin
AssignFile(F,'TxtFile.txt');
Reset(F,1);
for I:=0 to 9 do
begin
abc:=Read(F,Buf);
end;
CloseFile(F);
end;
 
我不是要字符串,而是要文件的前16位字节
 
const Len=xxx;
var f:file;
Buf:array[1..Len]of byte;
begin
AssignFile(f,FileName);
Reset(f,1);
try
BlockRead(f,Buf,Len);
finally
CloseFile(f);
end;
end;

2:
你要什么样的比较结果?不等还是大于小于都有
 
我有另一段16进制字符串,要跟读出来的字符串相比较,是否一致

比如:

$00,$31,$6F,$88,....



$21,$22,$6F,$99,...

如果两个字符串完全一致的话,就正确
 
另外,我不知道这样行不行?
...
Var F:TFileStream;
begin
F.Seek($00,soFromBeginning);
F.Read(title,16);
end;

title定义为一个数组
 
Uses SysUtils;
CompareMem函数可以满足你的要求
 
to kang

function CompareMem(P1, P2: Pointer; Length: Integer): Boolean; assembler;
好像是在指定内存范围Length比较两个指镇的内容是否相同,是二进制的比较方法

能不能给出一段代码来参考呢?谢谢你了
 
你另外的字符串为 s
读出的数组为title title:array[1..16]of byte

if (Length(s)=16)and CompareMem(@s[1],@tilte[1],16) then 是相同的
else 不相同
 
后退
顶部