百思不得其解,GetForm出现“DLL调用约定错误”

西雀 2006-11-04 03:24:06
Public Function ReturnForm(pFormName As String) As FORM_INFO_1
Dim PrinterHandle As Long ' 打印机句柄
Dim pFI1 As FORM_INFO_1
Dim Temp() As Byte
Dim BytesNeeded As Long
Dim RetVal As Long

If OpenPrinter(Printer.DeviceName, PrinterHandle, 0&) = 0 Then Exit Function ' 返回一个打印机句柄

ReDim Temp(0)
RetVal = GetForm(PrinterHandle, pFormName, 1, Temp(0), 0&, BytesNeeded)
ReDim Temp(BytesNeeded)

If GetForm(PrinterHandle, pFormName, 1, Temp(0), BytesNeeded, BytesNeeded) = 0 Then
Debug.Print "错误:" & Err.LastDllError
Else
Debug.Print "成功返回" & pFormName
End If
Call CopyMemory(pFI1, Temp(0), BytesNeeded)
ReturnForm = pFI1
Call ClosePrinter(PrinterHandle)
End Function

该函数能正常返回,但对于某些特定的pFormName,却会出现“DLL调用约定错误”,比如:
ReturnForm "A3 Extra Transvers"时就会出现此错误
ReturnForm "A3 Extra Transver" 就不会出现此错误("A3 Extra Transver"是我自定义的Form)

而且错误是在函数正常结束后出现的,此时函数也已经正常返回了pFI1的值。

代码方面我想是不会有问题的,实在不知道这个错误从何而来。
...全文
263 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
西雀 2006-11-06
  • 打赏
  • 举报
回复
XP
单步调试也出现错误,他总是在函数成功返回后出错
Dunzip 2006-11-05
  • 打赏
  • 举报
回复
可能是打印机器不支持这种纸张大小,或者打印机处于脱机状态。

大熊猫侯佩 2006-11-05
  • 打赏
  • 举报
回复
1 运行的操作系统?

2 运行出错的话单步调试出错么?
西雀 2006-11-05
  • 打赏
  • 举报
回复
楼上说的我测试过,不是那个原因
西雀 2006-11-05
  • 打赏
  • 举报
回复
一天过去了..
内容概要:本文围绕“基于共享储能服务的智能楼宇双层优化配置”展开研究,提出了一种结合上层共享储能配置优化与下层楼宇内部能源调度优化的双层协同模型,通过Matlab代码实现,旨在提升智能楼宇在复杂能源环境下的运行效率与经济性。研究充分考虑光伏出力、负荷需求等不确定性因素,引入多维核密度估计、场景生成与削减等技术进行不确定性建模,并融合需求响应、微电网调度等先进理念,实现了对综合能源系统中储能资源的高效配置与动态调控,具有较强的理论深度与工程应用价值。; 适合人群:具备电力系统、可再生能源、优化算法或综合能源系统等相关背景,从事科研、工程应用或课题研究的研发人员、研究生及高年级本科生。; 使用场景及目标:①应用于智能楼宇、园区微电网、虚拟电厂等场景中的储能规划与运行优化;②支撑高水平学术论文(如EI/SCI)的复现、课题申报、毕业设计及实际项目的双层优化建模与求解实践。; 阅读建议:建议结合提供的Matlab代码进行实操演练,重点理解双层优化架构的设计逻辑、求解策略(如Benders分解、主从博弈等)及不确定性处理方法,同时可参考文中关联技术(如场景生成、需求响应)拓展研究思路与应用场景。

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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