看了你就会进步

GhSoft 2003-11-07 03:04:32
大侠门,劳驾了:

一个api函数:
char * ReadMacnineSN(); 返回一个字符串

vb中该如何申明这个函数,用什么类型接受这个字符串


...全文
136 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
firewangcool 2003-11-10
  • 打赏
  • 举报
回复
我知道用列表控件可以达到,但是我想用winAPI来实现,不知道怎么实现?你们有人知道吗?
yunyun820930 2003-11-07
  • 打赏
  • 举报
回复
声明所在dll及类型 函数返回该为string
GhSoft 2003-11-07
  • 打赏
  • 举报
回复
楼上的,
有目录列表控件,都可以容易实现的。

建目录用 filesystemobject 对象。
firewangcool 2003-11-07
  • 打赏
  • 举报
回复
我想在我的系统中取得计算机的所有盘符,并把这些盘符赋给一个对话列表框,当此列表框选定一个盘符时,我的另一个文本框中的内容根据此对话列表框的盘符值而显示对应盘符下的内容,不知道该怎么实现?各位有没有人知道的?另外,我想要在某个盘符下创建一个文件夹不知道是不是用Createdirectory函数?具体怎么用游人知道吗?谢谢赐教!
yunfeng007 2003-11-07
  • 打赏
  • 举报
回复
string
GhSoft 2003-11-07
  • 打赏
  • 举报
回复
Private Declare Function ReadMachineSN Lib "license_api.dll" () As ????long

这样声明:很可能是后面的 as long 不对, 但该是什么类型呢?
cryptonym 2003-11-07
  • 打赏
  • 举报
回复
正文:
使用VB里的字串类型String有两大不足:第一、它的分配是由VB运行时控制,我们不能将其分配在指定内存处;第二,任何一次对字串的赋值操作都要进行内存重新分配。要实现高效、灵活的字串处理,我们必须克服这两大不足。
对于第一个问题,通过修改String变量里放着的BSTR描述符指针可以实现;对于第二个问题,可以用Mid语句(注意是语句而不是函数)来赋值。不详细讲了,直接看下面的这个类:

Option Explicit

注释:********************************************************
注释:clsBSTR.cls
注释:作者: 熊超 ID: AdamBear 2002年3月18日
注释:http://www.csdn.net/Author/AdamBear
注释: 你可以自由使用本类模块,不过请保留本声明
注释:********************************************************

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

注释:不要直接对sString赋值(可以用MID语句),将其设为公有仅为提高效率。
Public sString As String 注释:BSTR描述符指针

Private pStr As Long 注释:BSTR地址
Private nMaxLen As Long 注释:BSTR最大字节数



注释:让本字串指向特定地址
Public Sub Attach(Addr As Long, Optional nLen As Long)
pStr = Addr
注释:修改BSTR描述符指针,使其指向Addr
CopyMemory ByVal VarPtr(sString), Addr, 4

If IsMissing(nLen) Then Exit Sub
注释:设定最大字串字节数
nMaxLen = nLen

End Sub

注释:还原本字串原BSTR描述符
Public Sub Detach()
CopyMemory ByVal VarPtr(sString), 0&, 4
End Sub

注释:让本字串指向源字串
Public Sub AttachStr(sStr As String)
Attach StrPtr(sStr), LenB(sStr)
End Sub

注释:data为缺省属性
Public Property Let data(sVal As String)
Dim c As Long
c = LenB(sVal)
注释:超过最大字串数,抛出错误。
If c > nMaxLen Then Err.Raise vbObjectError + 3000, _
"CString::Let Data", "溢出"
注释:写字串长度
CopyMemory ByVal (pStr - 4), c, 4
注释:写字串
Mid(sString, 1) = sVal
End Property

注释:可以通过公有变量sString来读字串,效率更高
Public Property Get data() As String
data = sString
End Property

Private Sub Class_Terminate()
Call Detach
End Sub

用法如下,假设我们已通过VitualAlloc,HeapAlloc,MapViewOfFile这样的内存管理API得到了一个4k个字节的可读写的内存地址baseAddr:
Dim sShare As New clsBSTR
注释:留下前4个字节用于BSTR保存字串字节数
sShare.Attach(baseAddr+4, 4096-4)
注释:下面的字串"Test"会直接写到baseAddr+4字节处
sShare = "Test"
Dim y As String
注释:读字串时可以用sString属性或缺省属性
y = sShare.sString
注释:用AttachStr方法Attach到一个字串。
注释:必须要先Detach
sShare.Detach
sShare.AttachStr(y)
sShare = "Hahaha"
Debug.Print y
注释:一旦AttachStr到字串y后,对sShare的修改就相当于对y的修改。
注释:并且以后对y的修改也只能用Mid语句
Mid(y, 1) = "xxxxx"
注释:不能直接赋值,这样VB会将原来y所指(也是sShare所指)内存释放,
注释: 重新分配y。这样在访问sShare时会出错。
注释:y = "Test"


我也不在这里讲这个类的详细原理,可以参考我前面说的两篇文章。
使用这个类有几个需要注意的地方。
1、读字串时可以用sString属性来读,更快。
读sShare有两种方法,一种是用缺省属性Data来读,一种是直接用sString属性来读。用sString属性不重新分配内存,要快得多。
2、不要直接给sString赋值,应使用缺省的data属性来赋值。
之所以把sString属性暴露出来,是为了效率和方便。我们可以用Mid语句对其进行修改,但不要直接用"="来赋值。
3、注意Attach的第二个参数,表示字串的最大字节数,不要让它超过已经分配的内存。
4、用AttachStr将本字串对象Attach到某个字串(比如上面的y)上后,不能再对这个字串y重新赋值,也不能将其传递到会对其重新赋值的过程。

哇,这么多需要注意的问题,用起来岂不是更不方便。的确,用它的之前要考虑是不是必须的。因为建立这个类也一样有开销。所以还有一个需要注意的问题:

5、它主要的应用还是在于将字串安放在指定内存处。虽然它也可以让同一个进程内几个的字串达到共享的目的,但是如果只是两三个很小的字串这样时做反而慢了。
内容概要:本文围绕基于物理场的动态模式分解(piDMD)展开研究,重点探讨其在流体力学、热传导及多物理耦合系统中的建模与应用。通过Matlab代码实现,将传统的动态模式分解(DMD)方法与物理场控制方程相结合,引入物理约束以增强数据驱动模型的物理一致性,从而提升对复杂非线性系统的模态提取精度与长期预测能力。文章系统阐述了piDMD的理论基础、数学推导过程与算法实现步骤,并结合典型物理场仿真案例(如Navier-Stokes方程驱动的流场演化)进行验证,展示了其在降阶建模、主导模态识别和时空动态可视化方面的优越性能,适用于高维、强耦合、非平稳系统的分析与优化。; 适合人群:具备一定数值计算、流体力学、控制理论或数据驱动建模背景,熟悉Matlab编程与线性代数运算,从事科学研究、工程仿真或系统辨识工作的研究生、科研人员及工程师。; 使用场景及目标:①实现对流场、温度场等物理场的高效降阶建模与动态行为预测;②提取符合物理规律的关键模态,用于系统稳定性分析与控制设计;③支撑复杂系统的状态估计、异常检测与优化调控等下游任务。; 阅读建议:建议读者结合提供的Matlab代码逐行调试与运行,深入理解piDMD算法中物理约束的嵌入方式及其对模态质量的影响,同时可尝试将其迁移至其他偏微分方程描述的物理系统中进行拓展验证与应用。
内容概要:本文研究了在峰谷分时电价引导下,基于多目标优化遗传算法NSGA-II的电动汽车充电负荷优化问题。通过构建以电网负荷波动最小化和用户充电成本最低为核心的多目标优化模型,利用NSGA-II算法求解获得帕累托最优解集,实现对大规模电动汽车充电行为的有序引导。文中系统阐述了峰谷电价激励机制的设计原理、电动汽车充电负荷的数学建模方法、多目标优化问题的形式化表达以及NSGA-II算法的具体实现流程,并借助Matlab平台进行仿真验证,结果表明该策略能有效平抑电网负荷峰谷差、降低用户充电支出并提升电力系统的运行效率与稳定性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事智能电网、电动汽车调度、需求侧管理等相关领域的研究生或科研人员。; 使用场景及目标:①研究峰谷电价政策对电动汽车充电行为的影响机制;②掌握NSGA-II算法在电力系统多目标优化中的具体应用;③实现电动汽车集群的有序充电调度以改善电网负荷曲线; 阅读建议:此资源结合了电力经济学与智能优化算法,建议读者在学习过程中重点关注模型构建与算法实现的衔接部分,动手复现仿真代码以深入理解参数设置与结果分析过程。
详情可查看下方数据集可视化效果。 【数据集概况】 · 检测类别(中文):[电梯(elevator)] · 训练集:1468 张 · 验证集:157 张 · 测试集:158 张 · 总计:1783 张 该数据集聚焦于各类建筑内部及外部环境中的电梯目标检测任务,涵盖住宅楼、办公楼、商场、酒店等多种典型场景下的电梯结构。图像采集覆盖不同光照条件、材质类型与安装位置,充分体现了实际应用中电梯的多样性与复杂性,为智能楼宇管理、安防监控及无障碍设施识别等方向提供了高质量的视觉基础支持。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 72 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9446** mAP50-95 | 0.6531 Precision | 0.9305 Recall | 0.8777 train/box_loss | 0.5807 train/cls_loss | 0.3505 val/box_loss | 1.0020 val/cls_loss | 0.6208 【训练过程分析】 72 轮训练后 mAP50 达到 0.9446,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。但 mAP50-95 为 0.6531,和 mAP50 差距 0.29,定位精度仍有优化空间。 【模型性能评估】 Precision 0.9305、Recall 0.8777,精度高于召回,存在一定漏检。 【预测效果展示】 验证集预测效果较好,检测框基本准确覆盖电梯,置信度整体偏高。 【改进建议】 1. 丰富场景...

1,488

社区成员

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

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