Разбираюсь с загрузгой TXT.

ЧайникПолный
Дата: 25.11.2009 10:45:59
Доброе утро.

На открытие формы повесил процедуру по считыванию текстового файла:



Private Sub Form_Open(Cancel As Integer)





Dim f As Long
Dim FileTxt As String
Dim FileName As String

FileName = "C:\1\1.txt"

f = FreeFile

Open FileName For Input As f
Do While Not EOF(f)
  FileTxt = Input(1, #f)
  Debug.Print UsefulTxt
Loop
Close #f


MsgBox (FileTxt)


End Sub




Но почему-то считывается только один последний символ из файла. :(



Подскажите пожалуйста как считать весь файл?
ЧайникПолный
Дата: 25.11.2009 10:51:37
Вот тут по шагам пытаюсь разобраться, т.к. скрипт просто в интернете нашел:



Dim f As Long
Dim FileTxt As String
Dim FileName As String
Объявляем переменные.




FileName = "C:\1\1.txt"
Задаём имя файла с директорией



f = FreeFile
Не знаю что это






Open FileName For Input As f
Открываем файл



Do While Not EOF(f)
Пока файл не кончится делаем цикл




  FileTxt = Input(1, #f)
Не понятно как это работает, т.к. если вместо 1 ставлю 5 - какие-то ошибки и аксесс закрывается





  Debug.Print UsefulTxt
Не понятно что это




Loop
Конец цикла

Close #f
Закрываем канал



Вощем не понятны вот эти строки


  f = FreeFile
  FileTxt = Input(1, #f)
  Debug.Print UsefulTxt
отакота
Дата: 25.11.2009 11:04:13
ЧайникПолный
Вощем не понятны вот эти строки

f = FreeFile ->получаете хэндлер (номер) для последующего открытия файла
FileTxt = Input(1, #f) ->читаете очередной символ из файла
Debug.Print UsefulTxt ->печатаете в окно отладки значение переменной UsefulTxt

таким образом ваш в код в цикле считывает в переменную FileTxt данные из файла по одному символу, естественно, что при выходе из этого цикла в этой переменной останется тот символ, который был прочитан самым последним.
ЧайникПолный
Дата: 25.11.2009 11:08:50
отакота
ЧайникПолный
Вощем не понятны вот эти строки

f = FreeFile ->получаете хэндлер (номер) для последующего открытия файла
FileTxt = Input(1, #f) ->читаете очередной символ из файла
Debug.Print UsefulTxt ->печатаете в окно отладки значение переменной UsefulTxt

таким образом ваш в код в цикле считывает в переменную FileTxt данные из файла по одному символу, естественно, что при выходе из этого цикла в этой переменной останется тот символ, который был прочитан самым последним.


Спасибо за разьяснение :)

т.е.

Debug.Print UsefulTxt ->печатаете в окно отладки значение переменной UsefulTxt


Можно не использовать?
отакота
Дата: 25.11.2009 11:11:18
ЧайникПолный
т.е.

Debug.Print UsefulTxt ->печатаете в окно отладки значение переменной UsefulTxt


Можно не использовать?
а почему вы меня спрашиваете? Вы же используете этот код - вам и решать.
ЧайникПолный
Дата: 25.11.2009 11:14:15
отакота
ЧайникПолный
т.е.

Debug.Print UsefulTxt ->печатаете в окно отладки значение переменной UsefulTxt


Можно не использовать?
а почему вы меня спрашиваете? Вы же используете этот код - вам и решать.


Убрал - вроде все работает, так же один символ с конца выдает.

Сейчас буду пробовать сточку собрать :)
ЧайникПолный
Дата: 25.11.2009 11:17:06
Ура - читает все строки!

Dim f As Long
Dim FileTxt As String
Dim FileTxtAll As String
Dim FileName As String

FileName = "C:\1\1.txt"

f = FreeFile

Open FileName For Input As f
Do While Not EOF(f)
  FileTxt = Input(1, #f)
FileTxtAll = FileTxtAll + FileTxt
Loop
Close #f


MsgBox (FileTxtAll)



Спаисбо за помощь :)
Ёжик`
Дата: 25.11.2009 11:30:23
Public Function ReadTextFile(fName As String) As String
On Error GoTo er
Dim FSO, FSTR
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(fName) Then
    Set FSTR = FSO.OpenTextFile(fName)
    ReadTextFile = FSTR.ReadAll
    FSTR.Close
    Set FSTR = Nothing
End If
Set FSO = Nothing
ex: Exit Function
er: MsgBox Err.Description, vbCritical, Err.Number
End Function
ЧайникПолный
Дата: 25.11.2009 12:06:18
Ёжик`
Public Function ReadTextFile(fName As String) As String
On Error GoTo er
Dim FSO, FSTR
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(fName) Then
    Set FSTR = FSO.OpenTextFile(fName)
    ReadTextFile = FSTR.ReadAll
    FSTR.Close
    Set FSTR = Nothing
End If
Set FSO = Nothing
ex: Exit Function
er: MsgBox Err.Description, vbCritical, Err.Number
End Function



Спасибо :)
ЧайникПолный
Дата: 25.11.2009 12:09:26
Сейчас возникла ещё одна проблемма, имя файла указывал

FileName = "config.ini"

Т.е. без пути у файлу.

И аксесс брал его из той же директории что и сам файл аксесса.

А после того как закрыл аксесс и снова открыл.

Он файл перестал брать из той же директории - ошибку выдает.


Подскажите пожалуйста как указать директорию такую же как у файла аксесса?

Что-то типа

FileName = ПолучитьПутьКФайлуАксесса + "config.ini"


Должно получиться.