2017-01-13 8 views
0

Результат такой же, но кодировка совершенно иная. Может ли кто-нибудь объяснить, что отличает эти два? Какой из них лучше работает?Разница между Public и Dim

★★ Это первый один с помощью Dim ★★

Option Explicit 


Sub Main() 

Dim fileNo_input As Integer 
Dim fileNo_output As Integer 
Dim buf As String 

fileNo_input = FreeFile 
Open "D:\text.txt" For Input As #fileNo_input 

fileNo_output = FreeFile 
Open "D:\output.txt" For Append As #fileNo_output 

Do While Not EOF(fileNo_input) 

    Input #fileNo_input, buf 

    Print #fileNo_output, buf 
Loop 

Close #fileNo_input 
Close #fileNo_output 

End Sub 

★★ И второй один использует Public ★★

Option Explicit 

Public buf(10) As String  
Public line As Integer  

Sub Main() 

FILE_READ ("D:\text.txt") 

FILE_WRITE ("D:\output.txt") 

End Sub 


Function FILE_READ(INPUT_FILENAME As String) 

Dim fileNo_input As Integer 

fileNo_input = FreeFile 
Open INPUT_FILENAME For Input As #fileNo_input 

line = 0 

Do While Not EOF(fileNo_input) 
    Input #fileNo_input, buf(line) 
    line = line + 1 
Loop 

Close #fileNo_input 

End Function 

Function FILE_WRITE(OUTPUT_FILENAME As String) 

Dim fileNo_output As Integer 
Dim i As Integer 

fileNo_output = FreeFile 
Open OUTPUT_FILENAME For Append As #fileNo_output 

For i = 0 To line - 1 
    Print #fileNo_output, buf(i) 
Next 

Close #fileNo_output 

End Function 

Интересно, что это отличается от обоих, для меня это на 100%, потому что результат абсолютно одинаковый.

+0

Они скрывают множество окончательной информации о таком роде вещей на MSDN – Plutonix

ответ

1

Dim такой же, как частный, и не такой, как Public.

Когда вы объявляете переменную уровня класса с помощью DIM, она является частной только для этого класса, вы не можете получить к ней доступ извне класса.

Чтобы сделать переменную доступной вне класса, вам понадобится публичный спецификатор.

для получения дополнительной информации см

http://www.vbforums.com/showthread.php?468662-Classic-VB-What-is-the-difference-between-Dim-Private-Public-Global-Static-Const

+0

Если VB эволюционировали за VB 6.0, скорее всего, модуль уровня Dim бы сделали синтаксис ошибка, так как вы должны использовать «Частный» для обозначения «Частный». В VB 6.0 все еще было принято решение портировать старый базовый код. К сожалению, VB был убит после VB 6.0, и поэтому у нас не было много улучшений, которые мы должны были иметь. – Bob77

+0

Прошу прощения, но что вы подразумеваете под «частным только для этого класса»? и что вы подразумеваете под «переменной, доступной вне класса»? Я имею в виду, что такое класс? – elimiaw