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

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

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


Ответ
 
Опции темы
Старый 07.04.2010, 16:25   #1
ledenec
Новичок
Джуниор
 
Регистрация: 07.04.2010
Сообщений: 2
По умолчанию Delphi Извлечение данных из файла txt

Здравствуйте! У меня такая проблема, есть файл .txt там строки, первый элемент каждой строки - имя, далее идет ряд чисел, например:
АкцияМДМ 12,6 25,8 12,36 12 56 256
АкцияГазПром 55 987 688 256 125 256
.....
Надо чтоб считывались имена (первые эл-ты каждой строки) и записывались в Combobox, а далее считывались числа соответствующей строки. Будет два таких файла.
Сейчас сделала что в док-те только числа, и при выборе в комбобоксе элемента (вбила их вручную в свойстве Item) считываются данные и считаются по формуле и выводятся в Edit. Получился такой код:

TBumaga=class
doh:real;
procedure Dohod; virtual; abstract;
procedure DohObl1; virtual; abstract;
Constructor create;
end;

TAkcia=class(TBumaga)
procedure Dohod; override;
end;

TOblig=class(Tbumaga)
procedure DohObl1; override;

end;


var
Form2: TForm2;
mas: array[1..1000] of real;
i:integer;
kolvo:integer;
Bumaga: TBumaga;

implementation

{$R *.dfm}
Constructor TBumaga.create;
begin
inherited create;
end;


procedure TAkcia.Dohod;
begin
doh:=(mas[1]-mas[kolvo])*100/mas[kolvo];
Form2.Edit1.Text:=floattostr(doh);
end;

procedure TOblig.DohObl1;
begin
doh:=0.1*1000/mas[kolvo];
Form2.Edit1.Text:=floattostr(doh);
end;

procedure TForm2.ComboBox1Change(Sender: TObject);
var f,t:textfile;
begin
if Form2.ComboBox1.ItemIndex=0 then
begin
assignfile(f,'Àêöèÿ.txt');
reset(f);
i:=1;
while not eof(f) do
begin
read(f,mas[i]);
i:=i+1;
end;
i:=i-1;
kolvo:=i;
Bumaga:=TAkcia.create;
Bumaga.Dohod;
end;

if Form2.ComboBox1.ItemIndex=1 then
begin
assignfile(t,'Îáë1.txt');
reset(t);
i:=1;
while not eof(t) do begin
read(t,mas[i]);
i:=i+1;
end;
i:=i-1;
kolvo:=i;
Bumaga:=TOblig.create;
Bumaga.DohObl1;
end;
end;
end.

Помогите пожалуйста!!!!
ledenec вне форума Ответить с цитированием
Старый 07.04.2010, 16:54   #2
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Вот это
Код:
while not eof(f) do
begin
read(f,mas[i]);
i:=i+1;
end;


while not eof(t) do begin
read(t,mas[i]);
i:=i+1;
end;
работать не будет...
Здесь нужен парсинг строк, а уж строки разбивать на составляющие их слова...
И лучше использовать динамические массивы
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Grag; 07.04.2010 в 17:00.
Grag вне форума Ответить с цитированием
Старый 07.04.2010, 17:19   #3
ledenec
Новичок
Джуниор
 
Регистрация: 07.04.2010
Сообщений: 2
По умолчанию

А подробнее можно по моему примеру?
ledenec вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме 20000 рублей в месяц

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка данных из файла *.txt в TextBox pol1nkaOs Общие вопросы .NET 2 21.03.2010 09:00
Сравнение файла*.txt с таблицой из базы данных Zeml2007 Помощь студентам 0 07.12.2009 14:09
Поиск-извлечение блока данных из бинарного файла Alter Общие вопросы Delphi 6 28.11.2009 23:12
Сложная вставка данных из файла txt Feurrader Microsoft Office Excel 2 23.02.2009 22:03
Запись из файла txt или mdb в базу данных DerSky БД в Delphi 6 09.06.2008 11:50


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS