我想记录在执行我的应用程序期间发生的异常.在此之前我用消息框处理它.我是VB 6的新手.
请提供一些示例代码来创建日志文件并保存异常消息.
谢谢..
我正在处理Web应用程序,我遇到了以下情况.
Dim a as Object
Dim i as Integer = 0
Try
For i=1 to 5
a = new Object()
'Do stuff '
a = Nothing
Next
Catch
Finally
a = Nothing
End Try
Run Code Online (Sandbox Code Playgroud)
我是否需要在循环中执行a = Nothing或将垃圾收集器清理干净?
从Shannon的源编码定理我们知道压缩字符串的熵受原始字符串的熵限制,如下所示:
H(X) <= L < H(X) + 1/N
Run Code Online (Sandbox Code Playgroud)
其中H(X)是源字符串的熵,N是源字符串的长度,L是压缩字符串的预期长度.
这必然意味着无损压缩存在限制.
我想知道的是:
我们可以直接将熵与某些预期的压缩比相关联吗?
我们可以使用熵来找到压缩比的上限吗?
我需要运行一些代码来捕获在Windows桌面上运行的应用程序的窗口(Windows XP在这里很好).
Web上有许多VB6示例,但它们往往只捕获正在运行的VB6应用程序或桌面.我正在寻找一个捕获给定窗口/应用程序的解决方案.所以,我希望能够提供要捕获的应用程序窗口的名称.
快速的Bing搜索确实产生了一些代码示例,但它们捕获了桌面或当前运行的VB6应用程序.我愿意修改其中一个来捕获给定的窗口(命名应用程序).
但是在我这样做之前,也许某人有一个链接到vb6或VBA库代码示例,该示例将捕获/保存给定的命名应用程序窗口到硬盘上的bmp或某种类型的图像文件.
这里有一个VB6或VBA解决方案的链接.我愿意修改现有的例子.
代码是使用第三方工具迁移的.该工具无法做什么,是由.net开发人员完成的,因此修复了所有编译问题.我的问题是,对于这样的迁移活动,我们不打扰运行单元测试功能.
其次,任何人都可以建议我们是否应该使用VSTS 10中的某个工具来创建此代码的UML模型,以最大限度地降低客户可能发现的问题的风险.这有多累赘.
鉴于原始VB6应用程序的功能对我们来说是未知的,是否有任何其他建议可以提供高质量的迁移代码.
为对象定义属性而不是直接访问私有变量有什么好处?
代替 :
public class A
private _x as integer = 0
Public property X() as integer
Get
return _x
End Get
Set(ByVal value As integer)
_x = value
End Set
End Property
end class
Run Code Online (Sandbox Code Playgroud)
为什么我们不能做以下事情:
public class A
public _x as integer = 0
end class
Run Code Online (Sandbox Code Playgroud)
有什么好处?
我在VB 6代码中有'Applications.PrevInstance',我试图使用VS 2008升级到.NET.显然这段代码不再有效.有没有人对升级解决方案有任何想法?TIA
好的,所以我将VB6应用程序升级到VB.NET,我不确定如何对我正在构建的容器类的class_terminate组件进行现代化:
Private Sub class_terminate()
If Not (colUserMappings Is Nothing) Then
Set colUserMappings = Nothing
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
问题是.NET的等价物会.Finalize留下一些潜在的运行时错误,因为将容器的最终引用设置为空并不一定会破坏容器,因为.NET语言具有非确定性的终结.
在这种情况下,我将如何以一种调用其终止或终止函数实际上导致最终破坏容器的方式对集合类进行现代化?这有一个很好的解决方法吗?
我在这里遇到了一个特别棘手的问题,我想在那里提出更多的反馈(我是我工作的公司中唯一的.NET开发人员,因此没有人可以反弹).
我的任务是更换一个老化的VB6编写的ActiveX组件,该组件由包含VB6用量和我正在替换的组件的VB.NET用法的应用程序使用.
我有所有这些组件的完整源代码,所以我可以看到用例.
为了便于讨论,可以调用组件:
MyVb6.dll
MyApp(使用VB.NET和VB6组件)
在构建过程中,MyApp他们使用TlbImp工具生成一个互操作库:
Interop.MyVb6.dll
用法
在大多数情况下,使用此方法符合预期,使用如下CreateObject()方法:
Private Property MyProp() As Object
Get
Try
If m_myProp Is Nothing Then
m_myProp = CreateObject("MyVb6.MyVb6Obj")
m_myProp.Initialize()
End If
Catch : End Try
Return m_myProp
End Get
Run Code Online (Sandbox Code Playgroud)
但是在一个例子中,我发现他们似乎已经改变了如何使用这个interop dll的策略,并且他们有一个静态引用它和一个类型属性,例如:
Private Property MyProp() As MyVb6.MyVb6ObjClass 'Whilst this is strongly typed, it is from the interop dll ...
Get
If m_myProp Is Nothing Then
m_myProp = CreateObject("MyVb6.MyVb6Obj")
m_myProp .Initialize()
End If
Return m_myProp
End Get
Run Code Online (Sandbox Code Playgroud)
重建和重新部署整个应用程序的费用是完全不可能的,所以除了替换之外我别无选择MyVb6.dll.
我希望在这里找到的是这是否是一个实用的解决方案...... …
在将VB6代码转换为VB.NET的过程中,我需要替换以下代码,这些代码旨在关闭应用程序中剩余的所有打开的表单.
'close all sub forms
For i = My.Application.OpenForms.Count - 1 To 1 Step -1
'UPGRADE_ISSUE: Unload Forms() was not upgraded. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="875EBAD7-D704-4539-9969-BC7DBDAA62A2"'
Unload(My.Application.OpenForms(i))
Next i
Run Code Online (Sandbox Code Playgroud)
我Unload用Close(用TFM表示)替换了函数,但是编译器抱怨它OpenForms不是.的成员My.Application.
我在哪里可以访问开放表格?