Автор Тема: Помогите с проверкой текста и добавление даты  (Прочитано 461 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Serega1383 [?]

  • Новичок
  • *
  • Сообщений: 24
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Как написать скрипт, такого плана. Есть текст такого вида.
01.01.2011
Класс. (постоянный текст во всех датах)
Рандомный текст.(текст напечатан вручную)

02.01.2011
Класс. (постоянный текст во всех датах)
Рандомный текст.(текст напечатан вручную)

И так далее

07.01.2011
Класс. (постоянный текст во всех датах)
Рандомный текст(может быть с датой 05.01.2011).

Нужно чтобы скрипт проверял дату, потом наличие текста и добавлял следующую дату. А самую первую удалил вместе с текстом, если она старше 6 дней текущей даты. Проблема, что в тексте тоже даты могут быть.

Чтобы получилось вот так.
Старше нынешней даты на 6 дней все удалить.
06.01.2011
Класс. (постоянный текст во всех датах)
Рандомный текст.(текст напечатан вручную)

07.01.2011
Класс. (постоянный текст во всех датах)
Рандомный текст.(текст напечатан вручную)

И тут скрипт добавил
08.01.2011 (сегодняшняя дата)
Класс. (постоянный текст во всех датах)

Русское сообщество AutoIt

Помогите с проверкой текста и добавление даты
« Отправлен: Апрель 13, 2018, 09:36:00 »

Оффлайн gunter123 [?]

  • Осваивающий
  • **
  • Сообщений: 78
  • Репутация: 31
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Назовите файл Список.txt и закиньте скрипт в папку с файлом                                                                   
Код: AutoIt [Выделить]
#include <Array.au3>
#include <File.au3>
#include <Date.au3>

$aList = FileReadToArray(@ScriptDir & '/Список.txt')
For $i = UBound($aList) -1 To 0 Step -1
   If _IsDate($aList[$i]) Then
      If _DateDiff('d', StringRight($aList[$i], 4) & '/' & StringMid($aList[$i], 4, 2) & '/' & StringLeft($aList[$i], 2) & ' 00:00:00', _NowCalc()) > 6 Then
         Do
            _ArrayDelete($aList, $i)
         Until $i = UBound($aList) OR _IsDate($aList[$i]) OR UBound($aList) = 0
      EndIf
   EndIf
Next

_ArrayAdd($aList, "")
_ArrayAdd($aList, @MDAY & '.' & @MON & '.' & @YEAR)
_ArrayAdd($aList, "Класс. ")
_FileWriteFromArray(@ScriptDir & '/Список.txt', $aList)

Func _IsDate($sDate)
   Return ((StringLen($sDate) = 10) AND (StringRegExp($sDate, "(\d{2}\.\d{2}\.\d{4})") = 1))
EndFunc

« Последнее редактирование: Апрель 13, 2018, 15:38:43 от gunter123 »
Is it future or is it past?

Оффлайн Serega1383 [?]

  • Новичок
  • *
  • Сообщений: 24

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Выдаёт ошибку "If" statements must have a "Then"  keywords. :
If _DateDiff ('d',

Оффлайн gunter123 [?]

  • Осваивающий
  • **
  • Сообщений: 78
  • Репутация: 31
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Похоже, вы скопировали не весь код.

Русское сообщество AutoIt

Re: Помогите с проверкой текста и добавление даты
« Ответ #3 Отправлен: Апрель 16, 2018, 15:27:24 »

Оффлайн Serega1383 [?]

  • Новичок
  • *
  • Сообщений: 24

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
С этой разобрался теперь выдает в самом начале. Unknown function name. :
$aList = FileReadToArray(@ScriptDir & '/123.txt')
$aList = ^ERROR

Оффлайн gunter123 [?]

  • Осваивающий
  • **
  • Сообщений: 78
  • Репутация: 31
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Бывает такая проблема при копировании кода с форума, попробуйте вручную напечатать эту строчку и следующие где будет такая же ошибка

Оффлайн Serega1383 [?]

  • Новичок
  • *
  • Сообщений: 24

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Все вручную печатал. Уже переписал не помогает

Оффлайн hedji [?]

  • Осваивающий
  • **
  • Сообщений: 233
  • Репутация: 33
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
С этой разобрался теперь выдает в самом начале. Unknown function name. :
$aList = FileReadToArray(@ScriptDir & '/123.txt')
$aList = ^ERROR

В начале кода указаны инклюды? Файлы Array.au3, File.au3, Date.au3 есть в папке C:\Program Files (x86)\AutoIt3\Include ?

Код: AutoIt [Выделить]
#include <Array.au3>
#include <File.au3>
#include <Date.au3>
 


Функция пишется с нижнего подчеркивания:
Код: AutoIt [Выделить]

Русское сообщество AutoIt

Re: Помогите с проверкой текста и добавление даты
« Ответ #7 Отправлен: Апрель 16, 2018, 17:40:58 »

Оффлайн gunter123 [?]

  • Осваивающий
  • **
  • Сообщений: 78
  • Репутация: 31
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Говорю же, проблема в том, что Scite не понимает само название функции. Именно такая функция без подчеркивания есть в Autoit, для ее работы не нужны инклюды. Просто надо перенабрать код вручную, например

Оффлайн hedji [?]

  • Осваивающий
  • **
  • Сообщений: 233
  • Репутация: 33
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
А слэш случаем не в другую сторону должен быть? Винда же.
FileReadToArray(@ScriptDir & '/123.txt') vs FileReadToArray(@ScriptDir & '\123.txt')

Оффлайн Serega1383 [?]

  • Новичок
  • *
  • Сообщений: 24

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Не помогает ни один из советов

Онлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 334
  • Репутация: 79
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Serega1383, какую версию AutoIt вы используете?

Оффлайн Serega1383 [?]

  • Новичок
  • *
  • Сообщений: 24

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
3.3.6.1. Новее поставить не смогу.

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1349
  • Репутация: 197
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
OffTopic
Вроде 3.3.6.1
Функция "FileReadToArray()" Появилась в v3.3.10.1


Добавлено: Апрель 16, 2018, 19:15:03
... Новее поставить не смогу.
Значит замените ее (функцию) на "_FileReadToArray()".
Код: AutoIt [Выделить]
; $aList = FileReadToArray(@ScriptDir & '/Список.txt')
Local $aList
_FileReadToArray(@ScriptDir & '/Список.txt', $aList)
 

« Последнее редактирование: Апрель 16, 2018, 19:20:26 от Alofa »

Оффлайн Serega1383 [?]

  • Новичок
  • *
  • Сообщений: 24

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Заработало. Но немножко делает не то, что надо.

Не удаляет дату с текстом старше 5 дней.

И в начале файла вписывает какие-то цифры рандомно.
Получается вот так.

21
04.04.2018
Класс.

А если много раз запустить, то вначале файла добавляет цифры
58
54
50
46
42
И ещё помогите реализовать.
Если к примеру надо добавить в несколько строк.
Пример.

Группа а. (название может быть любое.)
04.04.2018

Група б. (название может быть любое.)
04.04.2018
« Последнее редактирование: Апрель 16, 2018, 21:22:32 от Serega1383 »

Русское сообщество AutoIt

Re: Помогите с проверкой текста и добавление даты
« Ответ #14 Отправлен: Апрель 16, 2018, 21:07:57 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
4 Ответов
2728 Просмотров
Последний ответ Март 10, 2011, 16:28:33
от madmasles
6 Ответов
3496 Просмотров
Последний ответ Декабрь 05, 2011, 05:45:39
от AZJIO
1 Ответов
2789 Просмотров
Последний ответ Февраль 02, 2012, 09:55:21
от madmasles
5 Ответов
2167 Просмотров
Последний ответ Июнь 10, 2014, 17:03:53
от Talany
8 Ответов
1354 Просмотров
Последний ответ Октябрь 20, 2014, 13:59:37
от Nefakt
0 Ответов
1244 Просмотров
Последний ответ Февраль 16, 2015, 17:30:38
от itskun
3 Ответов
2069 Просмотров
Последний ответ Декабрь 22, 2015, 22:12:27
от ra4o
18 Ответов
6089 Просмотров
Последний ответ Февраль 08, 2016, 21:33:10
от avtoIT
0 Ответов
779 Просмотров
Последний ответ Август 22, 2016, 19:48:31
от endpoints
7 Ответов
1281 Просмотров
Последний ответ Февраль 05, 2017, 12:08:34
от axsmak