Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.04;
Скачать: CL | DM;

Вниз

Поиск и работа с файлами   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.019 c
3-10582
korvin
2003-08-14 09:25
2003.09.04
---|Ветка была без названия|---


14-10937
Nikolai_S
2003-08-15 15:46
2003.09.04
InstallShield Express 3.5 SP4


6-10850
панИкёр
2003-06-30 07:37
2003.09.04
как сделать на компьютере фтп сервер?


3-10563
Karnegi
2003-08-15 10:55
2003.09.04
Помогите с фильтрацией по дате


1-10785
ossa
2003-08-23 09:56
2003.09.04
работа с папкой. подскажите SelectDirectory нужно ставить до