• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Объясните, пожалуйста, код

  • Автор темы Автор темы Gerald
  • Дата начала Дата начала

Gerald

Новые
Регистрация
26 Мар 2011
Сообщения
25
Реакции
0
Баллы
0
Объясните, пожалуйста, код

Язык Delphi
Дан типизированный файл stud.dat с информацией о студентах - записей:
Код:
type
  ...
  bal=array [1..10] of real;
  TStud=record
        FIO: string [80];
        Year: TDateTime;
        MedB: bal;
        Kurs: byte;
        Group: byte;
  end;
  fil = file of TStud;
var
  f:fil;
Так вот, есть процедура удаления выбранной записи в файле, которую я не могу понять:
Код:
procedure TDelete.SpeedButton1Click(Sender: TObject);
var k: byte;
//удаление записи
begin
  k := strtoint(edit1.Text);
  reset(f);
  seek(f, filesize(f) - 1); {1}
  read(f, s);                 {2}
  seek(f, k - 1);            {3}
  write(f, s);                 {4}
  seek(f, filesize(f) - 1);  {5}
  truncate(f);               {6}     
  closefile(f);
  displayall(MainForm.SGstud);
  Delete.close;
end;
k - это номер студента, т.е. номер записи, которую нужно удалить.
Как я понимаю на примере:
Например даны записи: 1 2 3 4 ; и k=2:
{1} 1 2 3 _ 4 ,где "_" - это указатель
{2} Читаем 3-ью запись
{3} 1 _ 2 3 4
{4} 1 3 _ 3 4
{5} 1 3 3 _ 4
{6} 1 3 3
Я кажется что-то неправильно понимаю, объясните пожалуйста! :tehnari_ru_117:
 
Но код правильный. В программе все работает - удаляется только 2 запись. Но почему???!
 
Неправильно понимате. Во второй операции читается именно последняя, четвертая запись, а не третья.
 
Точно) Но тогда они меняются местами получается 143
Действительно программа так и работает, но тогда получается неправильно. Буду исправлять. Спосибо большое!!!
 
Да спасибо надо говорить, поймите вы наконец.
 
А, ну да действительно :D
 
Назад
Сверху