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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2009, 19:22   #1
raymmman
 
Регистрация: 26.09.2009
Сообщений: 3
По умолчанию Фаил и база данных

В обшем у меня задание такое:
В файле хранится информация о продукте, а именно код товара, наименование, дата поступления, обьем и срок хранения. При запуске программы вывести меню состояшее из просмотреть(сушествуюшие продукты), добавить(в список продукт) и удалить(вводится дата, и все товары с просроченным сроком удаля.тся автоматом).
Мне нужна помошь только при считывании информации с файла и занос в бд
Пока что пытался с разными файлами но чето не получалось, подскажите ошибку ЗЫ только языком попроше )))
Код:
program pract2;
uses crt;
type baza=record
kod:integer;
naim:string[30];
datp:integer;
srokhr:integer;
end;
var
bd:baza;
a,b,c,d:text;
tab:array[1..100] of baza;
i,j,l:integer;
k,s,x:integer;
st:string;
begin
clrscr;
assign(a,'G:\Practika\a.txt');
reset(a);
readln(a,x);
while not eof (a) do
begin
for s:=1 to 15 do
begin
l:=l+1;
read(a,x);
baza[l]].kod:=x;
write(x);
...
raymmman вне форума Ответить с цитированием
Старый 27.09.2009, 12:15   #2
Desha
Форумчанин
 
Аватар для Desha
 
Регистрация: 06.04.2009
Сообщений: 124
По умолчанию

Занос в бд - это вообще ввод данных в базу,или дозапись в файл, с уже имеющимися данными?

Тут просмотр файла. Только бд о студентах, так что надо будет заменить на свои данные. Сведения о студентах представленны массивом (spis) записей.

Код:
procedure ww;
begin
clrscr;
reset(f);                                                        //мой файл(тескстовый)
  for i:=1 to n do                                             // n -кол-во записей
   begin

     readln(f,spis[i].name);                                //считываем
     writeln('Имя студента: ',spis[i].name);          //выводим
     readln(f,spis[i].gr);                                    //считываем
     writeln('Группа: ',spis[i].gr);                        //выводим
     readln(f,spis[i].b1);                     

     writeln('Оценки за экзамен по:');
     writeln(s[1],' ',spis[i].b1);
     readln(f,spis[i].b2);

     writeln(s[2],' ',spis[i].b2);
     readln(f,spis[i].b3);

     writeln(s[3],' ',spis[i].b3);
     writeln('Для просмотра данных о следующем студенте нажмите <Enter>');              
     readln;                                                       //жмем Ентер
   end;
  close(f);                                                       //закрываем файл
end;
Пару советов на будущее (серьезно легче будет) каждое задание из практки оформлять в отдельные процедуры, в основном тексте программы оставить только меню. И самое главное - струтура программы и комменты.

Может я Вас не верно поняла, но вот мое мнение о Вашем коде:

Код:
program pract2;
uses crt;
type
	 baza=record
	kod:integer;
	naim:string[30];
	datp:integer;
	srokhr:integer;
	end;

var
	bd:baza;
	a,b,c,d:text;       // зачем столько файлов? Вам же надо бд на одном файле сделать.
	tab:array[1..100] of baza;
	i,j,l:integer;
	k,s,x:integer;
	st:string;

Begin
	clrscr;
	assign(a,'G:\Practika\a.txt');
	reset(a);
	readln(a,x);  //считаывете х из файла. будем считать, что где-то до этого
		     // момента Вы это х ввели и записали в файл. Но зачем оно  Вам здесь?
	

while not eof (a) do
	begin
		for s:=1 to 15 do
		begin
			l:=l+1;
			read(a,x);          //Тут правильно считываете х из файла.
			
			baza[l]].kod:=x;   //Зачем baza присваиваете значение х? у Вас же есть массив 
					  //	типа записи.Должно быть tab[l].kod:=x;но и это не к чему.
					 //можно было сразу вводить в цикле tab[l].kod и не мучаться 
                                        //потом с присваиванием
			write(x);

Последний раз редактировалось SuperVisor; 29.09.2009 в 11:26.
Desha вне форума Ответить с цитированием
Старый 27.09.2009, 12:25   #3
raymmman
 
Регистрация: 26.09.2009
Сообщений: 3
По умолчанию

Да это вчера на больную голову сделал, сегодня переделал с типизированным файлом, заполнение-просмотр полностью работает а вот про удалении строки-товара с просроченной датой запарка...
raymmman вне форума Ответить с цитированием
Старый 27.09.2009, 13:36   #4
Desha
Форумчанин
 
Аватар для Desha
 
Регистрация: 06.04.2009
Сообщений: 124
По умолчанию

А чего там не получается?
Desha вне форума Ответить с цитированием
Старый 27.09.2009, 17:46   #5
raymmman
 
Регистрация: 26.09.2009
Сообщений: 3
По умолчанию

Ахаха xD Вот в том то и проблема что я без понятия как вырвать строку из файла)))
raymmman вне форума Ответить с цитированием
Старый 27.09.2009, 18:01   #6
diliana
Форумчанин
 
Аватар для diliana
 
Регистрация: 24.05.2009
Сообщений: 119
По умолчанию

Цитата:
Сообщение от raymmman Посмотреть сообщение
Вот в том то и проблема что я без понятия как вырвать строку из файла)))
Для этого вам надо создать отдельную подпрограмму для поиска товара по дате.
Примерно так (пишу просто - сами подгоните)

Код:
{поиск товара по дате }
procedure Poisk(var ...);
var
  x: integer;
  i:byte;
begin
  write('Poisk: ');
  readln(x); {ввести дату }
  writeln('товар:');
  for i := 1 to n do
   begin
   if tab[i].data=x then writeln(tab[i].naim);
   end;
end;

Последний раз редактировалось diliana; 27.09.2009 в 18:22.
diliana вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
База данных freefol Помощь студентам 6 06.04.2009 14:42
Запись данных в фаил из web формы Черничный PHP 3 23.08.2008 23:08
как защитить фаил баз данных 3lander БД в Delphi 6 12.10.2007 08:50