Что нового

Изменение содержимого файла txt при нажатии на кнопки

Grell

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

Как скриптом создать интерфейс с тремя кнопками, с названиями "1-1","2-4","7-5" ( на форме, которая висит поверх всех окон) которые меняют содержимое текстового файла 1.txt, лежащего рядом со скриптом ?
В текстовом документе 1.txt - находится текстовая строка: первая запись.1,вторая запись.0,пятая буква.26,
Разделителями - в текстовом документе являются запятые.
При нажатии на кнопки - в текстовую строку напротив конкретного слова вписывается "+1", и раздается звук tada.wav (который лежит в одной папке со скриптом)

То есть кнопки работают как счетчики, добавляющие по одной единице при каждом нажатии - своему слову.
Кнопка "1-1" добавляет при нажатии на нее 1 - слову "первая запись.1", то есть получится после нажатия : "первая запись.2"
Кнопка "2-4" добавляет при нажатии на нее 1 - слову "вторая запись.0", то есть получится после нажатия : "вторая запись.1"
Кнопка "7-5" добавляет при нажатии на нее 1 - слову "пятая буква.26", то есть получится после нажатия : "пятая буква.27"
 

Вложения

  • 117 КБ Просмотры: 5

gunter123

Продвинутый
Сообщения
157
Репутация
67
Код:
#include "GUIConstants.au3"

$sFileName = @ScriptDir & '/1.txt'

GUICreate('', 300, 200, -1, -1, -1, $WS_EX_TOPMOST)
$hButton1 = GUICtrlCreateButton('1-1', 20, 20, 60, 30)
$hButton2 = GUICtrlCreateButton('2-4', 100, 20, 60, 30)
$hButton3 = GUICtrlCreateButton('7-5', 180, 20, 60, 30)

Func _Write($iNum)
   $aLines = StringSplit(FileRead($sFileName), ',', 2)
   If UBound($aLines) < 3 Then Return MsgBox(4096, 'Ошибка', 'В файле мало запятых')
   $iCount = StringRegExp($aLines[$iNum], '([\d]+)$', 3)[0]
   $aLines[$iNum] = StringRegExpReplace($aLines[$iNum], '([\d]+)$', $iCount + 1)
   $sLine = ''
   For $s In $aLines
      If $s == '' Then ContinueLoop
      $sLine &= $s & ','
   Next
   $hFile = FileOpen($sFileName, 2)
   FileWrite($hFile, $sLine)
   FileClose($hFile)

   SoundPlay(@ScriptDir & '\tada.wav')
EndFunc

GUISetState()

While True
   Switch GUIGetMsg()
      Case $hButton1
         _Write(0)
      Case $hButton2
         _Write(1)
      Case $hButton3
         _Write(2)
      Case $GUI_EVENT_CLOSE
         Exit
   EndSwitch
WEnd
 
Автор
G

Grell

Новичок
Сообщения
127
Репутация
0
Понятно. Спасибо.
 
Верх