Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2013, 23:28   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию В файл добавляется только одна запись(((

Здравствуйте, пишу курсовую, и столкнулся с проблемой, которой никогда не возникало, в типизированный файл запись добавляется только одна, я думаю через массив заполнить файл было бы проше, но задание такое, что неприменно в файл, вот часть кода, кнопка добавить, а ниже выложу сам проект, очень надеюсь на вас! Заранее спасибо)
Код:
procedure TForm1.Button5Click(Sender: TObject);
begin

  if (combobox1.text='') or  (combobox2.text='') or (Edit1.text='')  or (Edit2.text='') or (Edit3.text='')
  or (Edit4.text='') or (Edit5.text='') or (Edit6.text='') or (Edit7.text='')  then exit;   // если какое-то поле пустое, то выход из процедуры
    Rewrite(f);     //открыть файл для записи
    Seek(f,filesize(F));
    w.marsh:=StrToInt(Edit1.text);                      // заполнение файла введенными данными
   w.name_marsh:=Edit2.Text;
   w.vid_transporta:=ComboBox1.Text;
   w.strana:=Edit3.Text;
   w.price:=StrToFloat(Edit4.text);
   w.stoimost_ecs:=StrToFloat(Edit6.text);
   w.stoimost_proghit:=StrToFloat(Edit5.text);
   w.itogo :=w.stoimost_ecs+w.stoimost_proghit+w.price;
   w.prodolgitelnost:=Edit7.Text;
   w.ycloviya:=ComboBox2.Text;
  write(f,w);// чтение записи в файл.
end;
assignfile(F,...)-написал при создании формы если что, в соответствии с заданием)
Вложения
Тип файла: rar Клименко.rar (205.4 Кб, 5 просмотров)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 03.12.2013, 23:36   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Код:
Rewrite(f);     //открыть файл для записи
всё дальше можно не смотреть!

Вы не правы. Это не открыть файл для записи, это ПЕРЕЗАПИСАТЬ файл!
(файл старый стирается, новый создаётся)

вместо Rewrite(f) напишите примерно так:
Код:
  if not FileExists('ИмяФайла') then
      Rewrite(f)     //создать файл
  else begin
    Reset(f);  // Открыть файл 
    Seek(f,filesize(f));
  end;
p.s. если Вы каждый раз при нажатии на кнопку переоткрываете файл,
так не забывайте в конце процедуры ЗАКРЫВАТЬ его!!!
Код:
  write(f,w);// записать в файл.
  close(f);
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.12.2013, 23:55   #3
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Код:
procedure TForm1.Button5Click(Sender: TObject);
begin

  if (combobox1.text='') or  (combobox2.text='') or (Edit1.text='')  or (Edit2.text='') or (Edit3.text='')
  or (Edit4.text='') or (Edit5.text='') or (Edit6.text='') or (Edit7.text='')  then exit;   // если какое-то поле пустое, то выход из процедуры
       Reset(f);     //открыть файл для записи
    Seek(f,filesize(F));
    w.marsh:=StrToInt(Edit1.text);                      // заполнение файла введенными данными
   w.name_marsh:=Edit2.Text;
   w.vid_transporta:=ComboBox1.Text;
   w.strana:=Edit3.Text;
   w.price:=StrToFloat(Edit4.text);
   w.stoimost_ecs:=StrToFloat(Edit6.text);
   w.stoimost_proghit:=StrToFloat(Edit5.text);
   w.itogo :=w.stoimost_ecs+w.stoimost_proghit+w.price;
   w.prodolgitelnost:=Edit7.Text;
   w.ycloviya:=ComboBox2.Text;
  write(f,w);// чтение записи в файл.
  CloseFile(F);
end;

procedure TForm1.Button9Click(Sender: TObject);
var i:Word;
begin
  if FileSize(f)<1then Exit;     //  если файл пустой, то выходим из процедуры
  i:=1;
Reset(f);         // открываем файл для чтения данных
Seek(f,0);        // устанавливаем курсор на начало строки
while not Eof(f) do   // цикл пока не конец файла читает и выводит из него все данные в richedit;
begin
read(f,w);         // читает запись из файла
RichEdit1.Lines.Add(IntToStr(i)+'-запись');
RichEdit1.Lines.Add('-------------------------------------------------');
 with RichEdit1.Lines do
 begin
  Add('№ маршрута: '+inttostr(w.marsh));
  Add('Наименование маршрута '+w.name_marsh);
  Add('Страна '+w.strana);
  Add('Вид транспорта '+w.vid_transporta);
  Add('Стоимость проезда '+formatfloat('0.00',w.price));
  Add('Продолжительность '+w.prodolgitelnost);
  Add('Стоимость экскурсии '+formatfloat('0.00',w.stoimost_ecs));
  Add('Условаия проживания '+w.ycloviya);
  Add('Стоимость проживания '+formatfloat('0.00',w.stoimost_proghit));
  Add('Общая стоимость '+formatfloat('0.00',w.itogo));
 end;
 RichEdit1.Lines.Add('');
 Inc(i);
end;
CloseFile(F);
end;
Все равно почему-то не добавляет запись, и мало того выводит ошибку ввода-вывода при просмотре всего содержимого
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 03.12.2013, 23:57   #4
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

теперь все работает нормально почему-то! Спасибо за помощь)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 04.12.2013, 00:27   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Блеск Особенно понравилось почему-то. По щучьему велению наверно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.12.2013, 01:41   #6
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Вот и вся курсовая) Спасибо большое всем кто пытался мне помочь)
Вложения
Тип файла: rar Клименко.rar (210.5 Кб, 4 просмотров)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись Только значения, в файл 2909 Общие вопросы Delphi 2 24.05.2013 16:34
Не добавляется запись втаблицу mysql kennyi666 PHP 1 07.07.2012 17:43
Не добавляется запись в базу Provoking Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 4 04.01.2011 15:21
Возвращает только одну запись.... Cartman18 БД в Delphi 5 15.09.2010 16:53