跳到内容

Visual Basic/入门

来自维基教科书,自由的教科书

Hello World

[编辑 | 编辑源代码]

VB 中最简单的程序是这个

  Public Sub Main()
      MsgBox("Hello World!")
  End Sub

要创建这个程序,请按照以下步骤操作

  • 启动 VB
  • 将出现一个“新建项目”窗口。选择“标准.exe”,然后单击“打开”。
  • 打开 VB 的“项目”菜单,然后单击“添加模块”。
  • 将上面显示的 Main 子例程复制或输入到新的代码模块中。
  • 再次转到 VB 的“项目”菜单,然后单击“Project1 属性”项(应该是菜单中的最后一项)。
  • 在“项目属性”对话框中,您应该找到一个名为“启动对象”的下拉列表,单击它并选择“Sub Main”。
  • 转到“运行”菜单,然后单击“启动”(或按 F5)来运行程序。VB 可能会询问您是否要保存,这次只需说“否”。

正在运行的程序将在一个小消息窗口中显示“Hello World!”字样。

Visual Basic 集成开发环境

[编辑 | 编辑源代码]

Visual Basic 集成开发环境 (IDE) 是微软开发的一个程序,用于创建、测试和部署 Visual Basic (VB) 程序。VB 程序可以使用其他文本编辑器编写,然后由程序员将其转换为可执行代码(编译和链接)。VB IDE 允许程序员编写代码并立即对其进行测试,根据需要(动态)将源程序转换为可执行代码。顾名思义,创建、编辑、编译和链接都集成在这个开发环境中。

IDE 窗口的顶部显示了 VB 的菜单栏(见截图)。常见菜单类别(文件、编辑、帮助等)以及特定于创建代码的项目(项目、调试、运行)提供了 IDE 的文本界面。常用菜单项以工具栏按钮的形式直接显示在菜单栏下方。

Microsoft Visual Basic 6 集成开发环境的屏幕截图

创建程序的两个部分:使用窗体和控件设计用户界面,以及编写源代码;在 IDE 中占据了大部分空间。在初始配置中,IDE 的应用程序空间中还会出现四个可停靠窗口:项目资源管理器属性窗口窗体布局窗口工具箱。这些窗口和其他提供的窗口可以浮动在 IDE 之上,也可以停靠在 IDE 应用程序空间的侧面、顶部或底部,以方便程序员使用。单击可停靠窗口的标题栏并将其拖动,就可以随意停靠或取消停靠窗口。

可用性

[编辑 | 编辑源代码]

截至 2008 年 4 月 8 日,微软不再为 Visual Basic 6.0 IDE 提供支持。 [1] 尽管如此,Visual Basic 6 仍然可以通过 MSDN 订阅获取,名称为“Visual Studio 6”。[2]

可视化编辑

[编辑 | 编辑源代码]

VB 程序分为两个视图:用户界面的可视化设计和代码编辑器。可视化界面是通过将工具箱中的控件添加到窗体布局窗口中创建的。要将控件添加到窗体:单击工具箱中所需的控件,然后单击并拖动它在窗体布局窗口中窗体表示形式上的边界矩形。在您完成单击并拖动操作后释放鼠标按钮,所选控件将出现在窗体上。

窗体布局窗口中单击控件或窗体将突出显示该控件(或窗体),并带有大小调整手柄。您可以使用大小调整手柄更改控件的“左”、“上”、“高”和“宽”属性,或更改窗体的“高”和“宽”属性。突出显示的控件可以通过单击控件并将其拖动到适当位置来拖动到窗体上的其他位置。突出显示的控件也可以复制和粘贴,以在窗体上复制其他相同的控件。单击并拖动多个控件(套索操作)将突出显示它们,使它们作为一个组,然后可以将它们作为一个组移动,或者复制和粘贴作为一个组,根据需要操作。

代码编辑

[编辑 | 编辑源代码]

代码编辑使用代码模块窗口完成。代码模块窗口的标题文本显示了项目和模块名称。两个下拉列表显示了该模块可访问的对象(通用)和与“通用”列表中选定对象关联的子例程(声明)。在窗体的代码模块中,“通用”列表将列出放置在窗体上的所有控件。每个控件都有一组自己的事件和方法,这些事件和方法将在选择任何控件时填充“声明”列表。这两个窗口结合起来帮助程序员在程序中定位特定事件和方法的代码。在小型程序中,可以通过上下滚动编辑器来找到所需的例程进行操作。在大型程序中,找到正确的位置可能要困难得多,而这两个列表可以通过几次鼠标点击将程序员带到所需的位置。

代码编辑器可以将程序显示为一个长文本文档,或者可以一次显示程序中的一个例程。代码模块窗口左下角的两个按钮允许程序员设置自己的视图首选项。

代码编辑器可以通过移动编辑区域右上角的小条来拆分为两个视图。两个视图显示了同一个代码模块的两个不同视图。同样,在大型程序中,在模块的某个部分上工作时,同时查看模块中的另一部分代码可能会有所帮助。拆分视图模式允许程序员在创建新的方法或函数时,同时保持代码的某个部分处于视图状态。

VB 项目文件

[编辑 | 编辑源代码]

代码模块和窗体分别保存为项目文件夹中的文本文档。文件名扩展名(.xxx)用于标识文件包含的模块类型。项目文件(.vbp)描述了整个项目,命名了创建程序所需的所有文件。如果正确安装了 VB,双击项目文件将把整个项目加载到 VB IDE 的新实例中,而双击窗体(.frm)或模块(.bas)或类(.cls)或控件(.ctl)文件将把该文件加载到 IDE 的新实例中。通常,从多文件项目(项目文件除外)加载单个文件不会包含运行程序所需的所有信息。但是,在许多情况下,简短的测试代码(编写用于测试一些小想法的代码)最好保存在自己的模块(和文件)中,这样可以随意加载和丢弃。此类代码可以添加、删除或编辑,直到它完善(调试)并复制到实际程序模块中。

立即窗口

[编辑 | 编辑源代码]

在测试程序的正确性(通常称为调试)时,查看计算的中间结果或检查传递给子例程的值通常很有帮助。设置断点可以在特定行停止程序,就像将打印的值发送到另一个窗口一样。VB 提供了一个名为立即窗口的可停靠文本窗口。它在“视图”菜单下可用,或者您可以按 CTRL+G 呼出它。它被称为立即窗口,因为它可以用来立即执行 BASIC 命令。例如

Print Atn(1) * 4

当您在立即窗口中键入该行并按 Enter 键时,VB 会将该行解释为 VB 命令并执行该命令。在这种情况下,它会在命令后的下一行打印数字 3.14159265358979。(为了方便起见,在大多数情况下,问号可以代替 Print 命令。)

您可以使用 Debug 对象的 Print 方法从正在运行的程序中向同一个窗口发送文本。

Private Sub Text1_KeyPress(KeyAscii As Integer)
    Debug.Print Chr(KeyAscii), KeyAscii
End Sub

在这种情况下,如果某个窗体上有一个名为 Text1 的文本框,用户在文本框中输入的每个字母都会回显到立即窗口,以及它的数字 ASCII 值。

由于文本是使用 Debug 对象发送到立即窗口的,因此许多人将立即窗口称为调试窗口。您可能在本文档中以这两种方式找到它。

IDE 注意事项

需要注意的是,使用 VB IDE 运行程序与运行独立的可执行程序并不完全相同。在 IDE 内运行的程序作为 IDE 的子进程运行。与作为子进程运行相关的有一些细微的连接和计时问题。然而,总的来说,在 IDE 中运行的程序看起来和感觉起来都像完成的程序,但要完全测试用户将看到的程序,建议创建程序的可执行文件(.exe)并测试其正确性和可用性。

Visual Basic 程序的组成部分

[edit | edit source]

窗体

[edit | edit source]

窗体是一个窗口,其中放置了供程序用户使用的控件。.Caption 属性更改窗口标题栏上的文本,.MinButton 和 .MaxButton 属性显示或隐藏最小化和最大化按钮。不同的窗口样式,例如对话框、工具窗口和标准窗体;以及一些允许的用户操作,例如调整大小和最小化;由窗体的 .BorderStyle 属性控制。通常的做法是用 *frm*(例如:frmMain 或 frmAlert)命名窗体。

组件

[edit | edit source]

组件是可执行模块,存储为 .VBX 文件(VB 16 位版本的 Visual Basic 扩展)、.OCX 文件(32 位版本的 OLE 控件扩展)或 .DLL 文件(动态链接库)。组件是预编译的代码模块,供其他程序员使用,无论他们是否了解其内部工作机制的详细信息。预编译的组件提供了已经编写和调试过的可重用代码。组件可以是仅包含代码的(.DLL),也可以包含可以在窗体上放置的可视化组件(.VBX 和 .OCX)。VB 在 *工具箱* 中提供了许多常用组件(按钮、文本框、列表框等)作为控件。

事件

[edit | edit source]

*事件* 是程序执行期间发生的活动,通常是响应用户的操作,例如鼠标点击或按键。事件导致 *过程* 执行。作为程序员,您可以决定要放置在不同事件过程中的代码(如果有的话)。

控件

[edit | edit source]

控件属性

[edit | edit source]

要显示控件属性窗口,请选择视图\属性窗口或按 F4 键。属性窗口最初显示在主窗口的右侧边缘,并包含所有可编辑属性的名称及其当前值。某些控件属性只能在程序运行时编辑,而另一些则只能在设计模式下编辑。

按钮

[edit | edit source]

按钮将是您在 Visual Basic 中最好的朋友。每个按钮都应该包含代码,这些代码由您(程序员)添加。单击按钮后,用户将指示程序执行该部分代码。例如,您可以设置它,以便按下时,程序会弹出一个消息框,显示“HELLO!”。良好的编程风格通常在命名按钮时使用 *cmd*。

文本框

[edit | edit source]

文本框允许用户在程序中添加文本区域。此文本不必由程序员直接键入,而是可以来自其他来源,例如数据库字段、文本文件或用户在程序运行时键入的数据。虽然此属性的默认值为控件的名称,但它可以设置为任何值,包括 ""(或无)。文本框名称以 txt 为前缀,例如:*txt*。

标签

[edit | edit source]

标签是 Visual Basic 中使用最多的对象之一。它们通常用于标记其他控件(文本框、图像等)或向用户提供反馈。它们通常命名为 *lbl*。

计时器

[edit | edit source]

计时器很有趣,也很容易学习。如果您希望程序在经过一定时间后执行某项任务,计时器可以帮助您。它们唯一的事件过程是 _timer,该过程将在经过一定时间后每次执行。使用计时器的最常见步骤如下
1. 在窗体中添加一个计时器并为其命名。
2. 使用 *属性* 窗口将时间间隔设置为大于 0 的某个值。
3. 双击计时器并添加您希望在设定的间隔内执行的代码。
计时器也只有很少的属性。
这是一个计时器可能的使用方式:(要实际操作,请在新的窗体中添加一个命令按钮、形状控件和计时器。然后使用 *属性* 窗口设置计时器。Interval 属性。将下面的代码复制到窗体的代码模块中,然后按 F5 运行程序。)

  Private Sub Command1_Click()
      Timer1.Enabled = Not Timer1.Enabled
  End Sub
  
  Private Sub Timer1_Timer()
      Shape1.Visible = Not Shape1.Visible
  End Sub

这将使命令按钮停止并开始形状控件的闪烁(反复消失和重新出现)。闪烁间隔由计时器的 Interval 属性决定。**计时器。Interval** 以毫秒为单位。

以下是一个计数器的另一个计时器示例

  '***************************************************************** *
  'APRON TUTORIAL PRESENTED BY MORROWLAND *
  '***************************************************************** *
  'Project Name : Timer * * Project Description : Using Timer and
  'Counter * * Project Type : Visual Basic * * Author : Ronny André
  'Reierstad * * Web Page : www.morrowland.com * * E-Mail :
  '[email protected] * * Version : English (UK) * * Date :
  '27.06.2002 *
  '*****************************************************************
  'Timers are the backbone in any good application, you will be able
  'to decide when things will happen in millisecounds by using timers
  'and counters you gain control
  
  'declare counter as integer
  Dim counter As Integer
  
  
  Private Sub Form_Load()
      Timer1.Enabled = False 'disable timer at startup
  End Sub
  
  
  Private Sub Command1_Click()
      Timer1.Enabled = True   'starts the timer by enabling it
  End Sub
  
  
  Private Sub Command2_Click()
      Timer1.Enabled = False  'stops the timer by disabling it
  End Sub
  
  
  Private Sub Command3_Click()
      counter = 0             'reset the counter
  End Sub
  
  'The timer procedure
  'the timer procedure will loop in the interval of the timer
  'I have set the timer interval in the "properties" menu to 1000 ms (1 sec)
  Private Sub Timer1_Timer()
  
      counter = counter + 1   'we set the counter to count here
    
      Text1.Text = counter    'write the counter value out as text
    
  End Sub


VB 计时器在处理层次结构中优先级很低。如果在定时间隔到期时需要执行任何其他代码,则允许该代码在调用计时器的过程之前执行。其他代码可以使用 DoEvents 命令将其部分处理时间让给 Windows。这是唯一允许您编写的代码将时间让给程序中任何待处理的计时器事件的 VB 命令。不使用 DoEvents,**每个子例程或函数都是从头到尾以串行方式执行的。** 换句话说,一次只能执行一个命令或语句。每个子例程或函数必须按顺序列出要执行的正确命令。

图片框

[edit | edit source]

虽然被称为图片框,但这些对象不仅仅是图像框的重量级版本:图片框几乎与窗体对象具有相同的属性和功能。它可以做的远不止显示图片。描述图片框的最佳方式可能是,它们是容器,可以将其他对象分组在一起,有点类似于框架对象。例如,可以将几个命令按钮绘制在它的“内部”。

另请参阅 简单图形

通用属性

[编辑 | 编辑源代码]

VB 将一些通用属性扩展到放置在窗体上的所有控件。名称、顶部、左侧和标记是扩展属性名称中的一部分。当你在窗体上用套索选择并突出显示多个控件时,可以使用属性窗口更改所有突出显示控件的通用属性值。在那里进行更改将更改所有突出显示控件的同名属性。

引用是一种由 Visual Basic 使用的链接类型。引用一词以两种不同的方式使用。

组件引用
通常是外部库,例如 DLLOCX类型库。组件引用被添加到项目中,以便程序的所有部分都可以与外部组件交互。
对象引用
通常是指向内部 对象 的指针。对象引用区分或识别程序中的特定对象。对象一词是一个非常通用的术语,用于表示几乎所有具有要设置的属性或要调用的方法的任何事物。例如,如果您的窗体上有 5 个文本框,并且您想在一个文本框中输入文本,则需要使用正确的“对象引用”来访问该特定文本框。

这两种用法截然不同,通常不会造成任何问题。通常,当对象引用的意思时,它将被完整地写出来,而引用通常是指对外部库的引用。在这两种情况下,访问组件或对象引用的属性(或方法)都需要特殊的语法,包括一个句点来分隔对象和属性。语法为:<对象>.<属性> 或者,例如:Form1.Caption = "This" 或 Text1.Text = "That" 等,其中 Form1 或 Text1 是要更改的特定对象,而 Caption 或 Text 是要更改的特定属性。

您可以在 VB 中创建 组件 供其他程序使用(不仅仅是使用 VB 编写的程序)。

保留字

[编辑 | 编辑源代码]

Visual Basic 包含多个保留字。这些词是“保留的”,因为它们是 Visual Basic 中的特定函数和命令。例如,变量不能命名为“Print”,因为它是在 VB 中打印的特性。但是,可以通过将变量命名为“prnt”或“print1”来避免这种情况。只要它不是完全相同的单词,它就应该可以工作。一个常用的保留字/关键字列表

  And
  As
  Beep
  Call
  Close
  Command
  Date
  Do
  End
  Error
  Event
  Exit
  False
  For
  Function
  Get
  GoTo
  If
  Input
  Kill
  Let
  Load
  Loop
  Me
  Name
  Next
  Not
  Nothing
  On
  Option
  Or
  Print
  Private
  Public
  Put
  Reset
  Resume
  Set
  Step
  Stop
  Sub
  Then
  Time
  True
  Until
  While
  With

在编程时,您可能会发现有必要给自己留下笔记。这可以用于轻松识别代码区域,或者作为逻辑错误代码段的提醒,这些错误需要修复。REMs 非常简单。只需在行前放置一个撇号“ ' ”或单词“REM”,该行将被解释器忽略,无论是对自己的消息还是代码段。例如

  ' I leave notes to myself
  REM or I could do it like this
  'If I REM a line of code it will not execute!
  REM x=5

撇号最常使用,因为与 REM 相比,它在空间和时间上的减少是相对的,因为 REM 已被包含在内,以向后兼容早期版本的 BASIC。REM 语句是一个基本命令,如果在同一行上的其他命令之后,它必须以冒号开头。撇号不需要冒号。

  x = 5 'This comment will work
  y = 3: REM and this comment will work.
  z = 1 REM This line would cause a syntax error.

错误检查

[编辑 | 编辑源代码]

这些是 VB 程序可能遇到的几种常见的错误类型。

运行时错误
这种类型的错误是在程序运行时引发的错误。例如:将任何东西除以零或将字符串分配给数字变量。
编译错误
编译错误是 IDE 在设计时以及在程序运行之前编译程序时发现的错误。这些错误包括语法错误——在计算机不理解您的代码时引发的错误,以及未声明的变量等错误。
逻辑错误
逻辑错误是计算机无法发现的错误。这些错误是,即使程序运行,结果也不是您想要的。

前两种错误通常很容易发现,调试工具可用于突出显示发生错误的文本行。例如,如果您想编写一个将摄氏度转换为华氏度的程序,并且在代码中使用乘法符号而不是除法符号,则程序将正常运行,但程序不会按照您的预期正确转换温度。虽然有时这些逻辑错误很容易发现,但有些却很难发现。在编写复杂的程序(例如游戏)时,逻辑错误会隐藏在代码行中。请记住,计算机不知道程序应该做什么,它只知道代码。逐步查看代码,并思考计算机将如何解释代码。

VB 不会让您忽略语法/编译错误。您必须在运行程序之前修复它们。但是运行时错误,这些错误在语法上是正确的,但在尝试执行时可能会导致错误,可以被处理,以防止程序崩溃。以下示例展示了一种处理可能错误的非常好的方法。

  Private Sub Form_Load()
      On Error GoTo ErrorHappened
      i = 1 / 0 'This line will cause an error to be raised as anything divided by zero = infinity
      '...
      'Some code
      Exit Sub 'Here the subroutine is exited if no errors occur
  ErrorHappened:
      'Informs the user an error happened.
      MsgBox "Error Number " & Err.Number & ":" & Err.Description
  End Sub

此示例的输出是一个消息框,显示“错误号 11:除以零”。语句On Error Goto ErrorHappened 将跳过从i = 1 / 0Exit Sub如果在此过程内发生任何运行时错误。检测到错误时,程序将继续从ErrorHappened:之后运行,在那里将显示错误,以便程序员可以找出错误并修复它。这也防止了程序“崩溃”。

ErrorHappened 只是一个行标签,您可以根据需要命名它来标识您想在发生错误时执行的那一部分过程。On Error Goto 只能引用当前过程中的行标签。您不能(轻松地)为所有过程定义一个错误处理程序。Exit Sub 表示立即结束 Form_Load 事件。

因此,如果未发生错误,则不会调用消息框,因为Exit Sub 已经结束或退出了我们的子例程。如果确实发生了错误,则消息框将弹出,显示错误号和错误描述。

上面的示例是在子例程中检测和处理任何错误的最安全方法。但是您也可以选择使用“On Error Resume Next”忽略错误,这意味着忽略所有错误。在大多数情况下,忽略错误不是一个好主意,但在某些情况下,处理错误的正确方法是不要做任何事情,因此它们最好被忽略。即使使用 Resume Next,您也可以测试 Err 对象 (Err.Number) 以查看在前面的行上是否发生了错误。

有关错误处理的更多详细信息,请参阅 错误

声明变量(维数)

[编辑 | 编辑源代码]

如果您还不知道,变量根据字典定义:是用于数学或逻辑表达式来表示可变数量的符号(如 x 或 y)。在数学中,常见的变量是:x、y、z 等,它们可以“保存”值,例如 x=1、y=3 等。在 VB 中,变量可以使用您想要的任何名称,而不是 x、y 和 z。通常,良好的做法是,有时甚至是必要的,对变量进行维数。通常被称为“调光”。此过程为变量赋予其名称和它将能够保存的值类型(将在后面讨论)。要对变量进行维数,代码为

  Dim variablename [As Type]

当然,变量名可以是您想要的任何名称。但是,类型是不同的。您可以选择单精度、整数或字符串。这告诉计算机变量保存什么类型的信息。“单精度”变量可以保存带有小数的数字。“整数”变量可以保存整数,而“字符串”变量保存文本或一组字符。如果您没有调光变量,则类型将自动为“Variant”,它可以保存几乎所有类型的信息。例如

  Option Explicit
  Dim intNumber As Integer

  intNumber = 31             ' This is ok
  intNumber = "I didn't"     ' Error: type mismatch (intNumber is an integer while "I didn't" is a string)

调光对于数组和矩阵尤其重要。对于数组,您在变量名称旁边输入数组的范围。例如

  Dim x(1 to 10) As Integer

数组将在后面更深入地介绍。矩阵的维数与数组几乎完全相同,但是,而不是只有一个维度(1 到 20),矩阵可能有两个:(1 到 20,1 到 5),甚至三个。维数也可用于告诉计算机变量是公共的。这将在后面的作用域部分讨论。

注意:如果您没有对变量进行维数,您最终可能会遇到许多意想不到的错误。可以通过使用 Option Explicit 语句来避免这种情况,该语句要求定义每个变量;如果程序中使用的每个变量都没有定义,则 VB 会引发一个错误:“变量未定义”。要启用此功能,您只需在当前模块中所有代码的最顶端键入 Option Explicit。这样做是一个非常好的做法。

简单输出

[编辑 | 编辑源代码]

用户和计算机之间的交互包括数据的输入和输出。如果您没有鼠标或键盘(用于输入命令),则计算机将无法接收您的命令。反之,如果没有显示器或扬声器(用于输出数据),您根本不知道计算机在做什么。因此,输出很重要。

消息框

[编辑 | 编辑源代码]

最简单的输出形式之一是消息框。我相信你在 Windows 中已经见过很多消息框了。下面是普通消息框的代码示例。

  MsgBox("Hello world!")

试试看。你厌倦了枯燥的“Hello world!”了吗?让我们做一个更花哨的。

  MsgBox("Fatal error: Your computer will be shut down in five seconds.", vbCritical, "System")

这会吓到很多人。

注意:这里“打印”指的是使用 Print 语句,而不是指使用打印机或打印文件。打印是 Visual Basic 中一个相当简单的部分,但也是必不可少的。打印用于向用户输出信息。它被证明是一个宝贵的故障排除工具。在打印时,你需要一个要打印的物体,当然还要有要打印的内容。打印可以使用各种对象,但最常见的是图片框。为了简单起见,我们假设你将图片框重命名为“pic”。在这本维基教科书中,打印主要在图片框和窗体上完成。

  pic.Print "Hello world!!"   'Prints message on picture box
  Print "Hello world!!!"      'Prints message on current form

有各种方法可以改变打印时文本的间距。最常见的是逗号。逗号将跳到下一个打印区。打印区长度为 15 个字符。你可以把它想象成在打字时按 Tab 键。请记住,打印区是固定的,因此如果你输入了一个字母,然后使用了一个逗号,那么就会有一个很大的空格。如果你输入了 13 个字符并使用了一个逗号,那么就不会有一个很大的空格。例如:

  Private Sub Form_Click()
      Me.Print "Hello", "Next Zone"
  End Sub

在这个例子中引入了几个新的概念。 "Form_Click" 包含一段代码块,当用户点击当前窗体 (Form1) 时会调用它。 'Me' 与当前窗体 (Form1) 相同。不要害怕尝试。无论你在 VB 中做什么,它都是可逆的。现在,逗号并不是万能的。另一个功能是 Tab。Tab 会从行的开头移动多个空格。在 Tab 后面的括号中是空格的字符数。例如:

  Form1.Print "Hello"; Tab(10); "Yay"

这不会在 "Hello" 中的 O 后面打印 10 个空格的 "yay"。而是在行的开头打印 10 个空格。你可以在同一个打印命令中使用任意数量的 Tab。虽然 Tab 很有用,但有时最好是根据已经打印的内容来间隔文字。这就是 Space 函数的作用。Space 的语法与 Tab 的语法相同。Space 会将下一个打印的文本从其当前位置向右移动多个空格。例如:

  Pic.print "Hello"; Space(10); "Yay"

这会在 "Hello" 中的 O 右边打印 10 个空格的 "Yay" 的第一个 Y。需要注意的是,如果你写:

  Pic.Print "Hello"
  Pic.Print "Hello"

它们将出现在不同的行上,如:

 Hello
 Hello

这可以通过将代码改为以下方式轻松解决(注意分号):

  Pic.Print "Hello";
  Pic.Print "Hello"

这将显示为:

 HelloHello

如果你想在两个 "hello" 之间添加一个空白行,你只需使用一个空的 Print 语句,没有分号。例如:

  Pic.Print "Hello"
  Pic.Print
  Pic.Print "Hello"

这将打印为:

 Hello
 
 Hello

重要的是要记住,如果第一个 Print 语句在末尾有一个分号,通常称为尾部分号,那么空的 Print 语句只会将其反转,并在下一行打印第二个 Hello,并且不会出现空白行。


前一节:历史 目录 下一节:简单算术
华夏公益教科书