Страница: 1 |
Вопрос: Помогите с Листами | Добавлено: 10.09.05 19:29 |
Автор вопроса: ![]() |
Всем привет!
Есть проблемка, на форме у меня два листа: List1 и List2. При выходе из проги содержимое этих листов записывается в файл, а при старте проги загружается из файла. Записываю я в файл так: Private Sub Form_Unload(Cancel As Integer)
Dim x As Integer If Check1.Value Then If List1.ListCount <> 0 Then Open App.Path & "\CD&DVD.dbs" For Output As #1 For x = 0 To List1.ListCount - 1 Print #1, List1.List(x) Next Print #1, "<End List 1>" End If If List2.ListCount <> 0 Then For x = 0 To List2.ListCount - 1 Print #1, List2.List(x) Next End If Close #1 End If End Sub Так во проблема в том, что если в List1 нет никакой инфы, а в List2 инфа есть, то при выходе выдается ошибка Bad file name or number и указывается на строку Print #1, List2.List(x) Помогите, разрешить проблему. СПАСИБО! |
Ответы | Всего ответов: 4 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 68 Ответов: 62 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 10.09.05 19:59 |
Поменяй местами строки
If List1.ListCount <> 0 Then Open App.Path & "\CD& ![]() т.е. так: Open App.Path & "\CD& ![]() If List1.ListCount <> 0 Then и Close #1 End If так: End If Close #1 Если список List1 - пуст, то открытия файла не произойдёт. |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 3 |
Профиль | Цитата | #2 | Добавлено: 10.09.05 21:30 |
2 Vit, это работает, но когда я закрываю прогу и инфа остается в List2, а потом запускаю прогу, то та инфа из List2 переходит в List1. А загружаю я так:
Private Sub Form_Load()
Dim size As Long Dim n As Byte Dim flag As Boolean Dim s As String n = FreeFile On Error Resume Next Open App.Path & "\CD& ![]() If size = 0 Then Exit Sub Do While Not EOF(n) Line Input #n, s$ If s$ = "<End List 1>" Then flag = True GoTo nxt End If If flag = False Then List1.AddItem s$ Else List2.AddItem s$ End If nxt: Loop Close #n End Sub |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() Вопросов: 3 Ответов: 164 |
Профиль | Цитата | #3 | Добавлено: 11.09.05 00:54 |
Просто немного логика нарушена. Мой вариант работает.
Private Sub Form_Unload(Cancel As Integer) ' Dim n%, x& ' ' надо ли записывать? If Check1.Value Then ' ' открываем n = FreeFile Open App.Path & "\CD& ![]() ' ' пишем For x = 0 To List1.ListCount - 1 Print #n, List1.List(x) Next Print #n, "<End List 1>" For x = 0 To List2.ListCount - 1 Print #n, List2.List(x) Next ' ' закрываем Close #n ' End If ' End Sub Private Sub Form_Load() ' Dim n%, s$ ' ' есть ли файл? If Dir$(App.Path & "\CD& ![]() ![]() ' ' открываем n = FreeFile Open App.Path & "\CD& ![]() ' ' читаем-заполняем Do While Not EOF(n) Line Input #n, s If s$ = "<End List 1>" Then Exit Do List1.AddItem s Loop Do While Not EOF(n) Line Input #n, s List2.AddItem s Loop ' ' закрываем Close #n ' End If ' End Sub |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 68 Ответов: 62 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 11.09.05 17:16 |
Да, el-paso уже написал, больше добавить нечего. |
Страница: 1 |
|