2014-09-02 2 views
0

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

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

заявление не действительное пространство имен

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

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

Enter image description here

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-файлы ...

+3

IDE и имена файлов похожи на VB.NET для меня – Rob

ответ

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.

Смежные вопросы