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

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


Информационный Канал Subscribe.Ru

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

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

Выпуск № 57
от 19.05.2005, 23:00

Администратор:Калашников О.А.
В номере:Вопросов: 2, Ответов: 6


Вопрос № 20836: Обращаюсь с таким вопросом есть файл с некоторым количеством компонент как мне удалить определённую компоненту используя процедуры read,write,seek,truncate Я знаю что нужно, каким-то образом затереть эту компоненту следующей за ней компон...
Вопрос № 20839: Здравствуйте, ув.! Скажите, есть ли в Pascal'е функция ввода, которая просит вводить не до нажатия клавиши, а какое-то ограниченное время? (5 секунд ждет ввода, а дальше заканчивается. И еще - зацените прогу, которую я сделал на Pascal'е long...

Вопрос № 20836
Обращаюсь с таким вопросом
есть файл с некоторым количеством компонент
как мне удалить определённую компоненту используя процедуры read,write,seek,truncate
Я знаю что нужно, каким-то образом затереть эту компоненту следующей за ней компонентой и т.д. пока не кончиться файл, а последнию компоненту обрезать с помощью truncate
Отправлен: 14.05.2005, 01:26
Вопрос задал: ger (статус: Посетитель)
Всего ответов отправлено: 3

Отвечает: Boriss
Здравствуйте, ger!
Вот реализация в соответствии с Вашим вопросом.
Замечу, что "для себя" я бы воспользовался BlockRead и BlockWrite - если надо - покажу как

Приложение:

Ответ отправил: Boriss (статус: Профессор)
Отправлен: 14.05.2005, 07:57

Отвечает: dfdfdf
Здравствуйте, ger!
А помоему для типизованных файлов целых 2 метода есть:
I`ый. (типа Boriss).
1. Заводим меременные a,b,n. Где n- число элементов в типизованом файле. a-текущий элемент для вставки, b-элемент источника.
2. Открываем его на запись/чтение (типа reset).
3. И тачинаем перебирать. Изначально a=b=1 и поехали до n.
3.1 Читаем b, если не 4 то записываем в позицию a.
3.2 Наращиваем и дальше.
(че то типа такого:
a:=1;
for b:=1 to n do
begin
seek(f,b);
read (f,temp);
if temp<>4 then
begin
seek(f,a);
write(f,temp);
a:=a+1;
end;
b:=b+1;
end;
)
4. Обрубаем конец после a`ого элемента.
//код привел оринтировочно, его надо подправить.
II`ой. Использовать дополнительный файл.
1. Перегоняем файл.
2. Если текущий элемент не равен 4 то записываем его во второй файл.
3. Переходим к следущему элементу.
4. Удаляем старый файл.
5. Присваиваем товому файлу имя старого.
Ответ отправил: dfdfdf (статус: 10-ый класс)
Отправлен: 14.05.2005, 10:10

Отвечает: twmd
Здравствуйте, ger!
Найди положение того элемента который нужно удалить.
Найди кол-во элементов в файле.
Потом Считывай следующий элемент и пиши его заместо того что хочешь удалить
И так до конца файла
Потом соответсвенно удаляешь последний элемент
Ответ отправил: twmd (статус: 3-ий класс)
Отправлен: 14.05.2005, 13:17


Вопрос № 20839
Здравствуйте, ув.!
Скажите, есть ли в Pascal'е функция ввода, которая просит вводить не до нажатия клавиши, а какое-то ограниченное время? (5 секунд ждет ввода, а дальше заканчивается.
И еще - зацените прогу, которую я сделал на Pascal'е longinteger.narod.ru/v2.zip
Запускать - seabattle 1.2.exe; справка - read me.txt.
Все отзывы прошу на minonosez@mail.ru
Отправлен: 14.05.2005, 06:34
Вопрос задал: Стомов Евгений (статус: Посетитель)
Всего ответов отправлено: 3

Отвечает: Snowm@n
Здравствуйте, Стомов Евгений!
Такой функции нет, но ее можно написать используя системный таймер.
...
var timer:longint absolute $00:$046c; {время в тиках, 18.2 секунды}
t0:longint;
ch:char;
...
t0:=timer;
repeat
if keypressed then begin
ch:=readkey;
... {ваш обработчик}
end;
until timer-t0>5*18.2; {5 секунд ждем ввода}
...
Ответ отправил: Snowm@n (статус: Студент)
Отправлен: 14.05.2005, 08:25

Отвечает: Jadd
Здравствуйте, Стомов Евгений!
В паскале точно нету. И удивительно, если бы было. Нужно писать самому и включать таймер. Вот и все.
Ответ отправил: Jadd (статус: 3-ий класс)
Отправлен: 14.05.2005, 11:07

Отвечает: sir henry
Здравствуйте, Стомов Евгений!
Нет, такой функции в Паскале нет. Нужно писать самому.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 16.05.2005, 09:31


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

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

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

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

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


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


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.pasplus
Отписаться

В избранное