Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Суммирование чисел в файле [D6, Win2k]


Gennadiy ©   (2003-02-06 18:46:00) 

Уважаемые мастера!!! Помогите пожалуйста у меня такая проблема,есть текстовый файл в котором в столбик забиты целые числа, и нужно сделать программу, что бы она суммировала эти числа в файле, и результат выводила в label. Я не знаю как исправить код в цикле, чтобы программа правильно считала:

procedure TForm1.Button1Click(Sender: TObject);
var
F:TextFile;
Stroka:String;
Summa:Integer;
begin
AssignFile(F,"summa.txt");
Reset(F);
while not Eof(F) do
begin
ReadLn(F,Stroka);
Summa:=StrToInt(Stroka);
Summa:=Summa+Summa;
Label1.Caption:=Stroka;
Label2.Caption:=IntToStr(Summa);
end;
CloseFile(F);
end;


OxOTHuK   (2003-02-07 07:30:00) [1]

>> Ю. Зотов & Anatoly Podgoretsky ... Спаcибо за критику - обязательно приму к сведению... просто как то позабыл про
Readln(f,IntVar)


Tux   (2003-02-07 00:28:00) [2]

А я бы еще посоветовал ODBC драйвер для текстовых файлов пришить, подконнекчиваться через ADOQuery посредством OLEDB провайдера для ODBC драйвероа, геморрой, на первый взгляд, зато какой триумф высочайших технологий:

SELECT SUM(ID) FORM TABLE.TXT

!


Anatoly Podgoretsky   (2003-02-07 00:21:00) [3]

Есть вопросы.

1. Зачем читать в строку, лучше сразу в Integer
Readln(f,IntVar)

2. Зачем выводить Label1.Caption если значения будут видны только после окончания цикла

3. Нигде не видно защиты от ошибок


Юрий Зотов   (2003-02-07 00:21:00) [4]

Я в шоке. Читать числа в строковом виде, чтобы тут же переводить их снова в числа. А что, ReadLn уже не может СРАЗУ читать числа?


OxOTHuK   (2003-02-07 00:12:00) [5]

>> Романов
Это точно, но стояла задача суммирования, а не обработки Ексепшинов... ;)


Романов Р.В.   (2003-02-06 18:59:00) [6]

Будет работать пока в файле не встретится буква :)


OxOTHuK   (2003-02-06 18:57:00) [7]

procedure TForm1.Button1Click(Sender: TObject);
var
F:Textfile;
Stroka:String;
summa:Integer;
begin
summa:=0;
AssignFile(F,"summa.txt");
Reset(F);
while not Eof(F) do
begin
ReadLn(F,Stroka);
inc(Summa,StrToInt(Stroka));
Label1.Caption:=Stroka;
Label2.Caption:=IntToStr(Summa);
end;
CloseFile(F);
end;

gl


Hint   (2003-02-06 18:51:00) [8]

Хех... Бывает...
Вы этот цикл хотя бы на бумажке распишите, посмотрите, что каждый раз с переменными происходит...

А если думать не хотца, то сделайте следующее:
2 строки
Summa:=StrToInt(Stroka);
Summa:=Summa+Summa;

поменяйте на
Summa:=Summa+StrToInt(Stroka)


Наверх

Титульная страница Поиск, карта сайта Написать письмо