谁能将好像是delphi的数据结构转换为VB的呀?

poni 2005-05-26 09:43:32
typedef struct tStatus {
WORD error_code; // 错误代号
WORD msg; // 消息代号
DWORD percent; // 当前通讯进程百分比0100
DWORD file_size; // 文件大小字节数
DWORD elapsed_time; // 当前通讯已经过时间1/1000秒
TCHAR file_name[260]; // 当前通讯文件名NT下为520字节
TCHAR open_file_name[260]; // 实际存取文件名NT下为520字节
DWORD current_packet; // 当前通讯包序号从0开始
DWORD total_packets; // 总的通讯包数
DWORD total_packet256s; // 1024字节通讯包数
} TSTATUS; // 结构大小550字节NT下为1072字节
typedef TSTATUS *LPTSTATUS;
...全文
77 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
NeoInMatrix 2005-05-26
  • 打赏
  • 举报
回复
Before using the structure, you should initialize file_name, open_file:

dim t as tStatus

t.file_name = new string('\0', 260);
t.open_name = new string('\0', 260);

The attribute <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> only tells data type of the member variable, but does not guarantee space allocation.
Ninputer 2005-05-26
  • 打赏
  • 举报
回复
把代码贴全,包括调用的语句。
poni 2005-05-26
  • 打赏
  • 举报
回复
出错:"无法封送类型 tStatus 的字段 file_name:该类型无法作为结构字段进行封送处理。"
poni 2005-05-26
  • 打赏
  • 举报
回复
楼上的,你的写法我已经试过了, 出错:未将对象引象设置到对象的实例

我把Public file_name() , opoen_file_name() As char 也不行呀
Brunhild 2005-05-26
  • 打赏
  • 举报
回复
Imports System.Runtime.InteropServices
Brunhild 2005-05-26
  • 打赏
  • 举报
回复
应该是这样定义的,但实际大小只有1068(2+2+4*3+520*2+4*3=1068),奇怪了,所以强制指定结构大小为1072了,你看看是否有漏写的数据:

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode, Pack:=1, Size:=1072)> _
Structure tStatus
Public error_code, msg As Int16
Public percent, file_size, elapsed_time As Int32

<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> _
Public file_name, opoen_file_name As String

Public current_packet, total_packets, total_packet256s As Int32
End Structure
poni 2005-05-26
  • 打赏
  • 举报
回复
也谢谢楼上各位
poni 2005-05-26
  • 打赏
  • 举报
回复
是引用搞错了,应该是Byref,没留意,谢谢 Ninputer(装配脑袋) (
Ninputer 2005-05-26
  • 打赏
  • 举报
回复
你ByRef了吗?
Ninputer 2005-05-26
  • 打赏
  • 举报
回复
还有哪一行出错的,标出来。
Ninputer 2005-05-26
  • 打赏
  • 举报
回复
代码,代码,我要看你的代码。
poni 2005-05-26
  • 打赏
  • 举报
回复
其实就调用这么一个动态库中中的函数,参数的结构指针形式就是上面提的,没什么程序代码

2.3.13 thrdQueryStatusEx
取多线程方式下详细的通讯状态信息并清除消息寄存器及错误寄存器
DWORD thrdQueryStatusEx(LPVOID lpStatus);
参数
lpStatus
指向一个TSTATUS结构的指针
poni 2005-05-26
  • 打赏
  • 举报
回复
我已经加了t.file_name=space(260)
t.file_name=space(260)还是提示 出错:未将对象引象设置到对象的实例
目录 一、简介 2 1.Delphi 2 2.数据库 3 二、系统设计 4 1、数据库的建立 4 2、管理系统建立 6 3、 实现功能 11 三、结论 13 一、简介 1.Delphi Delphi是Borland公司推出的可视化编程环境,它提供了一种方便、快捷的Windows应 用程序开发工具。它使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,采用了可重复利用的完整的面向对象 程序语言(Object-Oriented Language)、当今世界上最快的编辑器、最为领先的数据库技术。Delphi是优秀的可视 化开发工具,不仅简单、易于掌握而且功能强大,使用Delphi开发应用软件,会大大地 提高编程效率。 Delphi是Pascal语言有天壤之别。一个Delphi程序首先是应用程序框架,而这一框架 正是应用程序的"骨架"。在"骨架"上即使没有附着任何东西,仍可以严格的按照设计运 行。用户的工作只是在"骨架"中添入自己的程序。默认的应用程序是一个空白的窗体"F orm",可以直接运行,结果得到一个空白的窗口,这个窗口具有Windows窗口的全部性质 :可以被放大、缩小、移动最大化、最小化等,但没有编写程序代码。因此,可以说应 用程序框架通过提供所有应用程序共有的东西,为用户应用程序的开发打下良好的基础 。用户所需要做的,只是在应用程序中中假如完成所需功能的代码而已。 Delphi具有以下的特性:基于窗体和面向对象的方法,高速的编译器,强大的数据库 支持,与Windows编程紧密结合,强大而成熟的组件技术。但最重要的还是Object Pascal语言,它才是一切的根本。 Object Pascal语言是在Pascal语言的基础上发展起来的,简单易学。 Delphi提供了各种开发工具,包括集成环境、图像编辑(Image Editor),以及各种开发数据库的应用程序,除此之外,还允许用户挂接其它的应用程 序开发工具。在Delphi众多的优势当中,它在数据库方面的特长显得尤为突出:适应于 多种数据库结构,从客户机/服务机模式到多层数据结构模式;高效率的数据库管理系 统和新一代更先进的数据库引擎;最新的数据分析手段和提供大量的企业组件。 Delphi这个名字源于古希腊的城市名。它集中了第三代语言的优点。以Object Pascal为基础,扩充了面向对象的能力,并且完美地结合了可视化的开发手段。Delphi 自1995年3 月一推出就受到了人们的关注,并在当年一举夺得了多项大奖。 Delphi的出现打破了V承可视化编程领域一统天下的局面。并且Delphi使用了本地编译 器直接生成技术,使程序的执行性能远远高于其它产品生成的程序。它还是真正的面向 对象的编程语言。PASCAL语言的严谨加上可视化的优势和强大的数据库功能使得它有充 分的资本和微软的VB叫板。许多人当时都认为Pascal 是最有前途的程序设计语言,并预测Delphi将会成为可视化编程的主流环境。 Delphi在你编好程序后自动转换成.EXE文件它运行时速度比VB快,而且编译后不需要 其他的支持库就能运行。它的数据库功能也挺强的,是开发中型数据库软件理想的编程 工具。 Delphi适用于应用软件、数据库系统、系统软件等类型的开发。而且它拥有和VB差不多 一样的功能,而且一样能应用API函数,这在控制Windows很有用。 Delphi是全新的可视化编程环境,为我们提供了一种方便、快捷的Windows应用程序开 发工具。它使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向 对象程序语言(Object-Oriented Language)、当今世界上最快的编辑器、最为领先的数据库技术。对于广大的程序开发人 员来讲,使用Delphi开发应用软件,无疑会大大地提高编程效率,而且随着应用的深入 ,您将会发现编程不再是枯燥无味的工作——Delphi的每一个设计细节,都将带给您一份 欣喜。 2.数据库 数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的 冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修 改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完 全分开的若干个数据库时,则该系统包含一个"数据库集合"。 数据库是"按照数据结构来组织、存储和管理数据的仓库"。在数据管理的日常工作中 ,常常需要把某些相关的数据放进这样"仓库",并根据管理的需要进行相应的处理。 数据库发展阶段大致划分为如下几个阶段:人工管理阶段;文件系统阶段;数据库系 统阶段;高级数据库阶段。使用数据库可以带来许多好处:如减少了数据的冗余度,从 而大大地节省了
NTKO OFFICE文档控件支持在线编辑,痕迹保留,手写签名,电子印章,全屏批注,电子签名[数字签名,数字证书签名],简单OCR等实用功能,支持PHP,ASP,JSP,C#,VB.NET,DOMINO等各种web编程语言和服务器。 NTKO OFFICE文档控件能够在浏览器窗口中直接编辑Word,Excel,Wps等Office文档并保存到任意Web服务器。实现文档和电子表格的统一管理。同时支持强制痕迹保留,手写签名,电子印章,版本控制,附件上传等办公自动化系统必备的功能。是OA系统开发的最佳选择组件!!卓越的性能,低廉的价格,简洁高效的编程接口,让您以最低的开发成本,轻松创建极具特色的办公自动化解决方案! 采用基于标准的而非基于自定义协议强大的B/S通讯技术,能够自由的将服务器数据库中的数据插入当前文档的指定位置,而且还可以将文档中的指定数据随时保存到服务器上。 NTKO OFFICE文档痕迹保留全屏批注手写签名电子印章控件是拥有完全自主知识产权的ActiveX控件。 NTKO OFFICE文档控件4.0版本新增异步下载等多项功能。异步下载方法支持显示文件下载进度或者不显示进度的选项,大大改善了用户界面体验,并满足多种不同层次的开发需求。 http://www.ntko.com在线演示展示了NTKO OFFICE文档控件的“异步下载”,“智能提交”等技术。该技术能让您更简单快速的将控件集成到您的产品中。 NTKO OFFICE文档控功能强大,以下仅为部分功能列表: 1 新增电子签名[CA数字签名]的功能。符合国家《电子签名法》V3.0版本新增了文档电子签名[CA数字签名]功能。同时简化了一些常用功能的函数和方法。3.0版本的数字签名功能基于国际标准开发,同时符合《电子签名法》。独创使用电子签名[数字签名]验证对文档内容,格式等的任何改动。同时支持联合签名,证书吊销列表等功能。电子签名[数字签名]功能采用标准接口,可以和企业已有的PKI系统无缝融合。 2 增强对WPS文档和金山电子表支持。增加保存PPT为HTML,支持UTF8 URL等功能 V2.5.2.3版本新增了对WPS痕迹保留的支持,并支持金山电子表。另外,该版本还增加了保存PPT为HTML,支持UTF8 URL和UTF8数据编码传输的功能。 3 新增可定制的文件菜单,可定制一个主菜单,禁止F12保存文档,可显示页码,页数信息的状态栏。 V2.5.2.1版本新增了可定制文件菜单,可定制一个主菜单。进一步增强了系统的可集成性。新增禁止F12快捷键保存文档,以及在禁止拷贝的基础上禁止文字拖放的功能,进一步增强了文件的安全性。新的状态栏可以显示Word文档的页码和页数等信息。用户使用更加方便。 另外新增印章管理控件,可在浏览器中创建,修改印章从保存到本地或者服务器。 4 新增压缩存储和传输功能 V2.5.1版本新增的压缩存储和传输功能,使的20K左右的Word文档压缩后只有2K左右。极大节约了数据库或磁盘空间,提高了网络利用率和传输效率。 5 新增全文批注功能和远程印章管理控件。 V2.5版本新增的全文批注功能,能够让您以所见即所得的方式对文档进行全文批注。新增的印章管理控件可以让您修改远程服务器上的印章,并保存回服务器。 6 全面支持C/S方式和其他容器。在VB,Delphi,C++Builder中均可以很方便的使用控件 V2,3,2,0版本之后,NTKO OFFICE文档控件不仅可以继续与浏览器和各种后台Web服务器无缝集成创建B/S结构的应用,更全面支持C/S方式的编程和其他容器。您可以在VB,Delphi,以及C++ Builder中使用控件。快速创建具有痕迹保留,电子印章等功能的C/S结构的应用。 7 支持将数据直接写入ODBC数据源。 V2,3,2,0版本之后,NTKO OFFICE文档控件支持直接从ODBC数据源读取文档内容,或者将文档内容存入ODBC数据源。这为C/S结构下创建共享的办公系统,文档管理,知识管理解决方案提供了更强大的接口。 8 状态栏,智能Web调用,预定义模板套红 全面支持状态栏,用户界面更加友好。智能Web调用让您甚至可使用XML或者自定义的协议与服务器通讯! 9 广泛的操作系统,Web服务器,数据库和编程语言支持 后台支持Windows,Linux,Unix等各种操作系统;支持IIS,Domino,Websphere,Apache等所有后台WEB服务器类型,支持Db2,Oracle,MySQL,SQL Server等各种常用数据库和JSP,ASP,PHP,PERL等编程语言。 10 支持在提交编辑文档的同时,提交表单的其它数据,包括其它的文件上传 采用我们独创的“智能提交”技术,让您在提交编辑文档的同时,提交表单的其
NET程序员的开发利器.NET Reflector 一、 简介   程序集,作为.NET时代的动态链接库,蕴藏了太多的软件秘密。为此,Visual Studio内置的ILDASM成为最初挖掘程序集的上佳工具。但自从Reflector出现后,ILDASM相形见拙。因为,Reflector能提供更多的程序集信息,而且是免费的工具。   如今,在Visual Studio.NET中编译源代码(无论是VB还是C#)时,编译器都会将高级源代码翻译成MSIL,即“微软中间语言”,而不是特定的机器指令。具有更多安全性、版本控制、共享能力与其它相关元数据的中间语言(IL),是包在一个或多个DLL或可执行文件中的。   基于ILDASM检查程序集中的IL有时很有用,但它要求我们熟悉MSIL。通常,比起IL,大多数开发人员对像C#或Visual Basic这样的高级程序设计语言更为熟悉。   Reflector的出现使.NET程序员眼前豁然开朗,因为这个免费工具可以将.NET程序集中的中间语言反编译成C#或者Visual Basic代码。除了能将IL转换为C#或Visual Basic以外,Reflector还能够提供程序集中类及其成员的概要信息、提供查看程序集中IL的能力以及提供对第三方插件的支持。   二、 下载与运行Reflector   Reflector是由微软员工Lutz Roeder编写的免费程序。这个软件经常更新,你可以在http://www.aisto.com/roeder/dotnet下载最新的版本。在本文成文之时,Reflector的最新版本为5.0.35.0,仅有1M大小。只要双击下载后的Reflector.exe文件即可运行Reflector。   默认情况下,Reflector会打开一组公共程序集(mscorlib、System、System.Data、System.Drawing等等)。每个打开的程序集都列在Reflector的主窗口中。单击程序集旁边的+图标可以展开树结构并展示程序集的命名空间。每个命名空间旁边都有一个相关的+图标,单击这个图标将显示这个命名空间内的类。除此以外,还可以展开每个类,显示类的成员:事件、字段、方法与属性。   要想查看其它程序集(包括我们自己创建的程序集)的细节,你可以使用菜单命令“File→Open”。然后,浏览到想要查看的程序集。只要选择了有效的.NET程序集,这个程序集就可以在Reflector的主窗口中与其它默认程序集共同显示。要想从Reflector的主窗口中删除程序集,只需右击程序集并选择“Close”。   三、 使用Reflector反汇编程序集   提供基本的程序集是Reflector唾手可得的功能,然而,Reflector真正的威力体现在它的反汇编能力。只要浏览到类级的成员,就可以通过Tools菜单中的Disassembler项(或在该项上单击右键)反汇编此成员。这将打开第二个窗格,以C#、Visual Basic、Delphi或者IL显示反汇编后的内容。图2以C#语言展示了对SmtpClient类中Abort方法的反汇编结果。   有了Reflector的反编译功能,要研究.NET框架基类库就容易多了。我们完全可以在没有源代码的情况下研究我们所创建或者正在使用的程序集相应源代码。   不用太担心,你自己的.NET应用程序还有其它受保护措施。但是,想阻止别人查看.NET程序集的IL(继而反编译成C#或者Visual Basic)是不可能的,但你可以使用“混淆”技术使IL变得混乱。目前,市场上有许多.NET混淆产品,比如:PreEmptive Solution的Dotfuscator、WiseOwl的Dmeanor以及Remotesoft的.NET Obfuscator等。   四、 Reflecator的其它功能   除了作为对象浏览器与反汇编器之外,Reflector还可以显示类与其成员的调用与被调用图、提供单键访问Google或MSDN搜索的能力并提供了允许第三方开发人员为Reflector创建插件的框架。   要查看调用或被调用图,只需要在树视图中选择一个成员,访问Tools菜单,选择Call Graph或Callee Graph选项即可。Call Graph会列出所选项所调用的成员,而Callee Graph列出调用所选项的成员。   通过使用插件,Reflector的功能可以得到进一步扩展。目前有能显示程序集依赖图、自动加载当前运行中的程序集、输出整个程序集的反汇编内容以及在Visual Studio中作为Reflector的宿主等的插件。还有更多插件都列在http://www.codeplex.com/reflectoraddins中。在此,我极力推荐有兴趣的读者前去一看。   不出乎所料,的确存在一个Reflector.VisualStudio插件。有了这个插件,就可以让Reflector集成在Visual Studio环境中,进而取代以前那个有些“拙漏”的对象浏览器。   首先,我们需要在机器上准备Reflector的最新版,然后从http://www.testdriven.NET/reflector下载最新版本的Reflector.VisualStudio插件。据说安装了此插件之后,Reflector能够与Visual Studio完美融合。但遗憾的是,本人试下载此软件并安装(仅能得到TestDriven.NET-2.8.2130 RTM个人测试版本,时间7/30/2007,大小3.3M)后,没有大发现—仅是在VS2005中添加“Go to Reflector”和一个帮助菜单项。点击“Go to Reflector”菜单项仅是从VS2005内部启动Reflector而已。   有了Reflector.VisualStudio插件(正版,下面是根据在线资料介绍),Reflector可以寄在Visual Studio中Reflector不仅是一个对象浏览器、反汇编器,包裹在同一个程序中的所有功能还可以寄于Visual Studio中。   五、 小结   还记得Spy++吗?在Win32时代,这个软件对于我们分析一个陌生软件的设计思路可谓立下汗马功劳。在如今的.NET时代,Reflector又成为每个严肃的.NET开发人员工具箱中必不可少的精髓工具之一。怎么样,请赶紧试锋吧。
NET程序员的开发利器.NET Reflector 一、 简介   程序集,作为.NET时代的动态链接库,蕴藏了太多的软件秘密。为此,Visual Studio内置的ILDASM成为最初挖掘程序集的上佳工具。但自从Reflector出现后,ILDASM相形见拙。因为,Reflector能提供更多的程序集信息,而且是免费的工具。   如今,在Visual Studio.NET中编译源代码(无论是VB还是C#)时,编译器都会将高级源代码翻译成MSIL,即“微软中间语言”,而不是特定的机器指令。具有更多安全性、版本控制、共享能力与其它相关元数据的中间语言(IL),是包在一个或多个DLL或可执行文件中的。   基于ILDASM检查程序集中的IL有时很有用,但它要求我们熟悉MSIL。通常,比起IL,大多数开发人员对像C#或Visual Basic这样的高级程序设计语言更为熟悉。   Reflector的出现使.NET程序员眼前豁然开朗,因为这个免费工具可以将.NET程序集中的中间语言反编译成C#或者Visual Basic代码。除了能将IL转换为C#或Visual Basic以外,Reflector还能够提供程序集中类及其成员的概要信息、提供查看程序集中IL的能力以及提供对第三方插件的支持。   二、 下载与运行Reflector   Reflector是由微软员工Lutz Roeder编写的免费程序。这个软件经常更新,你可以在http://www.aisto.com/roeder/dotnet下载最新的版本。在本文成文之时,Reflector的最新版本为5.0.35.0,仅有1M大小。只要双击下载后的Reflector.exe文件即可运行Reflector。   默认情况下,Reflector会打开一组公共程序集(mscorlib、System、System.Data、System.Drawing等等)。每个打开的程序集都列在Reflector的主窗口中。单击程序集旁边的+图标可以展开树结构并展示程序集的命名空间。每个命名空间旁边都有一个相关的+图标,单击这个图标将显示这个命名空间内的类。除此以外,还可以展开每个类,显示类的成员:事件、字段、方法与属性。   要想查看其它程序集(包括我们自己创建的程序集)的细节,你可以使用菜单命令“File→Open”。然后,浏览到想要查看的程序集。只要选择了有效的.NET程序集,这个程序集就可以在Reflector的主窗口中与其它默认程序集共同显示。要想从Reflector的主窗口中删除程序集,只需右击程序集并选择“Close”。   三、 使用Reflector反汇编程序集   提供基本的程序集是Reflector唾手可得的功能,然而,Reflector真正的威力体现在它的反汇编能力。只要浏览到类级的成员,就可以通过Tools菜单中的Disassembler项(或在该项上单击右键)反汇编此成员。这将打开第二个窗格,以C#、Visual Basic、Delphi或者IL显示反汇编后的内容。图2以C#语言展示了对SmtpClient类中Abort方法的反汇编结果。   有了Reflector的反编译功能,要研究.NET框架基类库就容易多了。我们完全可以在没有源代码的情况下研究我们所创建或者正在使用的程序集相应源代码。   不用太担心,你自己的.NET应用程序还有其它受保护措施。但是,想阻止别人查看.NET程序集的IL(继而反编译成C#或者Visual Basic)是不可能的,但你可以使用“混淆”技术使IL变得混乱。目前,市场上有许多.NET混淆产品,比如:PreEmptive Solution的Dotfuscator、WiseOwl的Dmeanor以及Remotesoft的.NET Obfuscator等。   四、 Reflecator的其它功能   除了作为对象浏览器与反汇编器之外,Reflector还可以显示类与其成员的调用与被调用图、提供单键访问Google或MSDN搜索的能力并提供了允许第三方开发人员为Reflector创建插件的框架。   要查看调用或被调用图,只需要在树视图中选择一个成员,访问Tools菜单,选择Call Graph或Callee Graph选项即可。Call Graph会列出所选项所调用的成员,而Callee Graph列出调用所选项的成员。   通过使用插件,Reflector的功能可以得到进一步扩展。目前有能显示程序集依赖图、自动加载当前运行中的程序集、输出整个程序集的反汇编内容以及在Visual Studio中作为Reflector的宿主等的插件。还有更多插件都列在http://www.codeplex.com/reflectoraddins中。在此,我极力推荐有兴趣的读者前去一看。   不出乎所料,的确存在一个Reflector.VisualStudio插件。有了这个插件,就可以让Reflector集成在Visual Studio环境中,进而取代以前那个有些“拙漏”的对象浏览器。   首先,我们需要在机器上准备Reflector的最新版,然后从http://www.testdriven.NET/reflector下载最新版本的Reflector.VisualStudio插件。据说安装了此插件之后,Reflector能够与Visual Studio完美融合。但遗憾的是,本人试下载此软件并安装(仅能得到TestDriven.NET-2.8.2130 RTM个人测试版本,时间7/30/2007,大小3.3M)后,没有大发现—仅是在VS2005中添加“Go to Reflector”和一个帮助菜单项。点击“Go to Reflector”菜单项仅是从VS2005内部启动Reflector而已。   有了Reflector.VisualStudio插件(正版,下面是根据在线资料介绍),Reflector可以寄在Visual Studio中Reflector不仅是一个对象浏览器、反汇编器,包裹在同一个程序中的所有功能还可以寄于Visual Studio中。   五、 小结   还记得Spy++吗?在Win32时代,这个软件对于我们分析一个陌生软件的设计思路可谓立下汗马功劳。在如今的.NET时代,Reflector又成为每个严肃的.NET开发人员工具箱中必不可少的精髓工具之一。怎么样,请赶紧试锋吧。

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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