有一个UCS2编码的txt文档,打开看是乱码,需要进行编码转换。
例程里面有VB的编码如下:
Dim tmp1 As Byte
Dim tmp2 As Byte
Dim rddata As String
Open App.Path & "\mt.txt" For Binary As #1
Do While Not EOF(1) ' 检查文件尾。
Get #1, , tmp1
Get #1, , tmp2
rddata = rddata + ChrW(tmp2 * CLng(256) + tmp1)
Loop
Close #1
请高人帮忙转换成delphi的,100分相送谢谢!
例程里面有VB的编码如下:
Dim tmp1 As Byte
Dim tmp2 As Byte
Dim rddata As String
Open App.Path & "\mt.txt" For Binary As #1
Do While Not EOF(1) ' 检查文件尾。
Get #1, , tmp1
Get #1, , tmp2
rddata = rddata + ChrW(tmp2 * CLng(256) + tmp1)
Loop
Close #1
请高人帮忙转换成delphi的,100分相送谢谢!
var
tmp1:byte;
tmp2:byte;
rdata:widestring;
f:TextFile;
begin
rdata:='';
AssignFile(F, '\mt.txt');
Reset(F);
while not Eof(F) do
begin
Read(F, tmp1);
read(F, tmp2);
rdata:=rdata+widechar(tmp2*256+tmp1);
end;
CloseFile(f);
end;
这句出错了, EInOutError with message 'Invalid numeric input'.
procedure TForm1.Button1Click(Sender: TObject);
var
tmp1:char;
tmp2:char;
rdata:widestring;
f:TextFile;
begin
rdata:='';
AssignFile(F, 'e:\temp\t.txt');
Reset(F);
while not Eof(F) do
begin
Read(F,tmp1);
read(F, tmp2);
rdata:=rdata+widechar(ord(tmp2)*256+ord(tmp1));
end;
CloseFile(f);
ShowMessage(rdata);end;
var
Buffer:array[0..300] of Byte;
Num:integer;
begin
...
AssignFile(F,'mt.txt');
Reset(F);
BlockRead(F,Buffer,2,Num);
...
end;谢谢了,分都给你吧:)
begin
s:=s+widechar(Buffer[i+1]*256+Buffer[i]);
i:=i+2;
end;
结贴!