代码目的:从c:\a.txt读出文字,要把里面的每个字都转成unicode形式存起来,可是我这个怎么总是只转换两个字就不转了?
procedure TForm1.Button4Click(Sender: TObject);
var
k:string;
sl:TStringlist;
sltemp:TStringList;
i:integer; //遍历每行
j:integer; //遍历每行以空格拆分的字符串
begin
sl:=TStringlist.Create; //存储载入的文本文件
sltemp:= TStringlist.Create; //存储每行的内容
sl.LoadFromFile('c:\a.txt'); //把文件载入变量sl
for i:=0 to sl.Count-1 do //逐行处理
begin
sltemp.Clear;
sltemp.CommaText:=sl.Strings[i];
for j:=0 to sltemp.count-1 do
begin
//取出并显示每个字符串
k:=(Format('%x%x',[ord(sltemp.strings[j][1]),ord(sltemp.strings[j][2])]));
memo1.Lines.add(k);
end;
end;
sl.Free;
sltemp.Free;
end;
不太明白你想做什么。将你的代码略加修改了一下,你看看是不是你想要的。
procedure TForm1.Button1Click(Sender: TObject);
var s1,s2:TStringList;
i,j:Integer;
k:String;
begin
s1 := TStringList.Create;
s2 := TStringList.Create;
try
s1.LoadFromFile('a.txt');
for i := 0 to s1.Count - 1 do
begin
s2.Clear;
j := 1;
s2.Text := s1.Strings[i];
k := '';
while j <= Length(s2.Text) do
begin
k := k + Format('%x%x',[Ord(s2.Text[j]),Ord(s2.Text[j+1])]);
inc(j,2);
end;
Memo1.Lines.Add(k);
end;
finally
s1.Free;
s2.Free;
end;
end;
function EnCrypt(s:TStringList):TStringList;
var i,j:Integer;
s1,s2:String;
begin
Result := nil;
if s = nil then
Exit;
Result := TStringList.Create;
for i := 0 to s.Count - 1 do
begin
s1 := s.Strings[i];
s2 := '';
for j := 1 to Length(s1) do
begin
s2 := s2 + IntToHex(Ord(s1[j]),2);
end;
Result.Add(s2);
end;
end;
function DeCrypt(s:TStringList):TStringList;
var i,j:Integer;
s1,s2:String;
begin
Result := nil;
if s = nil then
Exit;
Result := TStringList.Create;
for i := 0 to s.Count - 1 do
begin
s1 := s.Strings[i];
s2 := '';
j := 1;
while j <= Length(s1) do
begin
s2 := s2 + Char(StrToInt('$' + s1[j] + s1[j+1]));
inc(j,2);
end;
Result.Add(s2);
end;
end;