VB程序员博客

VB程序开发

1. int GDW_GetVehicleInfo2AD( char* pchPlate,  
char* pchTime,
BYTE* pByteBinImage,
BYTE* pBytePlateJpeg,
UINT &dwPlateJpegSize,
BYTE* pByteCarJpeg,  
UINT &dwCarJpegSize);
函数说明
收到当前数据准备好消息后,接收当前的车辆信息数据。
备注:
接收到当前数据准备好消息后调用,各参数所需内存在上端程序中申请。
车牌号至少需分配20个字节。
二值图至少分配280个字节。
车牌JPEG图至少分配5*1024个字节。
近景车辆JPEG图至少分配100*1024个字节。
参数 说明
char* pchPlate,[OUT]车牌号码
char* pchTime,[OUT]车辆抓拍时间,格式为:yyyyMMddHHmmss
BYTE* pByteBinImage,[OUT]车牌二值图
BYTE* pBytePlateJpeg,[OUT]车牌JPEG图
UINT &dwPlateJpegSize,[OUT]车牌JPEG图的大小
BYTE* pByteCarJpeg,[OUT]近景车辆JPEG图
UINT &dwCarJpegSize,[OUT]近景车辆JPEG图的大小
返回值 说明
0 获取数据成功.完整数据。
1 获取数据成功.只有车牌数据。
2 获取数据失败(原因:未连接)
3 获取数据失败(原因:参数输入有误,含有NULL指针).
4 获取数据失败(原因:网络数据未准备好).
5 获取数据失败(原因:串口取数据失败).
6 获取数据失败(原因:串口数据未准备好).
7 获取数据失败(原因:网络和串口都不可用).

这个没写全就发出去了


我用的是vb6企业版的, 在外接程序-aip浏览器那里,然后 选择声明-加载文本文件,有三个文件  

APILOAD.txt,MAPI32.TXT,WIN32API.TXT ,所有的API函数都在这三个文本里面吗,

我看到别人的声明里面有CreateToolhelp32Snapshot这个函数,我却找不到

Public Declare Function CreateToolhelp32Snapshot Lib "kernel32 " (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long 
还有VirtualAllocEx 我也找不到, 这些是在哪里找的装VC的MSDN这个不可能全的 你只能是用一个找一个,API的数量不断地再增大,因为大家可以自己编写,我们只要掌握主要的那几个就好了有两个地方可以取得这些信息:一是装一个离线MSDN,二是去http://msdn.microsoft.com/其实API不是VB的,而是系统提供的,API => APPLICATION INTERFACE 应用程序接口
也就是系统提供给应用程序调用的函数接口.
有一部分是公开的比较常用的,还有一些是隐藏的很少用的, 所以真要想知道"全部"的API的话, WINDOWS开发手册再加上网络或许才有点希望.呵呵,API会用常规的就差不多了谢谢大家了


你们好!呵呵呵,我自学不精,经过别人推荐来到这里问问大家。多谢了!想了很长时间都没有想出来。
程序是这样的
Private Command1.Click()
shell app.path & "Test.bat"
End Sub
BAT文件是这样的
copy Repairmci32.ocx %systemroot%system32
regsvr32 /s %systemroot%system32mci32.ocx
copy /Y repair*.* %systemroot%system32 
font
pause
其中font是一个可执行程序,全名font.exe
可是程序执行时候BAT运行不正常。但是直接双击BAT文件可以正常使用。
百思不得其解,请大家指教。。。用命令行执行不会有问题具体方法请看下面的链接。
http://topic.csdn.net/t/20050201/15/3768662.html按理说是不会你可以这样做下简单的测试
在批处理中使用Pause和echo来做表识看执行到哪出错的你把出错提示贴出来,不一定是不是bat问题…

应该先调用 cmd.exe

shell cmd.exe 空一格后跟着bat的路径

因为没调用 cmd 才会不执行!shell cmd.exe /c 空一格后跟着bat的路径哦,多谢大家,我第一次来,如果我提问不太好请见谅~
我试试看,不行我再来发那就是
shell "cmd.exe Myproject.bat"
对了,没错
不过似乎一样的方式去打开。。。shell只能执行可执行文件,bat不是可执行文件只是特定的命令集,所以要用cmd.exe执行。哦!Tiger_Zhao说的很有道理!明白了!不知道怎么结贴或者结束问题?论坛第一次接触,不好意思,见笑了…
明白了,多谢大家~多谢多谢,明白了!大家真是热情。不知道怎么采纳或者怎么处理帖子?〖管理贴子〗按钮进去5分啊!! 强悍!! 我第一个答对的! 怎么说也应该有1分吧!

不错啊! 有收获。。。啊! 晕! 忘记了这个帐号不是我的!

问题解决了..怎么不放分?
Rtn = Shell("C:WINDOWSsystem32cmd.exe /c E:commit projectConfigFileAutoMakeVer.bat", vbNormalFocus)

为什么我这样些还是不行,总是一闪而过,如果把/c去掉,那么就会弹出cmd窗口,但是没有执行bat 只是改了reboot路径 变成
E:vb toolsprjDopacket>
没有执行bat,不过我的VB工程是E:vb toolsprjDopacket这个路径,请大家看看怎么回事


原型如下:
/*——————————–交易上传结构体定义———————————*/
struct TransUp 
{
BYTE OperateType[Operate_T_L]; //操作类型
BYTE TransType[Trans_T_L]; //交易类型
BYTE CardType[Card_T_L]; //卡类型
BYTE CashRegNo[CashReg_N_L]; //收银机编号
BYTE CasherNo[Casher_N_L]; //柜员号
BYTE Amount[Amount_L]; //金额
BYTE CashTraceNo[CashTrace_N_L]; //收银流水号
BYTE OriginCashTraceNo[CashTrace_N_L]; //原收银流水号
BYTE Reserved[48]; //预留字段
};

/*——————————交易查询,返回结构体定义——————————*/
struct TransDown 
{
BYTE OperateType[Operate_T_L]; //操作类型
BYTE TransType[Trans_T_L]; //交易类型
BYTE CardType[Card_T_L]; //卡类型
BYTE ResponseCode[ResponseCode_L]; //返回码
BYTE ResponseMsg[ResponseMsg_L]; //返回信息
BYTE CashRegNo[CashReg_N_L]; //收银机编号
BYTE CasherNo[Casher_N_L]; //柜员号
BYTE Amount[Amount_L]; //金额
BYTE SettleNum[Settel_N_L]; //结算批次号
BYTE MerchantID[MerchantID_N_L]; //商户号
BYTE MerchantName[MerchantName_L]; //商户名称
BYTE TerminalID[TerminalID_N_L]; //终端号
BYTE CardNo[Card_N_L]; //卡号
BYTE Exp_Date[ExpDate_L]; //有效期
BYTE BankNo[Bank_N_L]; //发卡行标识
BYTE TransDate[TransDate_L]; //交易日期
BYTE TransTime[TransTime_L]; //交易时间
BYTE Auth_Code[AuthCode_N_L]; //授权号
BYTE SysRefNo[Sysref_N_L]; //系统参照号
BYTE CashTraceNo[CashTrace_N_L]; //收银流水号
BYTE OriginCashTraceNo[CashTrace_N_L]; //原收银流水号
BYTE SysTraceNo[SysTrace_N_L]; //系统流水号
BYTE OriginSysTraceNo[SysTrace_N_L]; //原系统流水号
BYTE Reserved[48]; //预留字段
};

void Trans (int com,char * TransUp, char * TransDown);

请问各位大侠在VB中如何调用该函数及参数传递

急急急,在线等!

先谢谢啦!!!

Operate_T_L这些也要原型才行

我也这样试过,但_TransUp中有些值未传递过去。Private Declare Sub Trans Lib "DLL 名称" (ByVal com As Long, ByRef TransUp As Byte, ByRef TransDown As Byte)

Dim tu(8) As Byte
Dim td(23) As Byte
Dim nCom As Long

nCom = 1
Call Trans(nCom, tu(0), td(0))
谢谢各位,此问题已解决,原来是DLL还需调用INI文件。


原型如下:
/*——————————–交易上传结构体定义———————————*/
struct TransUp 
{
BYTE OperateType[Operate_T_L]; //操作类型
BYTE TransType[Trans_T_L]; //交易类型
BYTE CardType[Card_T_L]; //卡类型
BYTE CashRegNo[CashReg_N_L]; //收银机编号
BYTE CasherNo[Casher_N_L]; //柜员号
BYTE Amount[Amount_L]; //金额
BYTE CashTraceNo[CashTrace_N_L]; //收银流水号
BYTE OriginCashTraceNo[CashTrace_N_L]; //原收银流水号
BYTE Reserved[48]; //预留字段
};

/*——————————交易查询,返回结构体定义——————————*/
struct TransDown 
{
BYTE OperateType[Operate_T_L]; //操作类型
BYTE TransType[Trans_T_L]; //交易类型
BYTE CardType[Card_T_L]; //卡类型
BYTE ResponseCode[ResponseCode_L]; //返回码
BYTE ResponseMsg[ResponseMsg_L]; //返回信息
BYTE CashRegNo[CashReg_N_L]; //收银机编号
BYTE CasherNo[Casher_N_L]; //柜员号
BYTE Amount[Amount_L]; //金额
BYTE SettleNum[Settel_N_L]; //结算批次号
BYTE MerchantID[MerchantID_N_L]; //商户号
BYTE MerchantName[MerchantName_L]; //商户名称
BYTE TerminalID[TerminalID_N_L]; //终端号
BYTE CardNo[Card_N_L]; //卡号
BYTE Exp_Date[ExpDate_L]; //有效期
BYTE BankNo[Bank_N_L]; //发卡行标识
BYTE TransDate[TransDate_L]; //交易日期
BYTE TransTime[TransTime_L]; //交易时间
BYTE Auth_Code[AuthCode_N_L]; //授权号
BYTE SysRefNo[Sysref_N_L]; //系统参照号
BYTE CashTraceNo[CashTrace_N_L]; //收银流水号
BYTE OriginCashTraceNo[CashTrace_N_L]; //原收银流水号
BYTE SysTraceNo[SysTrace_N_L]; //系统流水号
BYTE OriginSysTraceNo[SysTrace_N_L]; //原系统流水号
BYTE Reserved[48]; //预留字段
};

void Trans (int com,char * TransUp, char * TransDown);

请问各位大侠在VB中如何调用该函数及参数传递

急急急,在线等!

先谢谢啦!!!

Operate_T_L这些也要原型才行

我也这样试过,但_TransUp中有些值未传递过去。Private Declare Sub Trans Lib "DLL 名称" (ByVal com As Long, ByRef TransUp As Byte, ByRef TransDown As Byte)

Dim tu(8) As Byte
Dim td(23) As Byte
Dim nCom As Long

nCom = 1
Call Trans(nCom, tu(0), td(0))
谢谢各位,此问题已解决,原来是DLL还需调用INI文件。


第一帖 
http://topic.csdn.net/u/20100714/21/2eb7710e-a691-482b-8f43-0b2268283cf8.html

第二帖
http://topic.csdn.net/u/20100715/10/888317a8-52a4-40ea-8817-03d01e44546d.html

现在属于第三帖,这贴主要为散分,也是解决了函数指针在VB IDE下使用不了的bug.

完整源码可以在老马的论坛下载,地址是
http://www.m5home.com/bbs/thread-3965-1-1.html

在这感谢老马,以及各位VB爱好者们。恩对了还忘记感谢某位了,也许就是第一个回我帖的人。………..接分,顶!
支持,顶!接分,顶!第一帖  
http://topic.csdn.net/u/20100714/21/2eb7710e-a691-482b-8f43-0b2268283cf8.html

第二帖
http://topic.csdn.net/u/20100715/10/888317a8-52a4-40ea-8817-03d01e44546d.html

现在属于第三帖,这贴主要为散分,也是解决了函数指针在VB IDE下使用不了的bug.

完整源码可以在老马的论坛下载,地址是
http://www.m5home.com/bbs/thread-3965-1-1.html第一楼要了200了,剩下的后十楼没楼10分,再后面的没了接分的来了,哈哈…………………………………….
…………………………………….
…………………………………….
…………………………………….
…………………………………….
…………………………………….
…………………………………….
…………………………………….
…………………………………….
…………………………………….
…………………………………….
…………………………………….
…………………………………….

接分了~那我还有份啊.
小辉辛苦了,注意防暑哟。辛苦,西西换头像了弄点水分……<
<
<


如题
 vc的加“\\.\”即可

vb的却不行,应该怎么办?
COM13以上没用过。。。串口号大于两位数的。。。。怎么用啊是串口号大于等于两位数的用api直接调用串口,不能用mscomm控件的  
http://download.csdn.net/source/1993754

看看我用API实现的串口调试器,试一试有没有你说得问题:
http://download.csdn.net/source/1339593


表格如下:

地区 组别 分数

深圳 开发 0.23
南京 开发 0.86
深圳 测试 0.46
南京 测试 0.01
深圳 开发 0.23
南京 测试 0.56
南京 开发 0.96
深圳 测试 0.03

需要的效果,类似如:筛选出属于“深圳”地区并且是“开发”组的,并统计出分数和

需要一个公式!!!谢谢

<
这个公式没有问题,你使用有问题

很多提问者都是这样,缺乏基础,所以回答了也用不明白。
基础,实在是不必提但却总不能不提的事情,现在的人,真的都是吃化肥催出来的。<
<
<
<
早就应该结贴了,不好意思!


自定义一函数,用来对数组进行处理,比如下面的可以GetSameElement(arr1,arr2,arr3)
但函数本身的的参数是从别的地方传递过来的,数量及名称均不定,现在想用一个字符串变量来整体代表这个参数比如str="arr1,arr2,arr3",GetSameElement(str)但不成功,怎么解决这问题?
Function GetSameElement(ParamArray vParamArray()) As String

既然数量和名称不定,你又怎么生成str="arr1,arr2,arr3"语句?
ParamArray 本来就是用来解决数量和名称不定的情况,代码写了,怎么不会活用啊?
如果仅想把其它参数变成数组,可以使用Array函数,比如v()=array(arr1,arr2,arr3)。<
<
友情帮顶Sub Main()
  Debug.Print GetSameElement(Array(1, 2, 3, 4, 5), Array(1, 2, 9), Array(1, 2, 10))
End Sub

Function GetSameElement(ParamArray vParamArray()) As String
  Dim strArr() As String
  Dim i As Long, j As Long, k As Long
  Dim strResult As String
  Dim nVal As Long
  Dim blnSame As Boolean
   
  For i = 0 To UBound(vParamArray)
  If Not IsArray(vParamArray(i)) Then Exit Function
  ReDim Preserve strArr(i)
  strArr(i) = Join(vParamArray(i), ",")
  Next
   
  For i = 0 To UBound(vParamArray)
  For j = 0 To UBound(vParamArray(i))
  nVal = vParamArray(i)(j)
  If InStr(strResult, nVal) = 0 Then
  blnSame = True
  For k = 0 To UBound(strArr)
  If InStr(strArr(k), nVal) = 0 Then
  blnSame = False
  Exit For
  End If
  Next
  If blnSame Then strResult = strResult & "," & nVal
  End If
  Next
  Next
  strResult = Mid(strResult, 2)
  GetSameElement = strResult
End Function
以上是江南春写的代码楼主是不是想要用字符串代替变量名啊? 那样的话用callbyname应该可以解决了。<
dingding<


我自定一个学生类,里面有name,age等数据成员,我可以为这些成员自定义属性(property 里面有get,set)实现存取数据成员的功能。但同时,我也可以自己写函数存取这些成员,请问,这两种方法是不是没什么区别?什么情况下会用属性?我是初学者,谢了。属性可以出现在设计器里面,供设计时设置。

属性更加统一和直观。自己写函数存取这些成员的时候可以调用自定义属性

这么说吧:

函数方式是散装商品。属性是整包的。


专题:

栏目: