Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 147
от 29.03.2006, 17:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 163, Экспертов: 48
В номере:Вопросов: 1, Ответов: 2


Вопрос № 38352: Здравствуйте у меня проблема следующего характера есть база(файл)в нем есть поля: фамилия, код_должности, подразделение. Не могу данные для каждого подразделения вывести. Пример: запись в файле Иванов 101 5555. Сидоров 102 5560. Петров 505 5555 В...

Вопрос № 38.352
Здравствуйте у меня проблема следующего характера есть база(файл)в нем есть поля: фамилия, код_должности, подразделение. Не могу данные для каждого подразделения вывести. Пример: запись в файле Иванов 101 5555. Сидоров 102 5560. Петров 505 5555
Вывод должен быть такой

Подразделение 5555
Фамилия код должности
Иванов 101
Петров 505
.Подразделение 5560 Сидоров 102

Как это осуществить на паскале
Заранее благодарен

Писать на E-mail: agp200431@mail.ru
Отправлен: 23.03.2006, 22:23
Вопрос задал: Сергей Игоревич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Malysh
Здравствуйте, Сергей Игоревич!
Я так понял файл обычный текстовый (жалко что не на РНР там можно строку на массив раскинуть)
У меня есть несколько вариантов решения данной задачи:
1) для каждого поля ввести определенное кольчество символов - например фамилия-16, код_должности-8, подразделение-8 (не обязательно так, это для примера). Считываешь с файла строку а потом разбиваешь на три строки следующим образом:

S1,S2,S3,S:string;
S1=Copy(S,0,16);
S2=Copy(S,15,8);
S3=Copy(S,23,8);

где S - строка считанная из файла, а S1,S2,S3 - искомые строки.

2) используй разделители например ',', или какой нибудь другой, между полями.

Я бы выбрал первый способ. Вернее я так когда-то делал. Писал пару лет назад записную книгу. Не знал как пользоваться базой. Да и сейчас иногда удобно базу делать в файле для РНР.
Ответ отправил: Malysh (статус: Практикант)
Ответ отправлен: 24.03.2006, 00:05

Отвечает: Полховский Александр Владимирович
Здравствуйте, Сергей Игоревич!
Значит так. Идея такова:

  1. Читаем запись (то есть до точки от текущего положения).

  2. Если отделение прочитаной записи не присутствует в списке уже выведенных отделений, то прочёсываем все последующие записи до конца файла. При этом надо не забыть сохранить позицию, с которой началось прочёсывание, и вывести информацию об номере отдела.

  3. При прочёсывании сравниваем отдел очередной записи с тем, записи которых мы ищем. Если отдел совпадает, то выводим информацию. Если нет - ничего не делаем.

  4. В конце прочёсывания заносим текущий отдел в список выведенных и возвращаемся на позицию, с которой начали прочёсывать.

  5. Повторяем всё с начала, если ещё не конец файла.


Код в приложении.

Замечание:
Чтобы не делать лишних условий и действий, файл должен содержать одинаково отформатированные записи. А у Вас первая запись не начинается с пробела, как все остальные, а последняя не заканчивается точкой. как все остальные. Поэтому добавьте пробел в начале и точку в конце. либо доработайте код парой строк, чтобы игнорировать данный изъян.

Приложение:

---------
Спасём нашу хрупкую планету !

Ответ отправил: Полховский Александр Владимирович (статус: Практикант)
Ответ отправлен: 25.03.2006, 08:26


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.20 (beta) от 17.03.2006
Яндекс Rambler's Top100

В избранное