Вопрос № 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