![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Строчки [D6, Win95/98]
klochkov © (2002-07-03 16:49:00)Уважаемые мастера, кто поможет решить проблему.
Существет файл test.txt в нем существует сторка вида:
1 0 0 456 0 31
Как можно посчитать сумму цифр.
klochkov (2002-07-03 23:06:00) [1]Спасибо!
3S (2002-07-03 20:03:00) [2]Воспользуйся библиотекой Rxlib
В StrUtils есть функции
WordCount
ExtractWord
Пример:
var t: Textfile;
s, s1: String;
i: Integer;
f, sum: Double; //Можно интегер
begin
//Как файл открыть сам знаешь
sum:=0;
Readln(t, s);
if WordCount(s)>0 then
for i:=1 to WordCount(s) do begin
try
s1:=ExtractWord(i, s, [" "]); // Разделитель между словами я поставил пробел
f:=StrToFloat(s1); //если итеген то StrToInt
sum:=sum+f;
except
//можно написать sum:=sum+0;
end;
end;
//sum - это твоя сумма
end;
//Писал на память поэтому мог ошибиться где-нибудь давно это было, пробуй
Удачи!!!
klochkov (2002-07-03 17:53:00) [3]Большое спасибо всем, буду пытаться
Fenix (2002-07-03 17:35:00) [4]Тогда читаешь полностью строку в Mystring типа string и
ListBox1.Items.CommaText(Mystring);
А дальше работаешь с итемсами и т.д.
Alx2 (2002-07-03 17:26:00) [5]>alexdbases © (03.07.02 17:23)
А, вон ты про что! Я-то подумал, что намекаешь на произвольные форматы файлов.
Тогда конечно. Правда, если задача так стоит. Но в этом случае - проще.
alexdbases (2002-07-03 17:23:00) [6]почему если надо в файле отобрать все цифры.....почему нет?!
Alx2 (2002-07-03 17:22:00) [7]>klochkov (03.07.02 17:19)
Если другого текста нет, то см. мой вариант.
>Fenix © (03.07.02 17:17)
Читать-то будет, но только мусор сплошной. Файл-то не бинарный.
Alx2 (2002-07-03 17:19:00) [8]>alexdbases © (03.07.02 17:17)
Но не из всего-же сразу читать?!
klochkov (2002-07-03 17:19:00) [9]В файле только цыфры м пробелы.
Сложить нужно одну строчку, а потом другую и т.д
до EOF
alexdbases (2002-07-03 17:17:00) [10]а если втретиться такое 6 4 76 5н567 546
Тогды чё?
А читать можно из екселя...
Fenix (2002-07-03 17:17:00) [11]Вобще обыявляешь
var
ifile: file of integer;
и читаешь из него, вот и все дела!
Alx2 (2002-07-03 17:15:00) [12]>klochkov (03.07.02 17:10)
Тогда мой вариант без переделок не покатит: надо проматывать шапку и не читать хвост :)
alexdbases (2002-07-03 17:13:00) [13]Если произошол сбой в
var h:float;
try
h:=StrToFloat(str(из файла между пробелами));
Exept
Showmessage("Это на цифру не похожа");
finally
ect///
Alx2 (2002-07-03 17:11:00) [14]>alexdbases © (03.07.02 17:04)
>А если это не текстовый файл? (to Alx2)
Но ведь есть же приведенный автором пример содержимого файла.
А так получится, что пишем сумматор для произвольных форматов файлов. Вдруг он в формате Excel?
>и заносились туда строки а не так - Write(F,I)
>где i -инежер...
Пофигу как заносилось. Лишь бы разделители-пробелы либо возвраты каретки были.
klochkov (2002-07-03 17:10:00) [15]Извените, уточняю задачу.
Файл текстовой. Помимо чисел есть текст ( шапка и хвост).
нужно сложить все числа в строке и передать в качестве параметра программе дальше.
alexdbases (2002-07-03 17:04:00) [16]А если это не текстовый файл? (to Alx2)
и заносились туда строки а не так - Write(F,I) где i -инежер...
Что тогда?
Alx2 (2002-07-03 16:59:00) [17]Var F : System.Text;
V, S : Integer;
begin
AssignFile(F,filename);
ReSet(F);
S := 0;
while not eof(f) do
begin
read(f,V);
inc(S,V);
end;
closeFile(F);
S - сумма
end.
alexdbases (2002-07-03 16:54:00) [18]Если заранее известно что всё они циферки....то
От пробела да пробела цифра....
Переводишь эту строку в какой-нить double и складываешь....
Если от пробела до пробела разница один то пропускаешь....
Так до конца файла
klochkov (2002-07-03 16:53:00) [19]Можно с примером, если не сложно.
Skier (2002-07-03 16:52:00) [20]>klochkov
-Разбираешь строку и записываешь значения в TStringList
-Дальше суммируешь через StrToInt()