Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 08.05.2011, 14:02   #1 (permalink)
Gerald
Member
 
Регистрация: 26.03.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Question Объясните, пожалуйста, код

Язык 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
Я кажется что-то неправильно понимаю, объясните пожалуйста!
Gerald вне форума   Ответить с цитированием

Старый 08.05.2011, 14:02
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Ранее на форуме создавались темы, которые по содержанию схожи с вашим топиком

Объясните код программы С++
Объясните про скорость в интернете
Объясните про дроссели, пожалуйста.
Объясните причину сообщения

Старый 08.05.2011, 16:12   #2 (permalink)
Gerald
Member
 
Регистрация: 26.03.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Но код правильный. В программе все работает - удаляется только 2 запись. Но почему???!
Gerald вне форума   Ответить с цитированием
Старый 08.05.2011, 17:37   #3 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

Неправильно понимате. Во второй операции читается именно последняя, четвертая запись, а не третья.
MrSTEP вне форума   Ответить с цитированием
Старый 08.05.2011, 17:45   #4 (permalink)
Gerald
Member
 
Регистрация: 26.03.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Точно) Но тогда они меняются местами получается 143
Действительно программа так и работает, но тогда получается неправильно. Буду исправлять. Спосибо большое!!!
Gerald вне форума   Ответить с цитированием
Старый 08.05.2011, 17:50   #5 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

Да спасибо надо говорить, поймите вы наконец.
MrSTEP вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 08.05.2011, 17:59   #6 (permalink)
Gerald
Member
 
Регистрация: 26.03.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

А, ну да действительно
Gerald вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 12:43.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.