Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: Зяба on June 08, 2018, 10:30:29 PM

Title: работа с текстом
Post by: Зяба on June 08, 2018, 10:30:29 PM
у меня есть список в блокноте в котором около 10-20 различных наименований повторяющихся много раз вперемешку одна строчка одно наименования но есть символы между одним и тем же наименованиям в различных местах до самого наименования или после него может быть или пробелы лишнее до после как то бы так сделать чтоб кликер проанализировал весь
этот список и выдал там первое столько раз второе столько раз найдено и.т.д ну и в конце остановился  ???
Title: Re: работа с текстом
Post by: Зяба on June 09, 2018, 08:04:05 AM
что то вроде этого
23:47:30 [Браслет веселья]
23:47:38 [Доспех гарпии]
23:48:07 [Венец растления]
23:48:18 [Дерзость]
23:48:34 [Веер растления]
Title: Re: работа с текстом
Post by: Hito on June 09, 2018, 08:57:09 AM
у меня есть список в блокноте в котором около 10-20 различных наименований повторяющихся много раз вперемешку одна строчка одно наименования
Это хрен с ним. Хоть сколько наименований.

но есть символы между одним и тем же наименованиям в различных местах до самого наименования или после него может быть или пробелы лишнее до после
А вот тут вопрос... Вы выдали образец списка:

что то вроде этого
23:47:30 [Браслет веселья]
23:47:38 [Доспех гарпии]
23:48:07 [Венец растления]
23:48:18 [Дерзость]
23:48:34 [Веер растления]

Так где тут одни и те же наименования и разные символы между ними...? Или Вы [Венец растления] и [Веер растления] считаете одним и тем же наименованием а все, что не относится к "растления" - символами между ними? Или как...? Как людям понимать - что Вам нужно...?
Title: Re: работа с текстом
Post by: Зяба on June 10, 2018, 01:02:49 AM
 :o попросил одно начали поучать я вообще взял образец это и есть лог строчек там не 5. просто какой смысл кидать 100500 строчек........
Title: Re: работа с текстом
Post by: Зяба on June 10, 2018, 01:05:26 AM
у меня есть список в блокноте в котором около 10-20 различных наименований повторяющихся много раз вперемешку одна строчка одно наименования
Это хрен с ним. Хоть сколько наименований.

но есть символы между одним и тем же наименованиям в различных местах до самого наименования или после него может быть или пробелы лишнее до после
А вот тут вопрос... Вы выдали образец списка:

что то вроде этого
23:47:30 [Браслет веселья]
23:47:38 [Доспех гарпии]
23:48:07 [Венец растления]
23:48:18 [Дерзость]
23:48:34 [Веер растления]

Так где тут одни и те же наименования и разные символы между ними...? Или Вы [Венец растления] и [Веер растления] считаете одним и тем же наименованием а все, что не относится к "растления" - символами между ними? Или как...? Как людям понимать - что Вам нужно...?


нет тут это разное просто может быть типа так  Или Вы [Венец растления         ] [Венец растления] [Венец растления      %$]  ну и тому подобное
Title: Re: работа с текстом
Post by: Зяба on June 10, 2018, 01:07:26 AM
Похоже на автоматизацию  под Торговый аккаунт игры "Небеса"  ;D
  что ??? это лог по игре просто выдает вот так вот в лог самой игры (я его могу скопировать в блокнот) но листать же лень что где когда и как было бы удобно чтоб кликер сам прошуршал а мне выдал в лог сколько чего сделано  :)
Title: Re: работа с текстом
Post by: Атеист on June 10, 2018, 08:08:18 PM
... какой смысл кидать 100500 строчек........
Вот это и нужно сделать. :) Скопировать этот самый лог, сохранить его в текстовый файл и прикрепить к своему сообщению на форуме.
Люди хотят помочь, но входных данных пока нет...
Title: Re: работа с текстом
Post by: Qwerry on June 11, 2018, 11:59:00 PM
В кликере есть ведь чудесная команда STRFILTER (str, set, mode).
В вашем варианте при помощи строчки $a=STRFILTER ($str, " []1234567890-=+!№;%:?*()@#$^&{}",0)
все предложенные варианты
$str = "23:05:06 [Венец растления         ],  $str = " 23:15:06 [Венец растления]"? $str = "23:45:06 [Венец растления      %$]"
превратятся в $a="Венецрастления" и смогут быть подсчитаны.
Если какие-то из символов фильтра отсутствуют или лишние, разумеется, можно поменять.

С тем, чтобы кликер построчно анализировал блокнот и записывал результаты, справитесь?
Title: Re: работа с текстом
Post by: Зяба on June 14, 2018, 01:42:52 PM

С тем, чтобы кликер построчно анализировал блокнот и записывал результаты, справитесь?
ни разу не видел как это делать  :( буду рад если подскажете
Title: Re: работа с текстом
Post by: Зяба on June 14, 2018, 06:10:59 PM
такс попробую еще раз описать всю картину  ::) у меня есть список (лог) я могу его копировать и вставить в блокнот или куда нужно. в нем есть разные названия того что произошло в каждой строчке время и в скобках названия но иногда могут быть разные знаки символы (-=+!№;%:?*()@#$^&{}",0)  или пробелы список весьма длинный там около 100 различных названий повторяющихся около 1000 раз выглядит это дело вот так :
23:47:30 [Браслет веселья]
23:47:38 [Доспех гарпии]
23:48:07 [Венец растления]
23:48:18 [Дерзость]
23:48:34 [Веер растления]
23:48:36 [Дерзость    ]
23:47:38 [Доспех гарпии $]
нужно чтоб кликер как то обработал список нашел одинаковые и вывел в лог по примеру этого отрывка :
Браслет веселья -1
Доспех гарпии-2
Венец растления-1
Веер растления-1
Дерзость-2
можно рабочий скрипт и объяснения к каждой строчке что за что отвечает и почему так  ???
Title: Re: работа с текстом
Post by: Johnny on June 14, 2018, 07:32:02 PM
на PHP эта задача кстати решалась бы довольно просто. но поскольку у нас нет ассоциативных массивов, то нам потребуется два простых.
первый массив содержит отношение индекс - хреновина
то есть
$arr1[0] = "Браслет веселья"
$arr1[1] = "Доспех гарпии"
...
то есть присваивает каждой вещи индекс. каждую итерацию этот массив должен просматриваться целиком и если очередная вещь в нем не присутствует, то она добавляется в хвост и ей присваивается индекс.

второй массив содержит теже индексы, что и первый массив (объективно по ним надо просто обратиться). но уже при упоминании вещи идет приращение счетчика. при добавлении элемента в массив 1, в массив 2 одновременно добавляется единица. при этом индексы массива 1 соответствуют индексам массива 2, как вы понимаете, образуя связный список.

получаем отношение хреновина - индекс - количество
$arr2[0] = 3
$arr2[1] = 1
...
"Браслет веселья" = 3
"Доспех гарпии" = 1

в итоге мы можем запросто отследить количество дерзостей и растлений гарпий.
добро пожаловать в мир релятивных баз данных.

ну это тем разумеется адресовано, кто захочет размять мозги.
Title: Re: работа с текстом
Post by: Зяба on June 14, 2018, 10:40:57 PM
на PHP эта задача кстати решалась бы довольно просто. но поскольку у нас нет ассоциативных массивов, то нам потребуется два простых.
первый массив содержит отношение индекс - хреновина
то есть
$arr1[0] = "Браслет веселья"
$arr1[1] = "Доспех гарпии"
...
то есть присваивает каждой вещи индекс. каждую итерацию этот массив должен просматриваться целиком и если очередная вещь в нем не присутствует, то она добавляется в хвост и ей присваивается индекс.

второй массив содержит теже индексы, что и первый массив (объективно по ним надо просто обратиться). но уже при упоминании вещи идет приращение счетчика. при добавлении элемента в массив 1, в массив 2 одновременно добавляется единица. при этом индексы массива 1 соответствуют индексам массива 2, как вы понимаете, образуя связный список.

получаем отношение индекс - хреновина - количество
$arr2[0] = 3
$arr2[1] = 1
...
"Браслет веселья" = 3
"Доспех гарпии" = 1

в итоге мы можем запросто отследить количество дерзостей и растлений гарпий.
добро пожаловать в мир релятивных баз данных.

ну это тем разумеется адресовано, кто захочет размять мозги.
написали ребусов сижу читаю справку и понять немогу что я читаю  :-\ вообще башка не варит после работы и времени особо нету :(
Title: Re: работа с текстом
Post by: Oraven on June 14, 2018, 10:56:02 PM
написали ребусов сижу читаю справку и понять немогу что я читаю  :-\ вообще башка не варит после работы и времени особо нету :(
Ну так левел у тебя еще слабый для такого, качаться надо!  ;)  ;D

Завтра ченить напишу, если еще кто не напишет.
Title: Re: работа с текстом
Post by: Зяба on June 14, 2018, 11:19:41 PM
написали ребусов сижу читаю справку и понять немогу что я читаю  :-\ вообще башка не варит после работы и времени особо нету :(
Ну так левел у тебя еще слабый для такого, качаться надо!  ;)  ;D

Завтра ченить напишу, если еще кто не напишет.
спасибо  :)
Title: Re: работа с текстом
Post by: Oraven on June 15, 2018, 08:43:49 AM
Все возможные варианты нужно добавить в первую строку самому, разделяя их вертикальной чертой.

Для версии кликера 4.13
Лог копируешь в буфер и запускаешь скрипт. Результат выводится в dialogbox.
Code: (clickermann) [Select]
STRSEPARATE("Браслет веселья|Доспех гарпии|Венец растления|Дерзость|Веер растления", "|", $arr1)
FOR($a=0,$a<ARRSIZE($arr1))
   ARRPUSH($arr3,0)
END_CYC

STRSEPARATE(FROMCLIP(), STRCONCAT(char(13),char(10)), $arr2)

FOR($i=0,$i<ARRSIZE($arr2))
   FOR($i2=0,$i2<ARRSIZE($arr1))
      IF(STRPOS($arr2[$i],$arr1[$i2]) > 0)
         $arr3[$i2] = $arr3[$i2] + 1
      END_IF
   END_CYC
END_CYC

//LOGCLEAR
//LOGSHOW (1, 100,100)
$str = ""
FOR($i=0,$i<ARRSIZE($arr1))
   //   LOGWRITE ($arr1[$i], " - ", $arr3[$i])
   $str = STRCONCAT($str,$arr1[$i], " - ", $arr3[$i],char(13),char(10))
END_CYC

$dialog = DIALOGBOX($str, 0, 0)

HALT
Title: Re: работа с текстом
Post by: Qwerry on June 15, 2018, 06:41:16 PM
на PHP эта задача кстати решалась бы довольно просто.

Не могу сказать, что в кликерманне эта задачка вызывает особые проблемы. По крайней мере для всех, кто помнит, как хранятся результаты поиска в SCANPICTURE.
Правда, если будет больше параметров и не во всех случаях укажут все значения, то пихать всё в один массив - тот еще мазохизм (особенно для не очень внимательных людей или тех, кто вынужден разбираться в чужом коде). Так что идею беру на заметку))

Quote from: Oraven
$str = ""
FOR($i=0,$i<ARRSIZE($arr1))
   //   LOGWRITE ($arr1[$i], " - ", $arr3[$i])
   $str = STRCONCAT($str,$arr1[$i], " - ", $arr3[$i],char(13),char(10))
END_CYC
$dialog = DIALOGBOX($str, 0, 0)
Так вот это как делается) Ну я догадывалась о том, что возможно несколько строк писать. Oraven, спасибо, буду пользоваться.
 Ну и реализация через буфер и параллельные массивы интересна.
у меня есть список в блокноте в котором около 10-20 различных наименований повторяющихся много раз
список весьма длинный там около 100 различных названий повторяющихся около 1000 раз

Такс, попробую помочь, пока вариантов наименований не стало около 10 тысяч, а список не расширился до миллионов))
Вы сохраняете скрипт в папку, рядом создаете блокнот с названием gamelog.txt, в него сохраняете ваши логи. Запускаете скрипт. Рядом возникнет другой блокнот - Unique names.txt с датой и результатами. Та же информация продублируется в логах.
У меня работает нормально. Если что, то как убирать случайно вклинившиеся в название хреновин кавычки ("") пока не знаю точно, так что будем считать, что их там не бывает. Вернее уже возникла мысль - не зря же МудрогоКота за напоминание про коды символов благодарю. Но что-то не очень хочется мучиться с ними.
Code: (Clickermann) [Select]
LOGCLEAR
Print("all logs: ",TFCOUNT("gamelog.txt")) //выводит в лог количество строк в блокноте
Print("")
FOR($a=0,$a<TFCOUNT("gamelog.txt"))
   $str=STRFILTER (TFREAD("gamelog.txt", $a+1), "1234567890 []-=+!№;%:?*()@#$^&{}",0) // не указанные мусорные символы можно дополнить
   For($b=0,$b<ARRSIZE ($arr),2)
      If($arr[$b]=$str)
         $arr[$b+1]= $arr[$b+1]+1
         $b=9999
      End_if
   END_CYC
   If($b<9999)
      $arr[$b]=$str
      $arr[$b+1]=1
   end_if
END_CYC

Print("***********")
Print("Unique names: ", ARRSIZE($arr)/2 )  //здесь решится загадка о количестве уникальных имен - неважно 100 их или 10
TFWRITE("Unique names.txt", "")
TFWRITE("Unique names.txt", STRCONCAT($_date_str,"  ",$_time_str)) // файл записи результатов один, но каждый подсчет подписан датой и временем

For($a=0,$a<ARRSIZE($arr),2)
   $res=STRCONCAT($a/2+1, ") ",$arr[$a]," = " ,$arr[$a+1])  // Нумерация со скобками не должна сильно помешать их переставлять в алфавитном порядке, если возникнет необходимость. Но если что сотрёшь символы [$a/2+1, ") ",], и будут просто названия
   TFWRITE("Unique names.txt", $res)
   Print($res)
End_cyc

halt
Title: Re: работа с текстом
Post by: Зяба on June 17, 2018, 07:22:31 PM
спасибо огромное пока не вникал что к чему времени нет. но так попробовал работает все единственное во втором варианте буквы "в" тож уберает   :)
Title: Re: работа с текстом
Post by: Атеист on June 17, 2018, 07:43:03 PM
Johnny спасибо за новые плюшки.
Oraven спасибо за то что показал как применять эти новые плюшки (красивый ввод и вывод данных, + удобство использования).

Из прошлых уроков, из сказанного в теме выше, из использования языка неочевидным образом и "побочных" эффектов такого использования, можно сделать скрипт, который будет выполняться намного быстрее.

К сожалению оригинальный лог нам так и не показали, поэтому пришлось делать воображаемый лог и для него писать скрипт. Также не известно, как получается этот лог - нажатием в приложении кнопки "Сохранить лог" сразу в файл, или через буфер обмена.

Тестировалось на Clickermann v4.13.014 x64. ОС - Windows 7 64bit
Лог сохраняем в файл "log.txt" и запускаем скрипт. На выходе получаем файл "items_count.ini". Заранее составлять список предметов, которые нужно посчитать, не требуется.
Архив для тестов во вложении.

Code: (clickermann) [Select]
$t = $_ms
LOGCLEAR
TFCLEAR("items_count.ini", 1)

TFREADARR("log.txt", $arr)
WHILE(ARRSIZE($arr))
   $str = STRFILTER(ARRPOP($arr), "IVX АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя", 1)
   INIWRITE("items_count.ini", $str, INT(INIREAD("items_count.ini", $str, "ХРЕНОВИНЫ")) + 1, "ХРЕНОВИНЫ")
END_CYC
UNDEFINE($arr)

TFREADARR("items_count.ini", $arr)
ARRSORT($arr)
TFWRITEARR("items_count.ini", $arr)

LOGWRITE ("Выполнено за ", $_ms - $t, " ms")
HALT
Title: Re: работа с текстом
Post by: Зяба on June 17, 2018, 10:51:51 PM
Johnny спасибо за новые плюшки.
Oraven спасибо за то что показал как применять эти новые плюшки (красивый ввод и вывод данных, + удобство использования).

Из прошлых уроков, из сказанного в теме выше, из использования языка неочевидным образом и "побочных" эффектов такого использования, можно сделать скрипт намного быстрее.

К сожалению оригинальный лог нам так и не показали, поэтому пришлось делать воображаемый лог и для него писать скрипт. Также не известно, как получается этот лог - нажатием в приложении кнопки "Сохранить лог" сразу в файл, или через буфер обмена.

ошибка  :(
Для Clickermann v4.13
Лог сохраняем в файл "Лог.txt" и запускаем скрипт. На выходе получаем файл "Количество хреновин.ini" (расширение можно поменять).
Архив для тестов во вложении.

Code: (clickermann) [Select]
$t = $_ms
LOGCLEAR
TFCLEAR("Количество хреновин.ini", 1)

TFREADARR("Лог.txt", $arr)

WHILE(ARRSIZE($arr))
   $str = STRFILTER(ARRPOP($arr), " АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя", 1)
   INIWRITE("Количество хреновин.ini", $str, INT(INIREAD("Количество хреновин.ini", $str, "ХРЕНОВИНЫ")) + 1, "ХРЕНОВИНЫ")
END_CYC
UNDEFINE($arr)

TFREADARR("Количество хреновин.ini", $arr)
ARRSORT($arr)
TFWRITEARR("Количество хреновин.ini", $arr)

LOGWRITE ("Выполнено за ", $_ms - $t, " ms")

HALT
Title: Re: работа с текстом
Post by: Hito on June 17, 2018, 10:58:48 PM
не вникал что к чему времени нет. но так попробовал работает
Так и не прокачаешь левл свой...)
Title: Re: работа с текстом
Post by: Атеист on June 18, 2018, 04:56:10 PM
...
ошибка  :(
...

Нужно больше информации по ошибке, как она проявляется. Что происходит при ошибке, что пишет Clickermann?
Я проверял скрипт на текущей релизной версии - Clickermann v4.13.014 x64. ОС - Windows 7 64bit.
Предположительно, ошибка может возникать из за большого входного файла "Лог.txt", тогда нужно сократить в этом файле количество строк.
Title: Re: работа с текстом
Post by: Hito on June 18, 2018, 05:41:39 PM
Лог сохраняем в файл "Лог.txt" и запускаем скрипт. На выходе получаем файл "Количество хреновин.ini" (расширение можно поменять).
Во первых, сразу себе заведи привычку - забудь кириллицу и пробелы, когда дело касается наименования файла, если с этим файлом будет работать какая-либо программа, или скрипт.
Title: Re: работа с текстом
Post by: Атеист on June 18, 2018, 09:42:52 PM
Лог сохраняем в файл "Лог.txt" и запускаем скрипт. На выходе получаем файл "Количество хреновин.ini" (расширение можно поменять).
Во первых, сразу себе заведи привычку - забудь кириллицу и пробелы, когда дело касается наименования файла, если с этим файлом будет работать какая-либо программа, или скрипт.

Замечание справедливое, спасибо Евгений за поправку. Главное, помню об этом, но все равно иногда делаю. Сам от этого не страдал уже очень давно.
Свое сообщение выше переписал, файл "log.txt" сократил до 5000 строк и наполнил его новыми предметами, файлы переобозвал.
Title: Re: работа с текстом
Post by: Hito on June 19, 2018, 02:06:36 AM
Свое сообщение выше переписал, файл "log.txt" сократил до 5000 строк
Для чего тебе такие большие файлы логов? Все скрипты, работающие более нескольких секунд, обычно построены на цикличности (не беря во внимание особые случаи). Если будет какая-то ошибка, из-за которой скрипт что-то не сделает, то эта ошибка повторится в цикличности и ища ее в логах, ты найдешь ее повторяющейся в ста, ну пусть - в двести-триста, строчках. Зачем 5 тысяч-то...?
Title: Re: работа с текстом
Post by: Атеист on June 19, 2018, 10:17:17 AM
Свое сообщение выше переписал, файл "log.txt" сократил до 5000 строк
Для чего тебе такие большие файлы логов? Все скрипты, работающие более нескольких секунд, обычно построены на цикличности (не беря во внимание особые случаи). Если будет какая-то ошибка, из-за которой скрипт что-то не сделает, то эта ошибка повторится в цикличности и ища ее в логах, ты найдешь ее повторяющейся в ста, ну пусть - в двести-триста, строчках. Зачем 5 тысяч-то...?

Сейчас за этим вопросом последует 5 тысяч+ букв в ответ. :)  Дело в том, что эти самые "логи" не есть логи работы Кликермана, в которых надо отловить ошибку, а логи из игры. Например логи крафта игровых предметов. Предполагается, что эти логи могут быть очень большими и содержать множество уникальных названий предметов на кирилице. Одна строка - один предмет + рандомный "мусор" в виде различных печатных символов и пробелов, хаотично разбросанных по строкам, но не внутри названий предметов. Это как я понял задачу.
Уникальных предметов много и в логе их названия могут повторяться в разных строках. Задача в том, чтобы посчитать сколько раз каждый предмет был записан в лог.
Такой лог и есть входные данные для скрипта, его нельзя крутить в цикле, а нужно обработать всего один раз и вывести результат.

Настоящий игровой лог я не видел, потому сделал его сам, напихав в строки "мусора" в виде - "-=+!№;%:?*()@#$^&{},0". А размер этих логов в несколько тысяч строк, как раз для того, что бы выявить преимущества/слабости разных алгоритмов. На малых объемах данных различия в работе, даже сильно отличающихся сценариев, почти не видны, нет наглядности. Кстати 5к строк это не много, но результаты тестов уже впечатляют (я приведу примеры).

Теперь про алгоритмы и тесты. Всё стало совсем интересно когда отписался сам Johnny, сообщив - "у нас нет ассоциативных массивов" (расцениваю как подсказку) и расписал альтернативный алгоритм, с припиской "ну это тем разумеется адресовано, кто захочет размять мозги". Мне мозги долго разминать не пришлось, они у меня итак мягкие "как титька", :) ведь моей первой темой на этом форуме была как раз затронута тема про эти самые ассоциативные массивы, но не в обычном их виде, а в образе ini-файлов. Было это здесь (http://crapware.aidf.org/forum/index.php?topic=2815.msg18150#msg18150) (см. "Второй вариант"). Atas тогда сказал - "Johnny давно всё смог и придумал, нам осталось только правильно этим воспользоваться". Меня тогда порадовал нестандартный подход Атаса к проблеме и удивила скорость работы INIWRITE(), хотя это работа с жестким диском. Как видно из той темы, такой подход тогда был революционным и сегодня похоже стал незаслуженно забытым. Спасибо Atas еще раз.

Первым "установил планку" Андрей, реализовав алгоритм предложенный Johnny. Алгоритм, который есть ничто иное как всем известный брутфорс. Скорость работы которого зиждется на малом количестве данных, которые он перебирает. И в примере с пятью искомыми предметами в логе он легко справлялся.
Я провел тесты для всех предложенных в этой теме алгоритмов, на одних и тех же данных (лог в 5000 коротких строк и 203 уникальных предмета).
Скрипт Андрея показал время 155482 ms. Окно вывода (dialogbox) на моем мониторе не уместилось.

Qwerry изначально имела свою идею и пошла своим путем, она "подняла планку" сразу в 2,6 раза. Её скрипт разобрал тот же лог за 59502 ms. Алгоритм - тоже полный перебор и сравнение.

Скромно скомунизденный мной Atas-ный алгоритм "схавал" те же данные за 3992 ms, что в 14,9 раз быстрее скрипта Qwerry и в 38,9 раз быстрее скрипта Андрея. В алгоритме никакого перебора и никаких сравнений нет, просто кинул в в ini-файл и всё. :)  Ну и сортировку я от себя добавил, это улучшает читаемость результатов.
Причем при разборе механики INIWRITE(), вскрылась незадокументированная способность этой функции обрезать пробелы слева и справа от имени параметра. Опять же большой плюс к быстродействию. Запишу как открытие на свой счет, если никто не предъявит претензий. Я пробовал отрезать эти пробелы двумя циклами, и это увеличивало время работы скрипта почти на 50%.

Так что, можно сказать, ассоциативные массивы у нас есть и они неплохо работают. :)

Если кому интересно - во вложении архив со скриптами для тестов.
Title: Re: работа с текстом
Post by: Hito on June 19, 2018, 12:41:47 PM
Слушай... Ну, что могу сказать... Я сам плотно работаю с ini. У меня сейчас несколько персов качаются в одной гильдии. Они друг другу пати кидают, ходят в данжи гильдии и так далее. "Общаются" они между собой через ini  они у меня. Помимо всего этого, у меня все рабочие скрины проходят регистрацию в ini - ширина, высота, координаты и так далее. Так что, как ты понимаешь, у меня в ini инфы тоже не мало. Но... Что мешает тебе инфу в этих файлах разбить на части и создать для этих частей свои ini? Например, нужна инфа о броне - шерстим файл bronya.ini Ну и так далее...
Title: Re: работа с текстом
Post by: Атеист on June 19, 2018, 01:54:23 PM
Всё верно ini-файлы для того и созданы чтобы хранить информацию в формате "ключ = значение", как в базе данных. Это по сути и есть базы данных, только времён андалов и первых людей)). Но к этой теме они отношения не имеют. Автор темы спросил как подсчитать количество уникальных предметов в текстовом файле, и всё. Будет ли он хранить результаты этих вычислений как базу данных, для сбора торговой статистики например, и в каком формате будет хранить, может в sql, может в mysql, он не сказал.

А про ini-файлы я напомнил из за из сходства с ассоциативными массивами, которые так же имеют формат "ключ = значение". И еще ini-файлы не могут хранить в одной секции несколько параметров с одинаковыми именами. Там не может быть дубликатов ключей. Это очень удобно. Не надо искать место пары, не надо перебирать строки, не надо ничего сравнивать. Достаточно указать имя параметра, значение и секцию, и функция сама положит данные куда надо. И так же легко достает значение параметра из указанной секции. И делает она это очень быстро. Вот и всё).
Title: Re: работа с текстом
Post by: Hito on June 19, 2018, 02:24:50 PM
Сорри... Просто сегодня у жены день рождения и я уже чуток выпил. И по сему "совсем незаметно" соскользнул с текстовых файлов-логов на ini. А произошло это потому, что я спросил - зачем такие большие файлы логов, а мне в ответ о том, что типа это не логи, а данные о разных шмотках и так далее. Вот у меня в голове и перемешались эти файлы логов и ini-файлы. Так вот о наших тараканах... Что мешает эти файлы (текстовые, как я понимаю...) логов разделить на "подфайлы"? Типа, нужна броня - шерстим bronya.txt Я уже молчу о том, что я не понимаю - почему переменные надо было сохранять в текстовом файле в 5000 строк, а не в ini...

ini-файлы не могут хранить в одной секции несколько параметров с одинаковыми именами
А это для чего-то нужно...?
Title: Re: работа с текстом
Post by: Атеист on June 19, 2018, 03:35:22 PM
Что мешает эти файлы (текстовые, как я понимаю...) логов разделить на "подфайлы"? Типа, нужна броня - шерстим bronya.txt
Лог копируется из игры в текстовый файл. И только после этого начинается его разбор. Можно конечно нарезать его в Блокноте на маленькие куски, если так будет удобнее. А если там все предметы из разных категорий в одну кучу свалены, и броня и зелья? Лучше уж отфильтровать один большой файл от лишнего текста и вычленить из него все предметы, которые кирилицей написаны. А их уже разложить каждый в свою категорию. Нормальная база данных получится,)) где в одной секции броня, в другой пойло, и т.д.

почему переменные надо было сохранять в текстовом файле в 5000 строк, а не в ini...
Это не переменные, а воображаемый лог из игры, этот файл в 5000 строк я сам придумал, только для тестов скрипта. :) Посмотреть бы на настоящий лог, то и гадать бы не пришлось как он выглядит. А почему он не в ini? Это потому что его только предстоит перегнать в ini и там уже разложить по полочкам.

ini-файлы не могут хранить в одной секции несколько параметров с одинаковыми именами
А это для чего-то нужно...?
Конечно нужно, вот тут пример как удалить дубликаты строк из файла - http://crapware.aidf.org/forum/index.php?topic=2815.msg18150#msg18150 во Втором варианте.
Главное ничего сравнивать не надо, просто циклом заливаешь строки в файл командой INIWRITE() и всё.)) Если точно такая строка уже есть в файле, то она как бы не ложится рядом, а перезаписывает уже существующую. И главное - быстрее способа пока типа нет.)
Title: Re: работа с текстом
Post by: Hito on June 19, 2018, 03:53:11 PM
Это потому что его только предстоит перегнать в ini и там уже разложить по полочкам.
Так ты это сделай, а потом уже проверяй работоспособность проекта...

Конечно нужно
Ты вопроса не понял...) Я спросил - а это для чего-то нужно...? Имея ввиду - кому-то нужно в ini-файле хранить в одной секции несколько параметров с одинаковыми именами...?
Title: Re: работа с текстом
Post by: Атеист on June 19, 2018, 04:04:30 PM
Это потому что его только предстоит перегнать в ini и там уже разложить по полочкам.
Так ты это сделай, а потом уже проверяй работоспособность проекта...
Так я уже сделал и проверил.) У меня нормально работает. Надо ждать что скажет автор темы. Ошибка там у него была какая то.

Конечно нужно
Ты вопроса не понял...) Я спросил - а это для чего-то нужно...? Имея ввиду - кому-то нужно в ini-файле хранить в одной секции несколько параметров с одинаковыми именами...?
Не, никому это не нужно.))  Даже нет смысла в таком хранении.)
Title: Re: работа с текстом
Post by: Hito on June 20, 2018, 02:25:55 AM
В общем я по пьяни даже не понял, что ты не автор темы и что автор-то про нее уже забыл по ходу, а мы тут с тобой воздух пинаем  ;D Прости  :)