Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Syntax 这是什么Visual Basic语法(开始/结束,无类)?_Syntax_Identification - Fatal编程技术网

Syntax 这是什么Visual Basic语法(开始/结束,无类)?

Syntax 这是什么Visual Basic语法(开始/结束,无类)?,syntax,identification,Syntax,Identification,最近,我的雇主给了我一些旧的源代码,并要求我确定它是否可以修复以移植到新技术,或者我们是否应该从头开始。据我所知,这是一个用Visual Studio编写的Visual Basic、通用Windows项目。我的经验主要是在C#,.NETMVC/Core/entityframework中,因此我通常可以很好地理解Visual Basic,但项目的大部分内容都包含语法,我似乎找不到任何相关信息 如下图所示,构成项目大部分的.frm文件包含“Begin VB.Form[FormName]”,其中包含一

最近,我的雇主给了我一些旧的源代码,并要求我确定它是否可以修复以移植到新技术,或者我们是否应该从头开始。据我所知,这是一个用Visual Studio编写的Visual Basic、通用Windows项目。我的经验主要是在C#,.NETMVC/Core/entityframework中,因此我通常可以很好地理解Visual Basic,但项目的大部分内容都包含语法,我似乎找不到任何相关信息

如下图所示,构成项目大部分的.frm文件包含“Begin VB.Form[FormName]”,其中包含一些属性和组件,并在结束时关闭。然后是一些属性和子例程。似乎没有任何东西被包装在类中(正如我从C#中期望的那样),VisualStudio到处抛出错误(主要是“语句不能出现在方法体之外”)

我唯一的猜测是,该类以某种方式在文件顶部的对象中被引用,随后的所有内容都扩展了该类,但许多.frm文件根本没有对象,Visual Studio对此都有抱怨

那么我在这里错过了什么?我是否只是把项目类型弄错了,妨碍了VisualStudio正确地解释它?这是我找不到任何信息的旧Visual Basic语法吗?这完全是另一种语言吗?或者它是超标准的,我只是不知道我在做什么 VB6(和VBA)源代码文件包含的数据比VBIDE显示的数据多。例如,属性在VBE的代码窗格中是非法的

如果将该文件导入VBE,您将看到编辑器中的模块内容从这里开始(该行可能应该是
Option Explicit
BTW):

以上所有内容都是设计器元数据。从C#开始,您应该熟悉WinForms最初是如何陷入类似的混乱状态的(
#区域
),直到
部分
类得到支持

beginvb.Form
块可以看作是某种
frmEqualizer.designer.VB
部分类;代码文件本身是一个类定义,如以下属性所示:

Attribute VB_Name = "frmEqualizer"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
如果要翻译此代码或将其迁移到.NET/WinForms,则
Begin VB.Form
块是布局元数据,告诉VB要在表单上的何处加载哪些控件,以及它们的设计器属性是什么:

   Begin MSComctlLib.Slider Slider14000Hz 
      Height          =   1995
      Left            =   5602
      TabIndex        =   8
      TabStop         =   0   'False
      Top             =   420
      Width           =   645
      _ExtentX        =   1138
      _ExtentY        =   3519
      _Version        =   393216
      Orientation     =   1
      Min             =   -1500
      Max             =   1500
      TickStyle       =   2
      TickFrequency   =   150
   End
例如,此块定义了一个名为
Slider14000Hz
mscomctlib.Slider
设计时实例,它从-1500滑动到1500,宽645 twips,高1995 twips,位于表单坐标(左上角的twips)中的(顶部:420,左侧:5602)

这一行:

正在加载使用CLSID注册的COM对象
{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}
,版本2.1,库“Mscomctl.ocx”-又名Microsoft Common Controls,该库定义此处使用的
滑块
控件(如果是VBA代码,则它仅在32位Office主机中运行)


如果表单具有二进制元数据(例如嵌入的图标或图像),则应在与
.frm
相同的文件夹中有一个同名的
.frx
文件。

这看起来像VB6代码,因此需要VB6 IDE来处理它。这就是VB6代码。所有*.frm都是使用可视化设计器设计的表单。
Begin VB.Form
和last
End
之间的所有内容都是表单及其控件的布局和属性。实际(用户)代码从行
Public m_nUserResponse作为VbMsgBoxResult
开始。如果可以的话,找一份VS.NET2008的旧版本。它有一个集成的VB6->VB.NET迁移向导。我想这至少会让你更容易浏览这个项目。非常感谢!这有助于清理很多!感谢您包含关于对象和.frx文件的内容(我甚至没有提到)。我想知道这些。
   Begin MSComctlLib.Slider Slider14000Hz 
      Height          =   1995
      Left            =   5602
      TabIndex        =   8
      TabStop         =   0   'False
      Top             =   420
      Width           =   645
      _ExtentX        =   1138
      _ExtentY        =   3519
      _Version        =   393216
      Orientation     =   1
      Min             =   -1500
      Max             =   1500
      TickStyle       =   2
      TickFrequency   =   150
   End
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0"; "Mscomctl.ocx"