Изменение записи в файле последовательного доступа

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
caa2000
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 14.05.2009 (Чт) 4:50

Изменение записи в файле последовательного доступа

Сообщение caa2000 » 26.01.2012 (Чт) 19:02

Здравствуйте всем.
На форме есть контролы: MonthView,TextBox,CommandButton.
Есть файл,куда записываются данные в формате: Date,string. К примеру:
#2012-01-24#,"1234567"
#2012-01-10#,"ывапролшгрнпас"
#2012-01-25#,"khxvnnmm,mnbvcx"
#2012-03-08#,"Женский День"

MonthView1_DateClick(ByVal DateClicked As Date) открывает TextBox,в котором содержится строка(запись) из файла в соответствии с датой.

Код: Выделить всё
Private Sub ChckEntry()
Open DataPath For Input As #1
While Not EOF(1)
            Input #1, EntryDate, EntryText
            If EntryDate = DtClick Then GoTo Line1
     Wend
EntryDate = 0
EntryText = ""
'if date & text=0 to entry ne bulo
Line1:
Close #1
Text1.Text = EntryText
End Sub

Мне нужно изменить или удалить текст одной записи и записать обратно в файл. Если техт="" то убрать всю запись с датой.

Код: Выделить всё
Private Sub CommandButton_Click()

Open DataPath For Append As #1
      Write #1, DtClick, Text1.Text
Close #1
Text1.Text = ""
End Sub

Append ест-ссно добавляет новую запись с той же датой в конец файла. Output удаляет файл и создаёт новый с последней записью.
Random-тоже не выход.
Можно сделать счётчик,который определит порядковый номер записи :roll: тока куда его потом засунуть :D (я в курсе)
Можно отрыть весь файл в массив сделать изменения и сохранить Output-ом только это как-то громоздко и памяти много займёт.
Как можно изменить или удалить одну запись в самом файле ?
Имеющий уши, да услышит.. (с) Новый Завет От Матфея святое благовествование

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 26.01.2012 (Чт) 22:35

При таком формате ничего хорошего не выйдет.
Скорее всего, я бы использовал записи фиксированной длины, бинарные (но это не всегда хорошо).

caa2000
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 14.05.2009 (Чт) 4:50

Re: Изменение записи в файле последовательного доступа

Сообщение caa2000 » 10.02.2012 (Пт) 11:35

To Qwertiy :
Спасибо.Скорее всего придётся использовать Random access.Не удобно по тому,что никогда не знаешь сколько места потребуется для записи и сколько записей будет.Придётся делать проверялку на количество символов и записей.
Хотя трудно поверить,что не может быть решения этой задачи,только вот идей нету.Можно сделать массив,который загружает весь файл данных,сидит в памяти операционки и ждёт, пока его изменят, а потом сохраняется и т.д. Одна из задач програмы-использовать как можно меньше памяти компа.Ладно,"будем посмотреть",может ещё что-то в голову прийдётю
Ещё раз спасибо.
Имеющий уши, да услышит.. (с) Новый Завет От Матфея святое благовествование


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 12

    TopList  
cron