在 delphi 7 中使用合并十六进制值 + 编辑框值(文本)保存文本文件

问题描述 投票:0回答:0

我使用这些代码保存文本文件没有任何问题......

    FileName := editbox1.Text + '.txt';
    Lines := TStringList.Create;
try
    Lines.Add('Wlcome to my Home!!!');
    Lines.SaveToFile(FolderPath + FileName);
    Lines.LoadFromFile(FolderPath + FileName);

finally
      Lines.Free;
end;

我保存文本文件没有问题,但是当它与十六进制值合并时,文本文件的所有正常文本都乱七八糟,无法读取。 例如金额: FFFEFF15410042004300 最后,以下值应存储在最终文本文件中(当在文本编辑器中打开文本文件时,例如 notepad++ 或 windows 记事本): ᗿABC 或 (....A.B.C.)

我有两个编辑框,一个是十六进制值,一个是纯文本,我打算将两个编辑框并排保存在一个文本文件中。当然,如果我将这两个Hex值和纯文本显示为Show Message,是没有问题的,但是保存文本文件就有问题了!

另一个问题是我正在使用 Hex Workshop,它将 Hex 值显示为两位数。这是我的问题。例如,如果我想要 15 Hex 的值,即十进制的 21,我是否应该将其更改为 C Hex,即十进制的 12?注意C是一位,我要改两位,那么C前面的值应该填什么值,这样值变成12就没有问题了?! 请注意以下示例: FFFEFF15410042004300 我想更改为以下值 FFFEFF1C410042004300 上面例子中C前面的值是1,当我把它改成0的时候,结果并没有变成12!!

我使用这些代码进行十六进制转换:

function String2Hex(const Buffer: AnsiString): string;
begin
  SetLength(Result, Length(Buffer) * 2);
  BinToHex(PAnsiChar(Buffer), PChar(Result), Length(Buffer));
end;

function Hex2String(const Buffer: string): AnsiString;
begin
  SetLength(Result, Length(Buffer) div 2);
  HexToBin(PChar(Buffer), PAnsiChar(Result), Length(Result));
end;


var
  hex: string;
  str: AnsiString;
begin
  hex := String2Hex('stackoverflow');
  ShowMessage(hex); // shows '737461636B6F766572666C6F77'
  str := Hex2String(hex);
  ShowMessage(str); // shows 'stackoverflow'
end;

我从以下链接获得了帮助,但我需要更多指导: Delphi Tokyo - 函数:字符串转十六进制和十六进制转字符串

当我在像 Notepad++ 这样的文本编辑器中打开保存的文本文件时,我希望它显示我在问题中描述的值!

delphi delphi-7
© www.soinside.com 2019 - 2024. All rights reserved.