Delphi - 读取文件签名并进行比较
Delphi - Reading a file signature and compare them
我在 delphi 方面需要一点帮助。我在很多地方都进行了搜索,但找不到我的问题的答案。
我如何读取文件签名(在我的例子中是 4 个字节)并将十六进制值放入字符串中?我的程序必须识别的签名是 $4E4553A1。
我需要测试文件,例如。 C:\Happy.bin。有这个签名。为了避免人们在我的软件中放入错误格式的文件。签名是其中的前 4 个字节。
非常感谢,英语不是我的第一语言,对于错误,我们深表歉意。爱你们所有人
这可能是最简单的。你调用它并传入文件名。
function CheckSignature(aFilename: string): Boolean;
var
signature: UInt32;
myFile: TFileStream;
begin
myFile := TFileStream.Create(aFilename, fmOpenRead or fmShareDenyWrite);
try
if myFile.Read(signature, SizeOf(signature)) = SizeOf(signature) then
Result := (signature = $A153454E)
else
Result := False;
finally
myFile.Free;
end;
end;
由于整数存储其数据的方式(小端),签名被反转。
要使用此函数,您可以这样调用它:
begin
if CheckSignature('C:\Happy.bin') then
ShowMessage('Matched')
else
ShowMessage('Didn''t match');
end;
我在 delphi 方面需要一点帮助。我在很多地方都进行了搜索,但找不到我的问题的答案。
我如何读取文件签名(在我的例子中是 4 个字节)并将十六进制值放入字符串中?我的程序必须识别的签名是 $4E4553A1。
我需要测试文件,例如。 C:\Happy.bin。有这个签名。为了避免人们在我的软件中放入错误格式的文件。签名是其中的前 4 个字节。
非常感谢,英语不是我的第一语言,对于错误,我们深表歉意。爱你们所有人
这可能是最简单的。你调用它并传入文件名。
function CheckSignature(aFilename: string): Boolean;
var
signature: UInt32;
myFile: TFileStream;
begin
myFile := TFileStream.Create(aFilename, fmOpenRead or fmShareDenyWrite);
try
if myFile.Read(signature, SizeOf(signature)) = SizeOf(signature) then
Result := (signature = $A153454E)
else
Result := False;
finally
myFile.Free;
end;
end;
由于整数存储其数据的方式(小端),签名被反转。
要使用此函数,您可以这样调用它:
begin
if CheckSignature('C:\Happy.bin') then
ShowMessage('Matched')
else
ShowMessage('Didn''t match');
end;