Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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
Автор ответа:
 Vit



Вопросов: 68
Ответов: 62
 Web-сайт: www.home-soft.jino-net.ru
 Профиль | | #1
Добавлено: 10.09.05 19:59
Поменяй местами строки


If List1.ListCount <> 0 Then
Open App.Path & "\CD&;DVD.dbs" For Output As #1


т.е. так:

Open App.Path & "\CD&;DVD.dbs" For Output As #1
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&;DVD.dbs" For Input As #n: size = LOF(n)
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
Автор ответа:
 el-paso



Вопросов: 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&;DVD.dbs" For Output As #n
        '
        ' пишем
        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&;DVD.dbs";) <> "" Then
        '
        ' открываем
        n = FreeFile
        Open App.Path & "\CD&;DVD.dbs" For Input As #n
        '
        ' читаем-заполняем
        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
Автор ответа:
 Vit



Вопросов: 68
Ответов: 62
 Web-сайт: www.home-soft.jino-net.ru
 Профиль | | #4
Добавлено: 11.09.05 17:16
Да, el-paso уже написал, больше добавить нечего.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам