delphi读取文件内容的问题
delphi中,我想读取一个文件里面的16进制数,并且把前面的$去掉应该如何做到。?非16进制数不读取文件里面有内容a,$03F2,$33F6,b,$02F2,$31F6...
delphi中,我想读取一个文件里面的16进制数,并且把前面的$去掉应该如何做到。?
非16进制数不读取
文件里面有内容
a,$03F2,$33F6,
b,$02F2,$31F6,
a,$03F2,$33F6,
b,$02F2,$31F6,
a,$03F2,$33F6,
b,$02F2,$31F6,
a,$03F2,$33F6,
b,$02F2,$31F6,
a,$03F2,$33F6,
b,$02F2,$31F6,
a,$03F2,$33F6,
b,$02F2,$31F6, 展开
非16进制数不读取
文件里面有内容
a,$03F2,$33F6,
b,$02F2,$31F6,
a,$03F2,$33F6,
b,$02F2,$31F6,
a,$03F2,$33F6,
b,$02F2,$31F6,
a,$03F2,$33F6,
b,$02F2,$31F6,
a,$03F2,$33F6,
b,$02F2,$31F6,
a,$03F2,$33F6,
b,$02F2,$31F6, 展开
4个回答
展开全部
//获取16进制数,你可以将没用的信息都替换掉,然后在重新组合。
HexListTxt.LoadFromFile(aStr);
for i:= 0 to HexListTxt.Count - 1 do
begin
sNewStr:= StringReplace(HexListTxt[i], '0x', '', [rfReplaceAll]);
sNewStr:= StringReplace(sNewStr, ',', '', [rfReplaceAll]);
ResultList.Add(sNewStr);
end;
//初始化HexListTxt
ConvertList:= TStringList.Create;
for i:= 0 to ResultList.Count - 1 do
begin
tmpStr:= ResultList[i];
for j:= 0 to 7 do
begin
ConvertList.Add(Copy(tmpStr, j * 4 + 1, 4));
end;
end;
HexListTxt.Text:= ConvertList.Text;
ConvertList.Free;
// Memo1.Text:= HexListTxt.Text;
ResultList.Free;
HexListTxt.LoadFromFile(aStr);
for i:= 0 to HexListTxt.Count - 1 do
begin
sNewStr:= StringReplace(HexListTxt[i], '0x', '', [rfReplaceAll]);
sNewStr:= StringReplace(sNewStr, ',', '', [rfReplaceAll]);
ResultList.Add(sNewStr);
end;
//初始化HexListTxt
ConvertList:= TStringList.Create;
for i:= 0 to ResultList.Count - 1 do
begin
tmpStr:= ResultList[i];
for j:= 0 to 7 do
begin
ConvertList.Add(Copy(tmpStr, j * 4 + 1, 4));
end;
end;
HexListTxt.Text:= ConvertList.Text;
ConvertList.Free;
// Memo1.Text:= HexListTxt.Text;
ResultList.Free;
展开全部
var strList:TStrings;
result:String;
begin
strList:=TStringList.Create;
strList.LoadFromFile(文件路径);
result:=StringReplace(strList.Text,'$','',[rfReplaceAll]); //去掉文件内容中的$
...
end;
你的要求是可以达到的,只是并不是很了解你想要的效果,比如:读出到哪里去。
如果需要,请Hi我:qiao_liu,随时回答你的疑问。
result:String;
begin
strList:=TStringList.Create;
strList.LoadFromFile(文件路径);
result:=StringReplace(strList.Text,'$','',[rfReplaceAll]); //去掉文件内容中的$
...
end;
你的要求是可以达到的,只是并不是很了解你想要的效果,比如:读出到哪里去。
如果需要,请Hi我:qiao_liu,随时回答你的疑问。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
下面是经过测试的代码,供您参考。
//分析单行文本
procedure TForm1.AnalyseLine(ALine: string);
var
Idx, Len: Integer;
ch: Char;
strHex: string;
value: Integer;
begin
Len := Length(ALine);
Idx := 1;
while Idx <= Len do
begin
ch := ALine[idx];
if ch = '$' then
begin
Inc(Idx);
strHex := '$';
while Idx <= Len do
begin
ch := ALine[idx];
if ch in [',', #10, #13] then
Break;
strHex := strHex + ch;
Inc(idx);
end;
if (strHex <> '$') and TryStrToInt(strHex, value) then
begin
//读取到一个十六进制数据value
Memo2.Lines.Add(IntToHex(value, 4));
end;
end;
Inc(idx);
end;
end;
//分析多行文本
procedure TForm1.AnalyseLines(ALines: TStrings);
var
I: Integer;
begin
for I := 0 to ALines.Count - 1 do
AnalyseLine(ALines[I]);
end;
//分析文本文件
procedure TForm1.LoadFile(Afilename: string);
var
strs: TStringList;
begin
strs := TStringList.Create;
try
strs.LoadFromFile(AFilename);
AnalyseLines(strs);
finally
strs.Free;
end;
end;
//分析单行文本
procedure TForm1.AnalyseLine(ALine: string);
var
Idx, Len: Integer;
ch: Char;
strHex: string;
value: Integer;
begin
Len := Length(ALine);
Idx := 1;
while Idx <= Len do
begin
ch := ALine[idx];
if ch = '$' then
begin
Inc(Idx);
strHex := '$';
while Idx <= Len do
begin
ch := ALine[idx];
if ch in [',', #10, #13] then
Break;
strHex := strHex + ch;
Inc(idx);
end;
if (strHex <> '$') and TryStrToInt(strHex, value) then
begin
//读取到一个十六进制数据value
Memo2.Lines.Add(IntToHex(value, 4));
end;
end;
Inc(idx);
end;
end;
//分析多行文本
procedure TForm1.AnalyseLines(ALines: TStrings);
var
I: Integer;
begin
for I := 0 to ALines.Count - 1 do
AnalyseLine(ALines[I]);
end;
//分析文本文件
procedure TForm1.LoadFile(Afilename: string);
var
strs: TStringList;
begin
strs := TStringList.Create;
try
strs.LoadFromFile(AFilename);
AnalyseLines(strs);
finally
strs.Free;
end;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询