Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 621

Раздел: Delphi » Прочее
/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!ПОмогите плз!! мне нада было сделать прогу для поддержки базы данных с кнопками добавить. паказать информацию и удалиь .... я всё сделал кроме кнопки удалить из базы.... помогите плизззз!!! файл тут

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

Тоха Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Тоха (статус: Посетитель)
Вопрос отправлен: 25 мая 2008, 12:00
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Тоха!
А ошибок по коду, а ошибок.....
на 3, больше работа не тянет. Если файл открываем, то надо его и закрывать. (для этого используем CloseFile). Или например такой кусок

if opendialog1.Execute then
    AssignFile(f, opendialog1.FileName);
  Reset(f);
  if ioResult <> 0 then
  begin
    ShowMessage('Ошибка открытия файла БД');
    Exit;
  end;
Если человек не выбрал файл, то какой смысл далее его пытаться открыть. А во вторых, что бы пользоваться IOResult, надо выставлять некоторые директивы. Испрвленный код должен выглядеть где то так
if not opendialog1.Execute then exit;
  {$I-}
  AssignFile(f, opendialog1.FileName);
  Reset(f);
  if ioResult <> 0 then
  begin
    ShowMessage('Ошибка открытия файла БД');
    Exit;
  {$I+}
  end;
При каждом запросе добавить/показать открывать файл и просить выбрать - это уже наглость. Представтье, что надо добавить сотню записей.
А теперь подходим к главному вопросу: "Как сделать удаление?". К сожалению, я даже не представляю по вашему коду, как вы хотели, что бы это выглядело, по этому, сделаю лишь набросок. Суть "удаления" очень проста. Открываем ещё один файл на запись, просматривая основной файл, решаем, надо ли нам эта запись. если да - записываем её в результирующий файл.
в конце файлы закрываем, старый удаляем, новый - переименовываем. Ну где то так
procedure TForm1.Button3Click(Sender: TObject);
var
  fo, fn:     file of tctep;
  fon, fnn:string;
  rec: tctep;
begin
  //Получим имена файлов
  fon := 'test.db';
  fnn := ChangeFileExt(fon, '.~db');
  AssignFile(fo, fon);
  AssignFile(fn, fnn);
  Reset(fo);
  Rewrite(fn);
  while not eof(fn) do
  begin
    Read(fo,rec);
    if {Запись нам подходит} then
      write(fn, rec);
  end;
  CloseFile(fo);
  CloseFile(fn);
  DeleteFile(fo);
  RenameFile(fnn, fon);
end;
И не забывайте, что это лишь набросок, вам нужно довести его то того состояния, что бы преподаватель принял - я не знаю вашего преподавателя и не видел типичных работ - следовательно я не могу написать решение, за которое вам сразу поставлят положительную оценку (если бы я сдавал - поставили:) ).

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 25 мая 2008, 13:14
Оценка за ответ: 5


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 21 ноября 2017, 11:11
Выполнено за 0.04 сек.
Рейтинг@Mail.ru