Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 03.12.2013, 23:28   #1
Алексей_2012
t45t
Профессионал
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Адрес: пгт. Балакирево
Сообщений: 1,718
Репутация: 279

icq: 649899888
По умолчанию В файл добавляется только одна запись(((

Здравствуйте, пишу курсовую, и столкнулся с проблемой, которой никогда не возникало, в типизированный файл запись добавляется только одна, я думаю через массив заполнить файл было бы проше, но задание такое, что неприменно в файл, вот часть кода, кнопка добавить, а ниже выложу сам проект, очень надеюсь на вас! Заранее спасибо)
Код:

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 Кб, 0 просмотров)
__________________
from dark to light)
Алексей_2012 вне форума   Ответить с цитированием
Старый 03.12.2013, 23:36   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,614
Репутация: 5352
По умолчанию

Цитата:
Код:

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,718
Репутация: 279

icq: 649899888
По умолчанию

Код:

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,718
Репутация: 279

icq: 649899888
По умолчанию

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

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

icq: 649899888
По умолчанию

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

Опции темы

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись Только значения, в файл 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 16:21
Возвращает только одну запись.... Cartman18 БД в Delphi 5 15.09.2010 16:53


23:42.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru