Что нового

Добавка 1 в файл txt при каждом нажатии клавиши

lixar21

Новичок
Сообщения
70
Репутация
0
Добрый день форумчане.
Помогите решить вопрос.

Есть скрипт реагирующий на нажатие клавиши Q.
Код:
#include <Misc.au3>
$i = 0

While 1

   Select
      Case $i = 0 And _IsPressed("51")
         $i += 1
     MsgBox(64, "", "запуск скрипта")

     EndSelect
WEnd
Но он срабатывает лишь один раз.

Как заставить скрипт срабатывать многократно, и при каждом нажатии клавиши Q - и во время каждого срабатывания - добавлять 1 в файл 1.txt ?
(в результате - чем больше будет нажатий на клавишу Q - тем больше будет число в файле 1.txt )
 

Вложения

  • 1.txt
    0 байт · Просмотры: 2

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Так ?
Код:
#include <Misc.au3>

$i = 0
$File = FileOpen(@ScriptDir & '\1.txt', 2 )
While 1
	If _IsPressed("51") Then
		; Цикл ожидания, пока клавиша не будет отпущена.
		While _IsPressed("51")
			Sleep(20)
		WEnd
		$i += 1
		FileWrite($File, $i&@CRLF)
		ConsoleWrite($i & @CR)
	EndIf
WEnd
 
Автор
L

lixar21

Новичок
Сообщения
70
Репутация
0
ra4o , нет.
У вас - цифры идут в ряд - постепенно увеличивая этот ряд с каждым нажатием клавиши Q.
Я имел ввиду обычное число, которое стоит на одном месте и просто увеличивается.
Например - один щелчок клавиши - и появляется 1.
Второй щелчок клавиши - и место которое занимала единица - занимает двойка, поскольку 1+1=2.
Третий щелчок мыши - на месте двойки появляется тройка, поскольку 2+1=3
И так далее.
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
А так ?
Код:
#include <Misc.au3>

$i = 0
$MyFile=@ScriptDir & '\1.txt'

While 1
	If _IsPressed("51") Then
		; Цикл ожидания, пока клавиша не будет отпущена.
		While _IsPressed("51")
			Sleep(20)
		WEnd
		$i += 1
		$File = FileOpen($MyFile, 2 )
		FileWrite($File, $i)
		FileClose($File)
	EndIf
WEnd
 
Автор
L

lixar21

Новичок
Сообщения
70
Репутация
0
ra4o, а вот сейчас работает идеально.
Большое спасибо.
 

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
23
ra4o сказал(а):
Код:
While 1
	
		$File = FileOpen($MyFile, 2 )
		FileWrite($File, $i)
		FileClose($File)

WEnd

Я могу ошибаться, но так вроде делать не желательно.
Правильнее открыть файл до цикла и закрыть после цикла?
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
OffTopic:
Правильнее открыть файл до цикла и закрыть после цикла?
Нет, в данном случае это не так. Если Вы обратите внимание на мой первоначальный вариант скрипта, то там файл открывался до цикла и хотя в функции
Код:
$File = FileOpen($MyFile, 2 )
указан параметр "2" , то есть удалять содержимое файла перед новой записью, скрипт все данные писал в одну строку не удаляя предыдущие данные. Это происходило потому, что предыдущие данные в файле удаляются именно в момент открытия файла и по-этому в данном случае файл нужно открывать и закрывать именно в цикле.
 
Верх