ASCII码压缩,
对象:文本中的数字有个1.txt文件,文件内容:1234567891929394
用下面的代码运行后,得到2.txt文件,文件内容:"8N[\]^
想不通的是:1.txt文件大小16字节
2.txt文件大小10字节
但明明2.txt字符串的长度是8,应该是8字节啊?请指教
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
F: TextFile;
s:string;
temp,temp1:string;begin
i:=1;
temp:='';
temp1:='';
if OpenDialog1.Execute then
begin
AssignFile(F, OpenDialog1.FileName);
Reset(F);
Read(F, s);
while i<length(s) do
begin
temp:=temp+inttohex(strtoint(s[i]+s[i+1]),2);
i:=i+2;
end; i:=1;
edit1.Text:=inttostr(length(temp));
while i<length(temp) do
begin
edit1.Text:=inttostr(length(temp1));
temp1:=temp1+Char(StrToInt('$'+temp[i]+temp[i+1]));
edit1.Text:=inttostr(length(temp1));
i:=i+2;
end; AssignFile(F, '2.txt');
Rewrite(F);
Writeln(F,temp1);
CloseFile(F);
edit2.Text:=temp1;
end;
end;
对象:文本中的数字有个1.txt文件,文件内容:1234567891929394
用下面的代码运行后,得到2.txt文件,文件内容:"8N[\]^
想不通的是:1.txt文件大小16字节
2.txt文件大小10字节
但明明2.txt字符串的长度是8,应该是8字节啊?请指教
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
F: TextFile;
s:string;
temp,temp1:string;begin
i:=1;
temp:='';
temp1:='';
if OpenDialog1.Execute then
begin
AssignFile(F, OpenDialog1.FileName);
Reset(F);
Read(F, s);
while i<length(s) do
begin
temp:=temp+inttohex(strtoint(s[i]+s[i+1]),2);
i:=i+2;
end; i:=1;
edit1.Text:=inttostr(length(temp));
while i<length(temp) do
begin
edit1.Text:=inttostr(length(temp1));
temp1:=temp1+Char(StrToInt('$'+temp[i]+temp[i+1]));
edit1.Text:=inttostr(length(temp1));
i:=i+2;
end; AssignFile(F, '2.txt');
Rewrite(F);
Writeln(F,temp1);
CloseFile(F);
edit2.Text:=temp1;
end;
end;
Writeln(F,temp1);改为Write(F,temp1);就可以了我太不仔细了,谢谢你