![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
hemm |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Суть такова: написал базу данных, но не могу никак сообразить, возможно ли редактировать в такой БД запись отдельно. Как мне выделить/вычленить любую по желанию запись и, например, удалить только ее или отредактировать? Или лучше использовать для такой БД двумерные массивы?
*Тупанул при написании. Для запуска файла надо в том же каталоге создать файл "database" и указать его имя при запросе в программе.
Сообщение отредактировано: hemm - 24.06.2011 1:06 Прикрепленные файлы ![]() |
Lapp |
![]()
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Суть такова: написал базу данных, но не могу никак сообразить, возможно ли редактировать в такой БД запись отдельно. Как мне выделить/вычленить любую по желанию запись и, например, удалить только ее или отредактировать? Или лучше использовать для такой БД двумерные массивы? Односложный ответ на твой вопрос такой: да, конечно - впрограммировании можно ВСЕ. Но односложным тут не обойтись, боюсь )). Редактировать запись очень просто. Открываешь reset'ом, подходишь к началу нужной записи, читаешь, редактируешь, возвращаешься на одну запись в файле и пишешь ее - все, только не забыть закрыть. Удалять несколько сложнее, если сохранять порядок следования записей в файле. Нужно найти запись, встать за ней, Но только это делать необязательно. Хранить записи можно в произвольном порядке (ее номер все равно сохраняется в поле nomer). Если тебе надо стереть запись - просто перемещаешь последнюю на ее место и файл обрезаешь на одну запись. Номера записей при этом будут непоследовательными. Например, из ряда 1 2 3 4 5 стираешь запись 3, остаются записи 1 2 4 5, которые реально в файле следуют в таком порядке: 1 2 5 4. Когда ты добавишь еще одну запись, будет 1 2 5 4 6. А поиск записи с нужным номером можно проводить либо последовательно, либо создать карту записей. Ее можно сделать либо отдельным файлом (что не очень надежно), либо отвести под нее пространство в начале файла. Но, помимо этого, я бы советовал тебе продумать структуру программы. Такие безобразия, как метки - это колесо машины, починенное скотчем.. ![]() Остальные замечания высказывать? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
hemm |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
с радостью выслушаю все замечания.
чем посоветуете заменить метку? repeat...until? и можно какой-нибудь пример карты записей. не очень понимаю о чем речь. спасибо. Сообщение отредактировано: hemm - 24.06.2011 10:49 |
IUnknown |
![]()
Сообщение
#4
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата чем посоветуете заменить метку? repeat...until? Хотя бы... Тебе надо будет обернуть все, начиная от метки до конца твоего теперешнего Repeat/Until еще одним циклом, и при выборе "4: Change File" просто делать break. Из внутреннего цикла программа тут же выйдет, и перейдет к началу внешнего, то есть, туда, где стояла метка. Условие выхода из внешнего цикла остается прежним, "until q", так что в случае, когда пользователь захочет выйти из программы - выйдешь сразу из обоих циклов.Что касается Цитата if (zach = student) or (fam=student) or (imya=student) or (otch=student) or (gruppa=student) then Сообщение отредактировано: IUnknown - 24.06.2011 11:25 |
Lapp |
![]()
Сообщение
#5
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
с радостью выслушаю все замечания. Тогда еще раз повторю: продумай функционал и структуру. Нарисуй блок-схему.Ну и переименуй процедуру new - нехорошо подменять системные процедуры.. Цитата чем посоветуете заменить метку? repeat...until? IUnknown сказал уже, я только добавлю: если появляется желание воспользоваться goto - значит, программа организована неправильно. Воспринимай это как признак, что что-то не так.Цитата и можно какой-нибудь пример карты записей. не очень понимаю о чем речь. Так я уже привел же - вот те циферки и есть карта.. Просто массив целых - заполняешь его номерами записей, и при стирании/добавлении корректируешь. Инициализируй его нулями, и при стирании тоже заменяй последнюю (перемещенную на место стертой) нулем. Сначала попробуй ее писать в отдельный файл - это проще. А потом покажем, как в тот же.Какой у тебя компилятор? Это тут может быть важно. Но вообще - может, лучше сначала без карты, просто поиск по полю number. А потом можно и карту сделать, если останется желание. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 22.06.2025 22:11 |