我正在将VB6应用程序转换为C#.我开始在VB6应用程序的顶部,并从那里开始.什么是RS.东西?我不明白?
Sub Main()
Dim RS As ADODB.Recordset
Dim FileName As String, FilePath As String
Dim Test As Boolean
Dim ResultCode As xcdError
Dim oAccess As Access.Application
Dim Zip_File As String
On Error GoTo ErrorHandler
' Make a connection to the database
Call MakeDBConnection
' Create a recordset of the directories to check
Set RS = New ADODB.Recordset
RS.ActiveConnection = DB
RS.CursorType = adOpenDynamic
RS.LockType = adLockOptimistic
RS.Open "Select ConversionDefinition.* From ConversionDefinition"
' Check the directories for Raw Data
' If …Run Code Online (Sandbox Code Playgroud) 我正在将我们的VBA AutoCAD脚本转移到VB.NET,但我发现了一个警告.VB.net 2010给我一个警告,这个代码是绝对的,并且有时不能用于64位.
由于我们的vba文件和AutoCAD 2012和Windows 7 X64存在问题,该程序需要64兼容.我需要使用什么而不是VB6.CopyArray?
If Flipline = True Then
P1 = VB6.CopyArray(Endpoint)
P2 = VB6.CopyArray(Beginpoint)
Else
P1 = VB6.CopyArray(Beginpoint)
P2 = VB6.CopyArray(Endpoint)
End If
Run Code Online (Sandbox Code Playgroud) 我们使用visual basic 6开发了一个独立的应用程序.现在我们将独立应用程序更改为Web应用程序.有没有办法将VB6表单转换为纯HTML表单,以便我的工作将减少很多.请提出你的建议.
编辑:我是VB6和.net技术的新手
我有一个问题,VB代码Int(Rnd() * 75) + 75)将它转移到C#.我试过了
Random random = new Random
random.Next( 75 ) + 75
Run Code Online (Sandbox Code Playgroud)
但它不对.请帮我.
谢谢
我在VB6到DotNet Migration项目中工作.在我们的VB 6项目中,他们正在计算Twips中的一些鼠标移动事件,但是当它在VB.NET中转换时,将鼠标移动值作为像素.缇是缇在.NET中支持?
任何人都可以告诉我吗?
我知道这很愚蠢,但我正在自动迁移一些代码.我的源语言允许字符串和整数之间的隐式转换,例如,这是允许的:
var = "hello " + 2
print(var) # prints "hello 2"
Run Code Online (Sandbox Code Playgroud)
可我怎么在C++重载+运算符const char*和int?我收到错误:
错误:'std :: string operator +(char*const&,int)'必须具有类或枚举类型的参数
UBound函数在VB.NET中实际做了什么,为什么MSDN文档看起来不准确?
根据MSDN文档(这里)的UBound函数:
返回数组指示维度的最高可用下标.
进一步来说:
指定维度的下标可以包含的最高值.如果Array只有一个元素,则UBound返回0.如果Array没有元素,例如,如果它是零长度字符串,则UBound返回-1.
但是,在我的测试中(以及在文档中找到的一些示例中),UBound函数返回数组的长度而不是最高的可用下标:

同样重要的是要注意,对于包含一个元素的数组,UBound返回1,而不是文档所述的0.
回答答案:
我现在看到,当您在vb.net中声明一个数组时,您声明所需的最高下标而不是C#中数组的长度.
理解这一点,我现在明白为什么UBound为声明的数组返回1而不是0 Dim c(1).因为这个数组的最高下标为1,因此给它2个元素.此外,要声明一个在vb.net中只有一个元素的数组,它应该像这样声明Dim b(0).

我目前正在将一些代码从VB6.0迁移到VB.NET,并注意到了一个问题.我是VB6.0的新手,现在我知道可以通过以下方式返回多个值:
Function test(str1 As String, str2 As String) As Long
str1 = "Hello World1"
str2 = "Hello World2"
test = 0
End Function
Run Code Online (Sandbox Code Playgroud)
当我调试时,我可以看到传递的参数现在已更新.但是我的问题是VB.NET似乎没有这样做.我怎么能在VB.NET中做到这一点?
任何意见,将不胜感激.
此代码已从 VB6 转换为 VB.Net:
Public prvMainForm = VB6Form
If prvMainForm IsNot Nothing Then
CObj(prvMainForm).StatusBar.Panels(1) = "Initializing Folders..."
End If
Run Code Online (Sandbox Code Playgroud)
(我的代码很长,所以我刚刚添加了这个if块,它是实际发生错误的地方。)
在 If 语句中的单行上可以看到错误:
属性“项目”是“只读”
我是从vb到vb.net的API转换的初学者。在vb6中,它们使用user32 DLL。在Vb.Net中,我需要调用LockWindowUpdate Function()而不使用“ User32.dll”函数。
在不使用vb.net中任何API调用的情况下,有什么方法可以锁定窗口状态?
如果等效的话,请让我告诉我这些代码。该代码应在.net框架中使用。
VB
Private Declare Function LockWindowUpdate Lib "user32"
(ByVal hWnd As Long) As Long
LockWindowUpdate Form1.hWnd
Run Code Online (Sandbox Code Playgroud) 所以我将一些代码从VB.NET迁移到C#,但是当它在C#中进行字节解析时失败了.
这是VB.NET代码可以工作:
Dim sModifiedAccountNumber_AsciiHex
Dim iByte As Byte = 0
Dim iIdx As Integer = 0
Dim strByte As String = String.Empty
sModifiedAccountNumber_AsciiHex = "FC13"
For iIdx = 1 To 3 Step 2
iByte = CByte("&H" & Mid$(sModifiedAccountNumber_AsciiHex, iIdx, 2))
If iByte >= 120 And iByte <= 127 Then
iByte = iByte Or &H80
strByte = Hex$(iByte)
Do While Len(strByte) < 2
strByte = "0" & strByte
Loop
Mid$(sModifiedAccountNumber_AsciiHex, iIdx, 2) = strByte
End If
Next
Run Code Online (Sandbox Code Playgroud)
C#版本:
string modAccountNumberAsciiHex = …Run Code Online (Sandbox Code Playgroud) 我学过VB 6.0但几乎没有.NET知识.有人可以告诉我三个版本的区别,即VB6.0,VB 2010 express和VB.NET?
vb6-migration ×12
vb.net ×7
vb6 ×6
c# ×4
.net ×1
autocad ×1
c++ ×1
c++11 ×1
forms ×1
html ×1
parameters ×1
pinvoke ×1
random ×1
vb.net-2010 ×1
vba ×1