![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Суммирование чисел в файле [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)