VB程序代码转换为DELPHI代码 ( 积分: 100 )

  • 主题发起人 主题发起人 lh_shan
  • 开始时间 开始时间
L

lh_shan

Unregistered / Unconfirmed
GUEST, unregistred user!
以下代码在DELPHI 中如何表示
特别想知道的是 Chr$(x),out(x * 2 - 1) = Chr$(tmp(x)) & Chr$(tmp1(x))
该怎么转换,out()是 MSComm1.Output发送的值。

For x = 1 To 360
tmp(x) = z And &H7F '低 8位 送固定值
If z > 127 Then
If (z And &HFF) > 127 Then
tmp1(x) = ((z + &H4000) And &H7F00) / &HFF '当大于是127时,取高 8 位
Else
tmp1(x) = (z And &H7F00) / &HFF
End If
Else
tmp1(x) = 0
End If
Next x
Dim top1(1 To 360) As String * 2
For x = 1 To 30
top1(x) = Chr$(x) & Chr$(&HFF) 'top1() 为头标致
Next x
For x = 1 To 360
out(x * 2 - 1) = Chr$(tmp(x)) & Chr$(tmp1(x))
Next x
'以下为串口发送

Dim y As Integer
Dim y1 As Integer
Dim y2 As Integer
y1 = 1
y2 = 24
y = 1
For x = 1 To 30 'setc1 To setc2
send1: If MSComm1.OutBufferCount = 0 Then
MSComm1.Output = top1(x)
Else
GoTo send1
End If
If y < 721 Then
For y = y1 To y1 + 23
SEND2: If MSComm1.OutBufferCount = 0 Then
MSComm1.Output = out(y)
Else
GoTo SEND2
End If
Next y
y1 = y
End If
Next x '1--30组数据串口发送结
 
以下代码在DELPHI 中如何表示
特别想知道的是 Chr$(x),out(x * 2 - 1) = Chr$(tmp(x)) & Chr$(tmp1(x))
该怎么转换,out()是 MSComm1.Output发送的值。

For x = 1 To 360
tmp(x) = z And &H7F '低 8位 送固定值
If z > 127 Then
If (z And &HFF) > 127 Then
tmp1(x) = ((z + &H4000) And &H7F00) / &HFF '当大于是127时,取高 8 位
Else
tmp1(x) = (z And &H7F00) / &HFF
End If
Else
tmp1(x) = 0
End If
Next x
Dim top1(1 To 360) As String * 2
For x = 1 To 30
top1(x) = Chr$(x) & Chr$(&HFF) 'top1() 为头标致
Next x
For x = 1 To 360
out(x * 2 - 1) = Chr$(tmp(x)) & Chr$(tmp1(x))
Next x
'以下为串口发送

Dim y As Integer
Dim y1 As Integer
Dim y2 As Integer
y1 = 1
y2 = 24
y = 1
For x = 1 To 30 'setc1 To setc2
send1: If MSComm1.OutBufferCount = 0 Then
MSComm1.Output = top1(x)
Else
GoTo send1
End If
If y < 721 Then
For y = y1 To y1 + 23
SEND2: If MSComm1.OutBufferCount = 0 Then
MSComm1.Output = out(y)
Else
GoTo SEND2
End If
Next y
y1 = y
End If
Next x '1--30组数据串口发送结
 
主要是想知道vb的 Chr$(x),Chr$(tmp(x)) ,Chr$(tmp1(x))在delphi里的表示
chr$(56)可以表示为#56,但变量就不可以了,怎么解决。
 
Chr是取ASCII对应的字符
那么Chr$就是取对应的宽字符
下来,tmp应该是个变量,或者是定义的常数
例如Delphi里面的
var tmp : String = 'A,B,C,D,E,F,G';
当然变量的类型要看在你的VB代码了
发分吧
 
补充一点
tmp(x)
你要看清楚
x是循环数
那么,tmp(x)就是代表取tmp里面的第x个值
Delphi里面就是tmp[x]

另外,再给你转前面一小段,你看一下就明白了

for x := 1 to 360 do
begin
tmp[x] := z And $7F;
if (z > 127) And ((z And $FF) > 127) then
tmp1[x] := ((z + $4000) And $7F00) div $FF
else
tmp1[x] = (z And $7F00) div $FF
end;
 
delphi中可以 #34 ,可就不可以#tmp[x],常量可以转,变量怎么转呢
 
后退
顶部