Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
6-1206045254
anton
2008-03-20 23:34
2009.08.23
навигация в веббраузер


2-1245681294
marantz85
2009-06-22 18:34
2009.08.23
Как переписать данные из динамического массива в memorystream?


15-1244032296
Игорь Шевченко
2009-06-03 16:31
2009.08.23
сделать для формы (фрейма, WinControl) аналог Begin/EndUpdatе


2-1245733905
Tornado
2009-06-23 09:11
2009.08.23
Копирование файлов


2-1245989782
novai
2009-06-26 08:16
2009.08.23
Директивы компилятора в релизе программы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский