帮忙译一段VF程序----------从MSCOM中取数据!!!!!! (100分)

  • 主题发起人 主题发起人 king.gray
  • 开始时间 开始时间
K

king.gray

Unregistered / Unconfirmed
GUEST, unregistred user!
帮忙译成DELPHI程序!
local array1[3], buffer, s, kh, vsign, ntime, jh
s = ""
do while .t.
if this.parent.mscomm.inbuffercount > 0
vsign = .t.
buffer = this.parent.mscomm.input
array1 = buffer
if asc(array1[1]) != 13
s = s + array1[1]
endif
else
*没有数据或数据已经取完
if vsign
*数据已经取完
vsign = .f.
if len(allt(s)) = 11
ntime = left(allt(s), 2) + ":" + substr(allt(s), 3, 2)
kh = ((asc(substr(allt(s),5,1)) - 48) * 16
+ (asc(substr(allt(s),6,1)) - 48)) * 50000
+ val(right(allt(s),5))
kh = allt(str(kh))
 
3年前用过VB,现在忘了。
帮你顶一把
 
谢谢支持,一样有分,呵呵!!!!
 
你这是VB程序吗?
好象有一些语法错误!!!
 
这是VB的程序吗?怎么看着像VFP啊?

这段代码其实很简单啊,就是把mscomm的读缓冲区内的数据取完,再格式化一下,给你些函数对照(看了函数可以确信是VFP的代码了,VB从来没有this关键字的)和mscomm的说明,自己翻译吧。

VFP delphi
len length
left(s,?) copy(s,1,?)
allt trim
substr(s,?1,?2) copy(s,?1,?2)
asc ord
right(s,?) copy(s,length(s)-?,?)

在mscomm中,可以使用OnComm事件,当缓冲区满的时候触发该事件(设置合适的缓冲区就可以了,属性名忘记了,自己看一下VB的帮助),input返回的是widestring,不需要像上面代码一样做循环,在事件中取input值判断ASCII13结束就可以了。
 
谢谢Dirk的指证, 是我搞错了:(
标题已更正
 
我就说呢,我怎么一点看不懂。呵呵
 
多人接受答案了。
 
后退
顶部