600分(心痛啊),vb翻译成delphi.三句话。 (200分)

  • 主题发起人 主题发起人 zhaohai9
  • 开始时间 开始时间
Z

zhaohai9

Unregistered / Unconfirmed
GUEST, unregistred user!
一句100分:
第一句:
strCheckSum = Hex((intSum / &H10) Mod &H10) & Hex(intSum Mod &H10)
第二句:
intEndPoint := InStr(1, strUnPackData, ETX);
第三句:
intCmdType = CInt(Mid(strUnPackedData, intDataBegin, intDataEnd - intDataBegin))
 
第二句
Instr,返回Variant(Long),指定一字符串在另一字符串中最先出现的位置。
语法:
InStr([start,]string1,string2[,compare])
InStr函数的语法具有下面的参数:
部分说明
start:可选的。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。如果start包含Null,将发生错误。
如果指定了compare参数,则一定要有start参数
string1:必需的。接受搜索的字符串表达式
string2:必需的。被搜索的字符串表达式
compare:可选的。指定字符串比较。如果compare是Null,将发生错误。如果省略compare,OptionCompare的设置将决定比较的类型设置
compare参数设置为:
常数 值 描述
vbUseCompareOption -1 使用OptionCompare语句设置执行一个比较。
vbBinaryCompare 0 执行一个二进制比较。vbTextCompare1执行一个按照原文的比较。
vbDatabaseCompare 2 仅适用于MicrosoftAccess,执行一个基于数据库中信息的比较。

Delphi如没这个函数,自已写一个得了。
 
你帮我写,200分给你。
 
好吧...为了这200分,working...
 
1.strCheckSum := inttoHex(intSum mod 256);
2.intEndPoint := pos(strUnPackData, ETX);
3.copy是什么?vb里没这个函数呀。
intCmdType = strtoint(Copy(strUnPackedData, intDataBegin, intDataEnd - intDataBegin));//只能这么写了
 
第二句:
intEndPoint = InStr(1, strUnPackData, ETX)
intEndPoint := pos(ETX,strUnPackData);
对了,zhaohai9,还是老规矩,我不要分。OK!
 
Delphi有这个函数
function Pos(Substr: string; S: string): Integer;
 
timerri的第一句至少应该加一个参数。
第二句两个字符串顺序?
 
hehe, 还是熟手手快,我只查一下Delphi的帮助,就已经有两个人答了:)
 
timerri:
第一句好象不对头呀?
 
至少应该这样玩:
strCheckSum := inttoHex(intSum mod 256,1);
 
第一句VB中,是什么意思?
 
如果你有VB和Delphi,可以直接执行两个,看结果是否一致呀。。。
 
唉....年老体衰.....错误不断....这都是delphi直接就显示参数提示的错......
接受大家批评
不过第一句最好还是strCheckSum := inttoHex(intSum mod 256,2);
 
strCheckSum := inttoHex((intSum / 16) Mod 16) and inttoHex(intSum Mod 16);
第二句:
intEndPoint := pos(strUnPackData, ETX);
第三句:
intCmdType := round(copy(strUnPackedData, intDataBegin, intDataEnd - intDataBegin));
 
安达和timerri关于第一句怎么不同?
哪位好心人帮我讲讲,第一句是什么意思?
 
可以给我完整的程序看看吗?
aveli@21cn.com
 
1:strCheckSum:=inttohex(intsum mod 256,2);
2:intEndPoint := pos(strUnPackData, ETX);
3:intCmdType = strtoint(Copy(strUnPackedData, intDataBegin, intDataEnd - intDataBegin));
第一句话的意思是:
等于号右边分两部分字符串:第一部分得到二进制intsum的倒数三四位,先整除16,再取
16的余数,第二部分,取二进制intsum的最后两位,即取16的余数,
合起来应当是取256的余数,即:intsum mod 256
 
spcomm串口通讯:
soh:=$1;
stx:=$2;
etx:=$3;
strTemp := SOH + '001' + '100' + STX + edit1.Text + ETX;
comm1.writecommdata(pchar(strtemp),length(strtemp));
此段程序发送的是pchar字符串,但我的仪表要接受的是ASCII码,我该如何发送?
edit1.text是个不定长的字符串如(W820=20.3或X086或X077或X023“ESC”ACDEFDFDFFFFF等等)
我该如何发送?
 
多人接受答案了。
 
后退
顶部