有哪位高手能指点一下我,将vb的程序改写成delphi,急急急!!! ( 积分: 200 )

K

kerwin

Unregistered / Unconfirmed
GUEST, unregistred user!
Dim tmp1 As Byte
Dim tmp2 As Byte
Dim rddata As String

Open "C:/wz.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

'姓名
nametmp = Mid(rddata, 1, 15)
'性别
sextmp = Mid(rddata, 16, 1)

这段程序就是将GB 13000的UCS-2进行存储的的文本转换成汉字!
哪位大哥能帮帮小弟,小弟先谢了!!!
 
Dim tmp1 As Byte
Dim tmp2 As Byte
Dim rddata As String

Open "C:/wz.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

'姓名
nametmp = Mid(rddata, 1, 15)
'性别
sextmp = Mid(rddata, 16, 1)

这段程序就是将GB 13000的UCS-2进行存储的的文本转换成汉字!
哪位大哥能帮帮小弟,小弟先谢了!!!
 
1、CLng把值转换为 Long
2、.ChrW 函数返回与指定的字符代码相关联的字符

这个VB函数就是把一个文本文件C:/wz.txt的每两行取出来,通过
rddata = rddata + ChrW(tmp2 * CLng(256) + tmp1)运算后,
再通过nametmp = Mid(rddata, 1, 15)
转换成汉字。有一个函数ChrW,你看看D中是否有相同的函数就行了。
其它的应该没问题
 
// 我研究了半天,总算可以了,是有些概念上的问题
//-------------------------------------------------------------
// 先这样做吧,至于为什么, 不明白再问我

procedure TForm1.Button2Click(Sender: TObject);
var f : file of word;
w : word;
uchar : widechar;
wst : widestring;
namest : widestring;
sexst : widestring;
begin
assignfile(f, 'c:/wz.txt');
reset(f);
wst := '';
while not eof(f) do
begin
read(f,w);
uchar := widechar(w);
wst := wst + uchar;
end;
closefile(f);

//showmessage(wst);
namest := copy(wst, 1,15);
sexst := copy(wst, 16,1);
showmessage('姓名:'+namest+' 性别:'+sexst+'<');
end;
 
assignfile(f, 'd:/temp.uxt');//txt
 
天河流星:非常感谢你对问题的答复,我已经按照你的方法解决了问题,再一次谢谢你,我很想和你交个朋友,这样可以在技术上跟你再切磋切磋,希望你能跟我联系,谢谢!

我叫石锋,电话是:13911232405
email :shifeng1978@hotmail.com
 
顶部