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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2008, 19:48   #1
leest
Пользователь
 
Регистрация: 18.01.2008
Сообщений: 22
По умолчанию

Вот задача: Существует текстовый файл, в котором хранится информация(названия, цвет, количество, цена и шифр товара),в данном случае мебель. При нажатии кнопки(добавить информацию о товаре) программа должна "просмотреть" весь текстовый файл, и если там не существует такого наименования, должна добавить информацию в конец файла, если же такое название существует, то изменить параметры(к примеру, в тексте уже встречался красный стул количеством 3 и мы еще добавляем с клавиатуры 5 и необходимо, чтобы в файл записалось: красный стул, количество 8...). Заранее огромное спасибо за помощь...

вот код программы, то что я сумел сам сделать...

unit kladovwik;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm2 = class(TForm)
Button1: TButton;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
LabeledEdit3: TLabeledEdit;
LabeledEdit4: TLabeledEdit;
LabeledEdit5: TLabeledEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure dobavlenie(var q: string; var w:integer);
var i,e:integer;
begin
if length(q)<w then begin
e:=w-length(q);
for i:=1 to e do begin
q:=q+' ';
end;
end;
end;

procedure TForm2.Button1Click(Sender: TObject);
var f:textfile;
a,b,c,d,k,y:integer;
name,cvet,kolvo,cena,wifr,polname,f name,str,myline,x:string;

begin
name:=labeledEdit1.text;
cvet:=labeledEdit2.text;
kolvo:=labeledEdit3.text;
cena:=labeledEdit4.text;
wifr:=labeledEdit5.text;
polname:=name+' '+cvet;


fname:='D:\mybase.txt';
assignfile(f,fname);
{$I-}
reset(f);
{$I+}
if IOResult<> 0 then Rewrite(f);

a:=50; b:=10; c:=10; d:=10;
dobavlenie(polname,a);
dobavlenie(kolvo,b);
dobavlenie(cena,c);
dobavlenie(wifr,d);

k:=0;
while (not EOF(f) and (k=0)) do
begin
readln(f,myline);
k:=pos(polname,myline);
end;

if k<>0 then begin
x:=copy(myline,50,10);
y:=strtoint(kolvo)+strtoint(x);
delete (myline,50,10);
insert(kolvo,myline,50);
end
else begin
closefile(f);
append(f);
str:=polname+kolvo+cena+wifr;
writeln(f,str);
showmessage('Информация успешно сохранена');
closefile(f);
end;

labelededit1.clear;
labelededit2.clear;
labelededit3.clear;
labelededit4.clear;
labelededit5.clear;

end;


end.

Последний раз редактировалось Stilet; 30.01.2008 в 11:15.
leest вне форума Ответить с цитированием
Старый 19.01.2008, 01:39   #2
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Для начала перейдите на типизированные файлы.
Или можно оформить в виде БД.
Информации на форуме по этим вопросам много.
Alex21 вне форума Ответить с цитированием
Старый 19.01.2008, 09:36   #3
leest
Пользователь
 
Регистрация: 18.01.2008
Сообщений: 22
По умолчанию

так в том-то и проблема, что нужно как текстовый файл оформить, а не как БД...
leest вне форума Ответить с цитированием
Старый 19.01.2008, 19:44   #4
leest
Пользователь
 
Регистрация: 18.01.2008
Сообщений: 22
По умолчанию

подскажите пожалуйста как заменить одну строку в текстовом файле другой...функции delete,insert не работают в текстовых файлах?заранее премного благодарен!
leest вне форума Ответить с цитированием
Старый 20.01.2008, 02:00   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Если мне память не изменяет, то:
описываете файл как набор байт (file of byte или file of char) либо как вообще нетипизированный (f: file, потом делайте этому файлу Reset(f,[1]);
А после этого можете и читать и писать...
для файлов f:text - можно или читать (Reset(f), или только писать (Rewrite(f))) - из стандартной справки: If F is a text file, F becomes read-only.

Последний раз редактировалось Serge_Bliznykov; 20.01.2008 в 02:06.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.01.2008, 10:53   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Открыть файл для записи. Прочитать строки в массив of string (одна строка-один элемент массива). В массиве переделать, что надо и записать в файл.
puporev вне форума Ответить с цитированием
Старый 30.01.2008, 10:05   #7
leest
Пользователь
 
Регистрация: 18.01.2008
Сообщений: 22
По умолчанию

спасибо всем огромное, доделал...
leest вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мне очень нужна помощь! Андрей07 Помощь студентам 10 10.06.2008 17:12
Очень нужна помощь в С Marisha_23 Помощь студентам 2 26.12.2007 11:37
задать печать одной кнопкой, но сразу нужное кол-во копий Kisunya2104 Microsoft Office Excel 1 09.08.2007 22:07
Нужна помощь в Паскале. Очень-очень срочно. !!! Помощь студентам 2 09.02.2007 15:12