我们的客户使用我们软件的vb6版本.
我们正在将它们升级到用C#编写的.NET应用程序......
使用.net 2.0比使用.net 3.5的批量少吗?
我对体积较小的定义是:尺寸更小,安装时间更短等.
无论如何,他们中的大多数可能已经拥有2.0.
我只是问,因为我想利用3.5中的LINQ.
在我使用VB6的10多年里,我偶尔得到一个"ByRef参数类型不匹配"错误,我根本找不到不匹配.经过一段时间的挣扎之后,我总是以这种或那种方式强迫这种类型,但这次我想我会问.我包含了我认为可能与此有关的所有代码; 但是你现在可以跳过它并在我演示问题后引用它:
Public Type PBufferType Location(9) As Integer ' code location ValueHi(9) As Integer ' Vhi code ValueLo(9) As Integer ' Vlo code Locked(9) As Integer ' State of pair Gamma(9) As Single ' Gamma between this segment and next End Type Public GammaBuffer(1) As PBufferType ' The main data type Public SelectedBank as Integer Function MeasureLuxAtCode(code As Integer) As Single Call TestPatternForm.DrawTestWindow(3, code) MeasureLuxAtCode = MeasureLux(1) End Function
问题发生在下面."LuxMinTarget = MeasureLuxAtCode(FirstLevel)"行生成"ByRef参数类型不匹配"错误,指示FirstLevel不是整数.
Sub DetermineIdealLuxCurve() Dim FirstLevel, FirstDACtoMeasure As Integer FirstDACtoMeasure …
有没有人使用以下任何一种(或任何其他工具)将您的vb6代码转换为.net语言?
Artinsoft的升级伴侣 (转换为c#和vb.net)
vbmigration合作伙伴 (转换为vb.net)
它们的效果和转换的大小项目有多大?
之后剩下多少工作要做?你对自己的.net项目感到高兴.支持是什么样的?对于像这样的工具的用户,是否有任何支持论坛,供应商似乎都没有提供.
他们收取了什么,他们的价格没有公布,我听到上述两个例子的不同来源的价格差别很大
如何在visual basic 6中检索字符串数组的最后一个元素?
我正在处理具有多个点的文件名,这些点被分成一个数组,我只想操纵扩展名.以下代码有效,但有一个我想删除的硬编码元素.
Private Sub Form_Load()
Dim aPath() As String
Dim FileName As String
Dim realExt As String
FileName = "A long dotty.file.name.txt"
aPath = Split(FileName, ".")
realExt = aPath(3) ' <-- how to not hardcode?'
MsgBox ("The real extension is: " & realExt)
Unload Me
End Sub
Run Code Online (Sandbox Code Playgroud) 我有一个引用VB6 DLL的C#应用程序.当我将C#中的null传递给VB6 dll函数时,null在VB6中被转换为值Empty(value),而不是Nothing(object).例如:
// function in vb6 dll that referenced by c# app
Public Sub TestFunc(ByVal oValue As Variant)
{
...
if oValue is Nothing then
set oValue = someObject
end if
...
}
// main c# code
private void Form1_Load(object sender, EventArgs e)
{
object testObject = new object();
testObject = null;
TestFunc(testObject);
}
Run Code Online (Sandbox Code Playgroud)
当我传递一个对象(非null)时,它将作为对象传递给VB6.但是当null传递给vb6时,它变为值类型为Empty,而不是对象类型Nothing.谁知道为什么?无论如何,当从c#app传递时,我可以强制null为VB6中的Nothing吗?
非常感谢.
我们公司在VB6中有一个很大的代码库,我们目前使用VSS,尽管我们讨厌它,但它至少集成到了VB6 IDE中.
我自己的团队,正在使用.NET,现在正在寻找替代的SCM,比如我个人最喜欢的Git.使用Git Extensions,我们似乎能够很好地将Git命令集成到Visual Studio IDE中.
但是,有人问过这个问题:Git也可以用于我们的VB6代码库吗?
当然我假设文件本身在git存储库中可以正常工作,但毫无疑问,开发人员会抱怨他们是否必须使用命令行来完成所有源代码控制.但有没有人有使用VB6和Git的经验?VB6 IDE中可以进行任何集成吗?或者,没有IDE集成可能没那么麻烦?
我是否会获得第一个创建[ vb6 ]和[ git ] 的荒谬标签组合的徽章?
我知道在下面的示例中,应该使用Resume语句而不是Goto语句.
Sub Method()
On Error Goto ErrorHandler
...
CleanUp:
...
Exit Function
ErrorHandler:
Log error etc
Err.Clear 'Is this line actually necessary?'
Resume CleanUp 'SHOULD USE THIS'
Goto CleanUp 'SHOULD NOT USE THIS'
End Sub
Run Code Online (Sandbox Code Playgroud)
我的问题是两者的执行有什么区别?
我正在使用VB6,我需要为多维数组做一个ReDim Preserve:
Dim n, m As Integer
n = 1
m = 0
Dim arrCity() As String
ReDim arrCity(n, m)
n = n + 1
m = m + 1
ReDim Preserve arrCity(n, m)
Run Code Online (Sandbox Code Playgroud)
每当我写它时,我都会收到以下错误:
运行时错误9:下标超出范围
因为我只能更改最后一个数组维度,所以在我的任务中我必须更改整个数组(在我的示例中为2维)!
有没有解决方法或其他解决方案?
似乎Set Object = Nothing没有破坏Fs此代码中的Object:
Sub Test2()
Dim Fs As New FileSystemObject
Set Fs = Nothing
MsgBox Fs.Drives.Count ' this line works
End Sub
Run Code Online (Sandbox Code Playgroud)
最后一行没有错误!那意味着Fs对象仍然存在,对吗?
那么如何破坏这个Fs对象.