Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с txt файлами 
V
    Опции темы
Linzer
Дата 7.10.2010, 05:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 7.10.2010

Репутация: нет
Всего: нет



Не могу понять в чем ошибка. Есть 2 формы, в 1й есть ListView - в него грузятся данные из тхт файла, во 2й форме происходит добавление новой инфы в тхт файл. Есть модуль, в котром есть 2 процедуры, соответственно 1я на загрузку инфы, 2я на добавление. 

Загрузка:
Код

Public Sub obnovlenie()
Form1.ListView1.ListItems.Clear
baza = App.path & "\db.txt"
i = 1
p = 0
razdel = "|"
nFreeFile = FreeFile
Open baza For Input As #nFreeFile
nFileLenght = FileLen(baza)
If nFileLenght = 0 Then
Close #nFreeFile
Exit Sub
Else
Do
    Line Input #nFreeFile, strFileContent
Do
dlina = Len(strFileContent)
nFilm = ""
name_f = ""
genre_f = ""
format = ""
video_f = ""
audio_f = ""
country_f = ""
simvol = ""
god_f = ""
sub_f = ""

nFilm = Left(strFileContent, 3)

For i = 5 To dlina
simvol = Mid(strFileContent, i, 1)
If simvol = "|" Then
p = i + 1
i = 0
Exit For
End If
Next i

For i = p To dlina
simvol = Mid(strFileContent, i, 1)
If simvol <> razdel Then
name_f = name_f & simvol
Else
p = i + 1
i = 0
Exit For
End If
Next i

For i = p To dlina
simvol = Mid(strFileContent, i, 1)
If simvol <> razdel Then
genre_f = genre_f & simvol
Else
p = i + 1
i = 0
Exit For
End If
Next i

For i = p To dlina
simvol = Mid(strFileContent, i, 1)
If simvol <> razdel Then
format = format & simvol
Else
p = i + 1
i = 0
Exit For
End If
Next i

For i = p To dlina
simvol = Mid(strFileContent, i, 1)
If simvol <> razdel Then
video_f = video_f & simvol
Else
p = i + 1
i = 0
Exit For
End If
Next i

For i = p To dlina
simvol = Mid(strFileContent, i, 1)
If simvol <> razdel Then
audio_f = audio_f & simvol
Else
p = i + 1
i = 0
Exit For
End If
Next i

For i = p To dlina
simvol = Mid(strFileContent, i, 1)
If simvol <> razdel Then
country_f = country_f & simvol
Else
p = i + 1
i = 0
Exit For
End If
Next i

For i = p To dlina
simvol = Mid(strFileContent, i, 1)
If simvol <> razdel Then
god_f = god_f & simvol
Else
p = i + 1
i = 0
Exit For
End If
Next i

For i = p To dlina
simvol = Mid(strFileContent, i, 1)
sub_f = sub_f & simvol
Next i

Loop Until dlina = dlina
dbaz
Loop Until EOF(1) = True
Close #nFreeFile
End If
End Sub


Добавление:
Код

Public Sub film_add()
'Проверка
If Form2.Text1.Text = "" Or Form2.Text2.Text = "" Or Form2.Text3.Text = "" Or Form2.Text4.Text = "" Or Form2.Combo1.Text = "" Or Form2.ListView2.ListItems.Count = 0 Or Form2.ListView4.ListItems.Count = 0 Then
MsgBox "Пожалуйста, заполните все поля!", vbOKOnly + vbInformation, "Видеотека ver. 1.0"
Exit Sub
End If
'Добавление фильма
baza = App.path & "\db.txt"
nFreeFile = FreeFile
nFilm = 0
razdel = "|"
Close #1
Open baza For Input As #nFreeFile
nFileLenght = FileLen(baza)
strFileContent = Input(nFileLenght, #nFreeFile)
If strFileContent = Empty Then
GoTo close_bd_empty
Else
GoTo close_bd
End If
close_bd_empty:
Close #nFreeFile
genre_rashirenie_country

'Если БД пуста
Open baza For Output As #nFreeFile
genre_rashirenie_country
nFilm = 1
Print #nFreeFile, nFilm & "  |" & Form2.Text5.Text & "|" & Form2.Text1.Text & "|" & film_genre & "|" & UCase(rashirenie) & "|" & Form2.Text2.Text & "|" & Form2.Text3.Text & "|" & film_country & "|" & Form2.Text4.Text & "|" & Form2.Combo1.Text
close_bd:
Close #nFreeFile

'Если БД <> Empty
Open baza For Append As #nFreeFile
genre_rashirenie_country
nFilm = Form1.ListView1.ListItems.Count + 1
If nFilm < 10 Then
Print #nFreeFile, nFilm & " " & " " & razdel & Form2.Text5.Text & "|" & Form2.Text1.Text & "|" & film_genre & "|" & UCase(rashirenie) & "|" & Form2.Text2.Text & "|" & Form2.Text3.Text & "|" & film_country & "|" & Form2.Text4.Text & "|" & Form2.Combo1.Text
Close #nFreeFile
ElseIf nFilm < 100 Then
Print #nFreeFile, nFilm & " " & razdel & Text5.Text & "|" & Text1.Text & "|" & film_genre & "|" & UCase(rashirenie) & "|" & Text2.Text & "|" & Text3.Text & "|" & film_country & "|" & Text4.Text & "|" & Combo1.Text
Close #nFreeFile
Else
Print #nFreeFile, nFilm & razdel & Text5.Text & "|" & Text1.Text & "|" & film_genre & "|" & UCase(rashirenie) & "|" & Text2.Text & "|" & Text3.Text & "|" & film_country & "|" & Text4.Text & "|" & Combo1.Text
Close #nFreeFile
End If

Unload Form2

Load Form1
End Sub


В конце каждой процедуры я закрываю файл. Но при добавлении новой инфы пишет ошибку file already open. Почему? Заранее благодарен.
PM MAIL   Вверх
Akina
Дата 7.10.2010, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



FreeFile следует вызывать заново перед каждым открытием.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Linzer
Дата 7.10.2010, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 7.10.2010

Репутация: нет
Всего: нет



Цитата(Akina @ 7.10.2010,  07:44)
FreeFile следует вызывать заново перед каждым открытием.

А разве я не вызываю ее? 7 и 9 строчки. Или я не так понимаю?
PM MAIL   Вверх
Akina
Дата 7.10.2010, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Читай вслух, медленно, громко, внимательно и вдумчиво.

НЕПОСРЕДСТВЕННО ПЕРЕД КАЖДЫМ OPEN ДОЛЖЕН БЫТЬ ВЫЗВАН СВОЙ FREEFILE


Во втором коде 3 оператора Open и только 1 раз обращение к FreeFile. И к тому же между ними присутствуют ещё операторы, работающие с файлами.

Это сообщение отредактировал(а) Akina - 7.10.2010, 11:34


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Linzer
Дата 7.10.2010, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 7.10.2010

Репутация: нет
Всего: нет



Цитата(Akina @ 7.10.2010,  11:31)
Читай вслух, медленно, громко, внимательно и вдумчиво.

НЕПОСРЕДСТВЕННО ПЕРЕД КАЖДЫМ OPEN ДОЛЖЕН БЫТЬ ВЫЗВАН СВОЙ FREEFILE


Во втором коде 3 оператора Open и только 1 раз обращение к FreeFile. И к тому же между ними присутствуют ещё операторы, работающие с файлами.

Добавил перед каждым Open, не помогло
PM MAIL   Вверх
Akina
Дата 7.10.2010, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Так... кастрируй по максимуму проект (убери лишние формы, модули, процедуры, контролы и пр., упрости код) - но чтобы проблема осталась. Выкладывай. Посмотрим.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Linzer
Дата 8.10.2010, 03:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 7.10.2010

Репутация: нет
Всего: нет



Цитата(Akina @ 7.10.2010,  12:41)
Так... кастрируй по максимуму проект (убери лишние формы, модули, процедуры, контролы и пр., упрости код) - но чтобы проблема осталась. Выкладывай. Посмотрим.

Спасибо тебе, разобрался! Все работает! smile 
PM MAIL   Вверх
Akina
Дата 8.10.2010, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Ну и в чём таки был косяк?

PS. Не забудь пометить вопрос как решённый (вверху справа).


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Linzer
Дата 9.10.2010, 07:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 7.10.2010

Репутация: нет
Всего: нет



Цитата(Akina @ 8.10.2010,  07:30)
Ну и в чём таки был косяк?

PS. Не забудь пометить вопрос как решённый (вверху справа).

Да там в середине одной процедуры вызывалась другая, а там тоже была работа с этим же файлом, вот и косяк вышел...
Сейчас др проблема, я даже ни знаю как такое возможно)) Короче по клику на кнопку блокируются (Enabled) две другие, и почему то одна блокируется, а вторая нет) А когда нажимаешь еще раз на кнопку, которая блокирует, то та которая не блочилась блокируется...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0573 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.