Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Помогите с подсчётом сообщений

Ответить
Настройки темы
Помогите с подсчётом сообщений

Старожил


Сообщения: 192
Благодарности: 1


Конфигурация

Профиль | Отправить PM | Цитировать


Допустим имеется текстовый файл:

HTML код: Выделить весь код
1 сообщение 5 сообщений 11 сообщений 4 сообщения ...

Как посчитать сумарное количество сообщений? В файле, конечно, имеется и другаю дребедень

Отправлено: 21:01, 03-06-2009

 

Аватара для SyDr

Старожил


Сообщения: 215
Благодарности: 62

Профиль | Отправить PM | Цитировать


Можно, к примеру, так:

Код: Выделить весь код
#include <File.au3>
Global $F[1]
Global $FilePath = "List.txt"
Global $Sum = 0
_FileReadToArray($FilePath, $F)

For $I = 1 To $F[0]
    If NOt(IsInt($F[$I])) Then $Sum += StringRegExpReplace($F[$I], '(\d+)\sсообщени', "$0")
Next

MsgBox(4096, "Готово", "Общее чиcло сообщений:" & @CRLF & $Sum)

-------

"Что мы думаем, знаем или во что верим в конце концов не так уж и важно.
Важно лишь то, что мы делаем."
Джон Раскин

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:00, 03-06-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Или так (вроде надёжнее):

Код: Выделить весь код
Global $sFilePath = "List.txt"
Global $iCount = 0

Global $aFRead = StringSplit(FileRead($sFilePath), @LF)

For $i = 1 To $aFRead[0]
    If $aFRead[$i] == "" Then ContinueLoop

    $iC = StringRegExpReplace($aFRead[$i], '(?i)\A(\d+)\sсообщен', '\1')
    If @extended > 0 Then $iCount += Int($iC)
Next

MsgBox(4096, "Готово", "Общее чиcло сообщений:" & @CRLF & $iCount)

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:19, 03-06-2009 | #3


Старожил


Сообщения: 192
Благодарности: 1

Профиль | Отправить PM | Цитировать


Sylver Dragon, что такое "$0"?
Creat0R, зачем нужна эта строчка "If $aFRead[$i] == "" Then ContinueLoop"? Нельзя её опустить?

Отправлено: 08:12, 04-06-2009 | #4


Аватара для SyDr

Старожил


Сообщения: 215
Благодарности: 62

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
Или так (вроде надёжнее): »
Надёжнее, надёжнее. У меня стоит дополнительная проверка. Чтобы строки, являющиеся полностью чсилами не ловил. Плюс, у меня будет ловить вещи типа: "А здесь у нас 1235 сообщений"
К тому же, проверил свой вариант. Что-то вообще нормально не работает
Цитата Twix1124:
1)Sylver Dragon, что такое "$0"?
2)Creat0R, зачем нужна эта строчка "If $aFRead[$i] == "" Then ContinueLoop"? Нельзя её опустить? »
1. Это символ обозначет вернуть ранее найденную группу (в таких вот скобках). \d означает цифру. + означет, что она должна встретиться не менее одного раза.
2. Если строка пустая - продолжится выполнение цикла. То есть можно было написать If If $aFRead[$i] <> "" Then ... EndIf

-------

"Что мы думаем, знаем или во что верим в конце концов не так уж и важно.
Важно лишь то, что мы делаем."
Джон Раскин


Отправлено: 08:35, 04-06-2009 | #5


Старожил


Сообщения: 192
Благодарности: 1

Профиль | Отправить PM | Цитировать


Sylver Dragon, брр Я только про $0 спросил Про regexp'ы я знаю
2. Так почему нельзя опустить "If $aFRead[$i] == "" Then ContinueLoop"???

Отправлено: 13:43, 04-06-2009 | #6


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Twix1124:
почему нельзя опустить "If $aFRead[$i] == "" Then ContinueLoop"? »
Можно опустить, но тогда будут делаться лишние вызовы StringRegExpReplace(). Эта проверка там для обхода символа возврата каретки (@CR), так как при делении содержимого файла я использовал @LF а не @CRLF, но правильнее делать так:

Код: Выделить весь код
Global $aFRead = StringSplit(StringStripWS(StringStripCR(FileRead($sFilePath)), 3), @LF)

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 14:12, 04-06-2009 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Помогите с подсчётом сообщений

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Помогите разобраться с терминами (входящие соединения блока серверных сообщений). __sa__nya Microsoft Windows NT/2000/2003 3 06-09-2008 13:07
Удаление сообщений Seddos О сайте и форуме 17 09-06-2008 20:58
Настройка сообщений nickAd Microsoft Windows NT/2000/2003 9 14-05-2007 04:59
Помогите с службой сообщений в WinXP Pro SP2 Andruchban Microsoft Windows 2000/XP 7 10-03-2005 08:59




 
Переход