поиск по файлу

 

вопрос по работе с файлами
собственно
создаю базу данных в файле по истории вида
1|1|1|1|0|1|1|2|0|0|0|0|1|0|1|1|0
2|1|0|0|0|1|2|2|0|0|0|0|1|1|1|1|1
3|1|0|1|0|1|2|2|0|0|0|0|1|0|1|1|0
4|1|0|1|0|1|2|2|0|0|0|0|1|0|1|1|1
5|0|0|0|0|1|2|1|0|0|0|0|1|0|1|1|0
6|1|1|0|0|1|1|2|0|0|0|1|0|0|1|1|1
7|0|0|0|0|1|2|1|0|0|0|1|0|0|1|1|0
8|1|1|0|0|1|1|2|0|0|0|0|0|0|1|1|0
где первая цыфра уникальный идентификатор строчки
как можно сделать поиск по файлу на наличие совпадения данных строчки после идентификатора
если совпадения есть пропускать а если нет дописывать новую строчку в файл
просто строчки не должны повторяться
а если есть совпадения я в отчет записывать буду тока никак не пойму как именно поиск осуществить функций никак ненайду

 
int StringFind( string text, string matched_text, int start=0)
Поиск подстроки. Возвращает номер позиции в строке, с которой начинается искомая подстрока, либо -1, если подстрока не найдена.

BRGDS
 

а можно как то на кошках более подробно

как перебрать все строки к примеру в файле csv

что ищем

data = a[0]+"|"+a[1]+"|"+a[2]+"|"+a[3]+"|"+a[4]+"|"+a[5]+"|"+a[6]+"|"+a[7]+"|"+a[8]+"|"+a[9]+"|"+a[10]+"|"+a[11]+"|"+a[12]+"|"+a[13]+"|"+a[14]+"|"+a[15];
так не работает int seeek = StringFind(FileReadString(handle),data,0);

очевидно надо както брать по строчно чтоли каждую строчку

в экзеле проверил совпадения точно есть

 
tormovies:

а можно как то на кошках более подробно

как перебрать все строки к примеру в файле csv

что ищем

data = a[0]+"|"+a[1]+"|"+a[2]+"|"+a[3]+"|"+a[4]+"|"+a[5]+"|"+a[6]+"|"+a[7]+"|"+a[8]+"|"+a[9]+"|"+a[10]+"|"+a[11]+"|"+a[12]+"|"+a[13]+"|"+a[14]+"|"+a[15];
так не работает int seeek = StringFind(FileReadString(handle),data,0);

очевидно надо както брать по строчно чтоли каждую строчку

в экзеле проверил совпадения точно есть



Как я понял, предлагалось из массива сделать строку (текстовую, других не знаю) и сравнивать между собой. Хотя можно сделать контрольные суммы и их сравнивать. Твой массив так и просится преобразовать через двоичный и вместо строки сделать только одно число. А вот эти числа можно уже и сравнивать. При этом можно всегда преобразовать обратно. Просто надо механизм проработать. Из примера не видно какие есть интервалы для каждого значения.
 

я просто не такой продвинутый в программировании ))) поэтому если честно мало понял чего

там 15 переменных и три значения у переменных - исключать третье не желательно 0,1,2

и их комбинации я и хочу поискать

что за контрольные суммы - с чем их едят

 
tormovies:

я просто не такой продвинутый в программировании ))) поэтому если честно мало понял чего

там 15 переменных и три значения у переменных - исключать третье не желательно 0,1,2

и их комбинации я и хочу поискать

что за контрольные суммы - с чем их едят


Если хочешь, отвечу на электронку. Но только завтра. А заменить массив одним занчением я думаю это будет лучше.
 

admin@free-games.ru но блин столько спама приходит что могу не заметить

одно число не одно число помоему не принципиально

даже если будет одно число - как осуществить поиск по куче строк - с 1 номером (хотя я хотел еще добавлять идентификатор строчки чтоб потом вести по ней статистику )

 
tormovies:

admin@free-games.ru но блин столько спама приходит что могу не заметить

одно число не одно число помоему не принципиально

даже если будет одно число - как осуществить поиск по куче строк - с 1 номером (хотя я хотел еще добавлять идентификатор строчки чтоб потом вести по ней статистику )


В аську тебе написал.
 

в общем

если у кого есть пример поиска по файлу содержащему несколько строк - поиск наличия 1 строчки

скиньте плиз

 

Мне кажется что MQL требует слишком больших усилий для реализации даже таких простых задач. Поэтому предпочитаю либо использовать внешнюю библиотеку, которую легко реализовать другими средствами ( С, С++, Дельфи) или запускать более приспособленные для этого внешние программы. Например для работы с текстами, преобразования их, идеально, мощно и гибко подходит awk. Си подобный язычок, работает как с командной строкой так и с программами сохраненными в файле. Мощная работа с регулярными выражениями. Твоя задача решается за 10 минут. Думаю лучше однажды потратить несколько часов жизни на действительно грамотные, и проверенные годами тулзы, чем изобретать велосипед каждый раз заново.

ЗЫ. Есть куча реализаций под юних ( там это стандартная тулза). Хорошая реализация под винды с отличной документацией можно найти тут - http://gnuwin32.sourceforge.net/packages/gawk.htm

 
TedBeer:

Твоя задача решается за 10 минут


И на MQL4 эта задача решается за 10 мин.

Причина обращения: