Не обновляются дата и время Topic is solved

Помощь в написании скриптов
marusa122
Posts: 135
Joined: 22 Mar 2023, 07:48

Не обновляются дата и время

Post by marusa122 » 20 Oct 2023, 14:00

Здравствуйте. Есть код Autohotkey:

Code: Select all

:*:да::
{
	FormatTime, CurrentDateTime,, dd.MM H:mm
	SetKeyDelay 0 
	Send %CurrentDateTime% выполнено
	Return
}
При вводе в текстовое поле фразы "да" он делает автозамену на "02.01 13:00 выполнено" вместо "01.01 12:00 выполнено" (например).
Нужно поменять его так, чтобы при вводе этой фразы скрипт выделял текущую строку и помимо обновления даты и времени на текущие проверял в выделенном диапазоне последние два символа. И увеличивал их значение на 1. Например, если в строке "01.01 12:00 выполнено 1", то после ввода "да" перед ней строка должна замениться на "02.01 13:00 выполнено 2". Или если в строке "01.01 12:00 выполнено 9", должна произойти автозамена на "02.01 13:00 выполнено 10". Или если в строке "01.01 12:00 выполнено 15", должна произойти автозамена на "02.01 13:00 выполнено 16". И т.д.

Я изменила код, но проблема в том, что он перестал вставлять текущие дату и время. Он начал копировать дату и время из предыдущего текста. А должен вставлять новые (текущие). Как это исправить?

Code: Select all

:*:да::
Send, ^a
Send, ^c
ClipWait
  RegExMatch(clipboard,"\d+$",match)
  match++
  clipboard:=RegExReplace(clipboard,"\d+$",match)
  send ^v
  return

mcl
Posts: 361
Joined: 04 May 2018, 16:35

Re: Не обновляются дата и время  Topic is solved

Post by mcl » 25 Oct 2023, 17:30

marusa122 wrote: Есть код... При вводе в текстовое поле фразы "да" он делает автозамену на "02.01 13:00 выполнено" вместо "01.01 12:00 выполнено" (например).
Да вроде не делает первый код автозамен, просто пишет текущую дату и „выполнено“.
Он начал копировать дату и время из предыдущего текста. А должен вставлять новые (текущие). Как это исправить?
Почему бы не воспользоваться уже имеющимся способом, только откусывать не с конца, а с начала?

Code: Select all

:*:да::
  Clipboard := ""  ; Буфер обмена нужно очистить!
  Send, ^a         ; Иначе ClipWait сработает быстрее,
  Send, ^c         ; чем программа успеет обработать Ctrl+C
  ClipWait         ; и положить новые данные в буфер обмена
  strResult := Clipboard
  
  RegExMatch(strResult, "\d+$", matchEnd)
  matchEnd++
  strResult := RegExReplace(strResult, "\d+$", matchEnd)
  
  FormatTime, CurrentDateTime,, dd.MM H:mm
  strResult := RegExReplace(strResult, "^\d+\.\d+ \d+:\d+", CurrentDateTime)
  
  Clipboard := strResult
  Send ^v
  Sleep 200
  Return

vmech
Posts: 374
Joined: 25 Aug 2019, 13:03

Re: Не обновляются дата и время

Post by vmech » 27 Oct 2023, 10:12

@marusa122
Шаблон ^\d+\.\d+ \d+:\d+ в строке 13 лучше заменить на более универсальный ^\d+\.\d+\s+\d+\:\d+
https://regex101.com/r/gId9uJ/1
Please post your script code inside [code] ... [/code] block. Thank you.

Post Reply

Return to “Помощь”