Инструкция Visual Basic 6.0 не находится в допустимом пространстве имен

Я изучаю Visual Basic 6.0 и создаю приложение для захвата скриншота.

Я нашел пример кода для изучения приложения. Тем не менее, я получаю:

оператор не находится в допустимом пространстве имен

Тем не менее, он указывает на ошибку "Private Sub Main()".

Я приложу скриншот ниже:

Введите описание изображения здесь

Option Explicit

Private Sub Main()

    ' Declare Variables used in the program
    Dim status As Long       'VISA function status return code
    Dim defrm As Long        'Session to Default Resource Manager
    Dim vi As Long           'Session to instrument
    Dim x As Integer         'Loop Variable
    Dim ArrayPtr(1) As Long  'Array of Pointers
    Dim length As Long       'Number of bytes returned from instrument
    Dim fnum As Integer      'File number to used to open file to store data
    Dim isOpen As Boolean    'Boolean flag used to keep track of open file
    Dim headerlength As Long 'length of header
    Dim ResultsArray(50000) As Byte 'Results array, Big enough to hold a GIF

    'Set the default number of bytes that will be contained in the
    'ResultsArray to 50,000 (50 kB)
    length = 50000

    'Set the array of pointers to the addresses of the variables
    ArrayPtr(0) = VarPtr(length)
    ArrayPtr(1) = VarPtr(ResultsArray(0))

    'Delete picture.gif file if it exists
    On Error Resume Next
    Kill "picture.gif"

    On Error GoTo Error_Handler

    'Open the default resource manager session
    status = viOpenDefaultRM(defrm)

    'Open the session. Note: For PSA, to use LAN, change the string to
    ' "TCPIP0::xxx.xxx.xxx.xxx::inst0::INSTR" where xxxxx is the IP address
    status = viOpen(defrm, "GPIB0::18::INSTR", 0, 0, vi)
    If (status < 0) Then GoTo VisaErrorHandler

    'Set the I/O timeout to fifteen seconds
    status = viSetAttribute(vi, VI_ATTR_TMO_VALUE, 15000)
    If (status < 0) Then GoTo VisaErrorHandler

    'Store the current screen image on flash as C:PICTURE.GIF
    status = viVPrintf(vi, ":MMEM:STOR:SCR 'C:PICTURE.GIF'" + Chr$(10), 0)
    If (status < 0) Then GoTo VisaErrorHandler

    'Grab the screen image file from the instrument
    status = viVQueryf(vi, ":MMEM:DATA? 'C:PICTURE.GIF'" + Chr$(10), _
             "%#y", ArrayPtr(0))

    'Delete the tempory file on the flash named C:PICTURE.GIF
    status = viVPrintf(vi, ":MMEM:DEL 'C:PICTURE.GIF'" + Chr$(10), 0)
    If (status < 0) Then GoTo VisaErrorHandler

    'Close the vi session and the resource manager session
    Call viClose(vi)
    Call viClose(defrm)

    'Store the results in a text file
    fnum = FreeFile()  'Get the next free file number
    Open "picture.gif" For Binary As #fnum
    isOpen = True
    headerlength = 2 + (Chr$(ResultsArray(1)))
    For x = headerlength To length - 2
        Put #fnum, , ResultsArray(x)
    Next x

    ' Intentionally flow into Error Handler to close file
Error_Handler:
    'Raise the error (if any), but first close the file
    If isOpen Then Close #fnum
    If Err Then Err.Raise Err.Number, , Err.Description
    Exit Sub

VisaErrorHandler:
   Dim strVisaErr As String * 200
   Call viStatusDesc(defrm, status, strVisaErr)
   MsgBox "*** Error : " & strVisaErr, vbExclamation, "VISA Error Message"
   Exit Sub
End Sub

Я не уверен, почему и как решить эту проблему для создания EXE-файлов...

1 ответ

Вы не можете поместить метод (Sub Main) непосредственно в пространство имен. Это должно быть в модуле или классе.

Попробуйте что-то вроде этого:

Option Explicit

Module MyModule
    Private Sub Main()
        '... The rest of the code here
    End Sub
End Module

Также ваша ошибка показывает, что имя файла - screen.bas. Я не думаю, что файлы.bas поддерживаются в VB.NET. Измените имя файла так, чтобы оно имело расширение.vb.

Наконец, не используйте On Error... GoTo.... Вы должны использовать Try ... Catch вместо.

Другие вопросы по тегам