各位大哥 帮忙 一个vc 转vb的问题

slxn 2003-08-30 10:42:02
vc定义的函数: bool chard(byte address,FILE * fp)

各位大哥参数FILE *fp 应如何用vb表达
小弟刚学vb 那位大哥帮帮 我
...全文
35 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Greaitm 2003-08-30
  • 打赏
  • 举报
回复
你在VB里根本就用不了fopen,你就用VB打开文件不行吗?
射天狼 2003-08-30
  • 打赏
  • 举报
回复
呵呵,对于什么也不懂的老板也没办法了.
你就直接把要打开的文件名传过去吧,在函数里打开文件就行了~~
slxn 2003-08-30
  • 打赏
  • 举报
回复
我 这个星期程序没搞多少 vb到学了不少! 多亏各位大哥帮忙 要不我现在估计还没动手
slxn 2003-08-30
  • 打赏
  • 举报
回复
老大 我晕死了! 老板非让我把这个程序改成vb的

他以为这是“英译汉”呢!! 我vb要现学!

这是一个智能卡考勤机的测试程序
这个函数作用是 把pc上的一批用户名单(保存在一个txt文件中)下载到考勤机中 先对这个名单资料处理 然后调动态库完成下传


老大 你看看 帮我想个方法
这个函数的调用:
FILE *fpListFilePointer;
fpListFilePointer = fopen((char *)lpszSourceFileName.operator LPCTSTR(), "r+t");
if (fpListFilePointer == NULL)
{
m_PromptListBox.AddString("对不起!打不开下载名单文件。");
return;
}

if (!LoadMaterialsToSlave(m_byteAddress, fpListFilePointer))
{
m_PromptListBox.AddString("线路干扰严重,本次采集无效,请查线路或稍后重试!");
Sleep(2000);
fclose(fpListFilePointer);
return;
}
m_PromptListBox.AddString("下载名单成功!");

fclose(fpListFilePointer);
}


这个函数:
:LoadMaterialsToSlave(BYTE byteAddress, FILE *fpListFilePointer)
{

char lpbyteTempBuf[1024];
CString str;
int j;
WORD wReturn;
int nCardNumber;
int nWorkerNo;
int nWorkerNameLength;

WORD lpRecordNumber[2];


// process the materials,一次最多读取80条,超过80条要做n次读取
// 然后每次80条往下传
BYTE lpTransmittedData[2048]; //存放资料
WORD wRecordNumber = 0;

WORD wTotalRecordNumber;

/* 添加进度条显示 */
CProgressDlg dlgProgress;
dlgProgress.Create();
dlgProgress.SetRange(0,100);
dlgProgress.SetPos(0);
dlgProgress.SetStatus("正在下载名单,请稍候...");
WORD wLineLength = 0;

// get record number
while (!feof(fpListFilePointer))
{
if (fgets(lpbyteTempBuf, 1024, fpListFilePointer) == 0)
break;

wRecordNumber++;
}
wTotalRecordNumber = wRecordNumber;

fseek(fpListFilePointer, 0, SEEK_SET);

str.Format("下载名单总数为:%d", wTotalRecordNumber);
m_PromptListBox.AddString(str);
for ( ; ; )
{
if (wRecordNumber > 80)
{
for (j = 0; j < 80; j++)
{
if(wLineLength++ == wTotalRecordNumber / 10)
{
wLineLength = 0;
dlgProgress.StepIt();
}


//get card number
fscanf(fpListFilePointer, "%s", lpbyteTempBuf);
nCardNumber = atoi (lpbyteTempBuf);
lpTransmittedData[0 + j * 15] = (BYTE)((nCardNumber >> 16) & 0xFF);
lpTransmittedData[1 + j * 15] = (BYTE)((nCardNumber >> 8) & 0xFF);
lpTransmittedData[2 + j * 15] = (BYTE)((nCardNumber ) & 0xFF);


//get worker no
fscanf(fpListFilePointer, "%s", lpbyteTempBuf);
if (lpbyteTempBuf[1] > 0x39)
{
lpTransmittedData[3 + j * 15] = lpbyteTempBuf[0];
lpTransmittedData[4 + j * 15] = lpbyteTempBuf[1];
nWorkerNo = atoi (lpbyteTempBuf + 2);
lpTransmittedData[5 + j * 15] = (BYTE) ((nWorkerNo >> 8) & 0xFF);
lpTransmittedData[6 + j * 15] = (BYTE) ( nWorkerNo & 0xFF);
}
else if (lpbyteTempBuf[0] > 0x39)
{
lpTransmittedData[3 + j * 15] = 0x20;
lpTransmittedData[4 + j * 15] = lpbyteTempBuf[0];
nWorkerNo = atoi (lpbyteTempBuf + 1);
lpTransmittedData[5 + j * 15] = (BYTE) ((nWorkerNo >> 8) & 0xFF);
lpTransmittedData[6 + j * 15] = (BYTE) ( nWorkerNo & 0xFF);
}
else
{
lpTransmittedData[3 + j * 15] = 0x20;
lpTransmittedData[4 + j * 15] = 0x20;
nWorkerNo = atoi (lpbyteTempBuf);
lpTransmittedData[5 + j * 15] = (BYTE) ((nWorkerNo >> 8) & 0xFF);
lpTransmittedData[6 + j * 15] = (BYTE) ( nWorkerNo & 0xFF);
}

//get worker name
fscanf(fpListFilePointer, "%s", lpbyteTempBuf);
nWorkerNameLength = strlen (lpbyteTempBuf);
for (int k = 0; k < nWorkerNameLength; k++)
lpTransmittedData[k + 7 + j * 15] = (BYTE) lpbyteTempBuf[k];

for (k = 0; k < 8 - nWorkerNameLength; k++)
lpTransmittedData[k + 7 + nWorkerNameLength + j * 15] = 0xFF;
。。。。。。。。。。



dsclub 2003-08-30
  • 打赏
  • 举报
回复
对了,取得指针的函数还有

VarPtr
ObjPtr
StrPtr

:)
dsclub 2003-08-30
  • 打赏
  • 举报
回复
ByRef 传递参数指针

接受函数指针用Long类型,传递函数指针用AddressOf返回
射天狼 2003-08-30
  • 打赏
  • 举报
回复
哈哈 ,哥们,你干什么呢,怎么总问这一类的问题啊~~
这是一个文件类型的指针,VB里没有指针,也没有文件类型,你把带整个函数贴出来,看用别的方法能不能替带吧~~
射天狼 2003-08-30
  • 打赏
  • 举报
回复
哈哈 ,哥们,你干什么呢,怎么总问这一类的问题啊~~
这是一个文件类型的指针,VB里没有指针,也没有文件类型,你把带整个函数贴出来,看用别的方法能不能替带吧~~
slxn 2003-08-30
  • 打赏
  • 举报
回复
行 我试试 谢谢各位大哥 指导了!! 小弟 这 有礼了

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧