Форум: "Основная";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];
ВнизПоиск и работа с файлами Найти похожие ветки
← →
explorer (2003-08-20 07:57) [0]Мастера!
Стоит задача: в нескольких тестовых файлах с одной структурой данных найти и подсчитать количество строк.
Например, несколько файлов с такими данными:
№ банкомата Время карточки ....... ....
1 925 00:00 4779320000297237 ...... ....
2 925 00:01 4779320000701105 ....... ....
3 925 00:18 4459851270107752 ....... ....
4 925 06:22 4459851270108362 ....... ....
5 925 06:54 4779320001144438 ....... ....
.........................................
.........................................
и требуется подсчитать количество карточек по маске 477*************.
Подскажите, как это реализовать и, чтобы производился общий подсчет сразу в нескольких файлах по заданной маске?
← →
Palladin (2003-08-20 08:06) [1]FindFirst/FindNext
+ TStringList.LoadFromFile
+ Pos или MatchesMask
← →
Lina (2003-08-20 08:12) [2]
...
Var
F:TextFile;
I,SimInt:Integer;
S:string;
Kart:Integer;
Begin
i:=0;
Kart:=0;
assignfile(f,"Путь к файлу");
reset(f);
while not EOF(f) do
begin
readLn(s);
Inc(i) //Колличество строк
SimInt:=Pos("477",s)
if s<>0 then
inc(kart);
end;
showmessage(inttostr(kart));//кол-во карт
showmessage(inttostr(i)); //кол-во строк
end;
← →
Palladin (2003-08-20 08:15) [3]:)
1 А файл кто будет закрывать? Пушкин?
2 477 может встретится и в середине строки, надо это учитывать
← →
explorer (2003-08-20 08:39) [4]1. А если мне надо найти несколько строк по такой маске:
******55********?
2. и вдруг банкомат будет с номером "477", а не карточка?
← →
Palladin (2003-08-20 08:43) [5]
> explorer © (20.08.03 08:39) [4]
дык думай, инструменты тебе дадЁны...
← →
Lina (2003-08-20 08:53) [6]Я бы вообще делала все в INI
← →
explorer (2003-08-20 08:55) [7]>Lina
в смысле?
← →
Lina (2003-08-20 09:06) [8]Сделала бы секции типа
[Банкомет 1925]
Время=00:00
карточки=4777...
← →
panov (2003-08-20 09:37) [9]Делается довольно просто.
1. TStringList.LoadFromFile
2. Удаляем в цикле предшествующие символы до первой позиции карточки.
либо
1. читаем файл последовательно и сразу удаляем символы в начале.
далее - TStringList.Sort
и в один проход без поиска выбираем нужные записи.
← →
explorer (2003-08-20 10:08) [10]>Lina
Я бы с удовольствием так сделал!
Но,эти файлы формирует другой программный комплекс! :(
Подскажите, как разбить строку на слова, а эти слова на символы, чтобы можно было искать только в карточках?
← →
Palladin (2003-08-20 10:18) [11]Pos + F1
Copy + F1
Delete + F1
String ~ PChar, PChar ~ array of char; => String ~ array of char => S[I] ~ Char
http://www.yandex.ru/yandsearch?rpt=rad&text=%F3%F7%E5%E1%ED%E8%
EA%E8+pascal
По моему для старта копания и парсинга инфы более чем достаточно
ЗЫ
У тебя точно высшее образование?
А правда что работодатели не прокололись озадачив тебя?
← →
Miralex (2003-08-20 10:49) [12]на сайте http://delphibase.endimus.ru есть очень удобный алгоритм поиска подстроки в строке:
http://delphibase.endimus.ru/?action=viewfunc&topic=strsearch&id=10394
Грузишь свой текстовый файл например в Stroki : TStrings;
потом пишешь:
var s, chtoiskat : String;
startsimvol, kolichestvo : integer;
chtoiskat := "477";
for i:=0 to Stroki.Count-1 do
begin
s:= copy(Stroki[i], startsimvol, kolichestvo);
if BMSearch(1, s, chtoiskat) > 0 then //Делать что тебе надо
end;
startsimvol - номер символа в строке с которого начинаеться твоя карточка
kolichestvo - длина символов карточки
Chtoiskat - то что тебе надо в етой карточке искать!
← →
panov (2003-08-20 11:17) [13]У тебя же фиксированная структура записи. В чем же проблема взять 3 символа с определенной позиции?
← →
explorer (2003-08-20 11:39) [14]>Palladin
Я конечно понимаю, что ты осведомлен о всех тонкостях программирования и таким КРУТЫМ программером стал с рождения, но не все такие...!
Да еще... что-то я ни где на форуме не встретил, что он ТОЛЬКО для людей с высшем образованием! :)
Всего сразу обхватить нельзя!
Но за помощь спасибо!
Всем остальным тоже ОГРОМНОЕ спасибо!
← →
Anatoly Podgoretsky (2003-08-20 12:24) [15]Это не всего это базовые начальные знания, имеются ввиду операции сравненения, элементарные операции со строками, функция Copy, а образование тут совсем ни причем.
← →
explorer (2003-08-20 12:38) [16]>Anatoly Podgoretsky ©
Во-первых,что такое "базовые начальные знания"?
У всех база знаний разная, да и все понимают по-разному...
Тем более, какими-бы знания не были, они забываются, когда не востребованы!
← →
Anatoly Podgoretsky (2003-08-20 12:54) [17]Труднозабыть операции сравнения, базовые типы данных и операции над ними, правильнее сказать, что никаких знаний и не было.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c