Форум: "Начинающим";
Текущий архив: 2009.08.23;
Скачать: [xml.tar.bz2];
ВнизКак сравнить два списка (массива)? Найти похожие ветки
← →
Abcdef123 (2009-06-25 07:54) [0]Здравсвуйте, Мастера.
Кто подскажет,есть ли, может кем то, уже разработанный дополнительный компонент Делфи, или пример программы-алгоритма, где построчно ищется соответсвие между записями в двух списках(к примеру, текстовых файлах). Ярким примером задачи может служить такой пример - из банков получаем в текстовом формате проводки. Надо найти в сушествующей базе данных компании соответствие этим проводкам. Причем, банки разные, структура файла может быть разная, и даже может быть, что банк дает какую то подсуммированную информацию, а надо значит чтоб подетальную как-то состыковать и выйти на сумму, указанную банком. Но, для начала, для простоты,хотя бы предположить, что транцации не суммированы. Но ключи и последовательность полученной информации не известна. Как в этом случае надо сравнивать на соответствие?
Буду очень признательна за любые ссылки, советы, примеры программ на эту тему!
← →
Сергей М. © (2009-06-25 08:22) [1]Какие атрибуты операций подлежат поиску и сравнению ?
Дата, сумма, что еще ?
В каком виде требуется получить результаты ?
← →
Anatoly Podgoretsky © (2009-06-25 09:11) [2]> Abcdef123 (25.06.2009 7:54:00) [0]
Так списки, файлы или массивы?
Кроме того форматы данных формализованы.
← →
Abcdef123 (2009-06-25 09:32) [3]to [1] В том то и дело, что атрибуты точно не могут быть определены. Условно, да - сумма,дата (кстати, банковская дата может быть отлична от даты компании),и какая то текстровая информация (это может быть ФИО, но может быть и только название операции, к примеру
Поэтому я пока спрашиваю общий алгоритм сравнения строк (схема полного или частичного соответсвия).
Результат - скажем пометить крыжиками те записи компании, которые нашли себе соответсвие в списке банка, пометить другими крыжиками, те которые нашли не однозначное соответствие и требует ручного подтверждения бухгалтера о соответствии (то есть типа дать это в виде отчета). Детали предоставления результата на данном этапе пока не обсуждаются. Пока важна схема как проводить поиск-сравнение.
← →
VMF (2009-06-25 09:37) [4]http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D0%BB%D0%BB%D0%B5%D0%BA%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85
http://www.hflabs.ru/
← →
Сергей М. © (2009-06-25 09:44) [5]
> алгоритм сравнения строк (схема полного или частичного соответсвия).
Кури тему "регулярные выражения".
Экспериментируй на классе TRegExpr, он на каждом углу в Тырнете встречается.
← →
Abcdef123 (2009-06-25 09:52) [6]To [2]
скажем, текстовые файлы, пример:
банк1 может быть дает в таком виде
СОМ25062009ОБЩДЕБЕТ 00091234756Е0000100000.00
СОМ24062009СИДОРОВ В П 97888965251С0009000053.00
банк2 в таком:
00091234756Е0000100000.00СОМ25062009ТРАНЗАКЦИЯ234 156
97888965251С0009000053.00СОМ24062009СИДОРОВ В П 156
То есть на определенный формат не зацикливаемся. А пытаемся найти как можно больше соответствий у каждой строки с нашей базой данных - к примеру таблицы работники +зарплата
То есть меня интересует схема сравнения - посимвольно, может выделением блоков(слов) в строке и т.д.
Я не знаю, возможно я не достаточно понятно объясняю. В таком случае, если на ваш взгляд моя задачас слишком расплывчатаЮ то какой минимум входной информации должен быть, чтобы вообще вести разговор? Как я изначально написала. Мне надо найти способ как сравнивать и в результате найти какие транзакции прошли через банки, а какие ПОКА нет на текущую дату. Ведь, к примеру если мы перечисляем деньги в банк, они на определенный счет попадают не в тот же день порой.
← →
Sha © (2009-06-25 10:10) [7]На мой взгляд, в вашем случае проще не сравнивать массивы,
а определять соответствие поступивших данных одному из шаблонов,
для которых определены конкретные действия.
← →
Сергей М. © (2009-06-25 10:14) [8]Для каждого банка потребуется разработать индивидуальный шаблон РВ
← →
Anatoly Podgoretsky © (2009-06-25 10:34) [9]
> Abcdef123 (25.06.09 09:52) [6]
Вы пытаетесь решить задачу хакерскими методами, вместо цивильного обращения к банку за форматом.
← →
Anatoly Podgoretsky © (2009-06-25 11:17) [10]> Сергей М. (25.06.2009 10:14:08) [8]
Тут обычный текстовый формат, характерный для банков, поля фиксированой длины.
Подробности о полях в банке, секретом не являются и охотно выдаются или возможно даже опубликованы, для импорта из клиент банков.
← →
Abcdef123 (2009-06-25 11:26) [11]to [8,9]
нет, просто нашу программу используют разные фирмы, и мы не знаем все банки, бывают и иностранные. Так что нам надо написать общий подход, по воможности хотя бы найти какой то процент совпадений, то есть частично облегяить ручную работу, остальное (которые не нашли совпадений) они бы вручную обрабатывали.
← →
Abcdef123 (2009-06-25 11:31) [12]Ну хорошо, допустим в строке будут обязательными некоторые данные (сумма, дата,ФИО), последовательность может быть различная все равно, так как разныен банки-разные структуры. Как мне прописисать алгоритм поиска построк в таком случае, и как в зависимости от степени совпадения проставлять приоритеты совпавших строк?
← →
dmitrot © (2009-06-25 11:38) [13]Банки могут сбрасывать выписки не только в текстовом формате - попробуйте попросить ваших клиентов потребовать у банков например dbf.
Ваш способ шаманства со строками ни к чему хорошему не приведет. Проверено на практике
← →
Anatoly Podgoretsky © (2009-06-25 12:18) [14]> dmitrot (25.06.2009 11:38:13) [13]
А когда хакерские методы к хорошему приводили - только временно.
← →
Сергей М. © (2009-06-25 12:52) [15]
> Как мне прописисать алгоритм поиска построк
В виде шаблона рег.выражения
← →
Sha © (2009-06-25 13:38) [16]> Как мне прописисать алгоритм поиска построк в таком случае,
> и как в зависимости от степени совпадения проставлять приоритеты совпавших строк?
Лучше не делайте этого.
Найдите другое занятие.
← →
Игорь Шевченко © (2009-06-25 13:48) [17]не надо регулярных выражений, надо формат от банка. Сделать заранее для неизвестных банков - утопия
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.08.23;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.005 c