Что нового

Поочередный выбор строк из текстового файла

A

at

Гость
Версия AutoIt: 3.3.12

Здравствуйте уважаемые форумчане!
Код:
#include<IE.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Global $v_Path = @ScriptDir & '\beenum.txt'

$s_Url = 'https://oplata.beeline.ru/mobile/'
$o_IE = _IECreate($s_Url)
$s_CardHolder = 'CARD HOLDER'

$o_PaymentsForm = _IEGetObjById($o_IE, 'payment-form')
$o_TelPrefix = _IEFormElementGetObjByName($o_PaymentsForm, 'Payments_0__CtnPrefix')
$o_TelNumber = _IEFormElementGetObjByName($o_PaymentsForm, 'Payments_0__Ctn')
$o_Payments = _IEFormElementGetObjByName($o_PaymentsForm, 'Payments_0__Sum')
$o_CardNumber = _IEFormElementGetObjByName($o_PaymentsForm, 'CardNumber')
$o_CardMonth = _IEFormElementGetObjByName($o_PaymentsForm, 'CardMonth')
$o_CardYear = _IEFormElementGetObjByName($o_PaymentsForm, 'CardYear')
$o_CardHolder = _IEFormElementGetObjByName($o_PaymentsForm, 'CardHolder')
$o_CardCode = _IEFormElementGetObjByName($o_PaymentsForm, 'CardCode')

$o_Form = GUICreate("Beeline avtopay", 305, 84, 192, 114)
$o_Button = GUICtrlCreateButton("Пополнить счет", 8, 40, 283, 33)
$o_Inpat_TelPrefix = GUICtrlCreateInput("", 64, 8, 42, 21)
$o_Inpat_TelNumber = GUICtrlCreateInput("", 108, 8, 96, 21)
$o_Inpat_Payments = GUICtrlCreateInput("", 248, 8, 41, 21)
$s_Label1 = GUICtrlCreateLabel("Телефон:", 8, 8, 49, 17)
$s_Label2 = GUICtrlCreateLabel("Сумма:", 208, 8, 41, 17)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $o_Button
			_Forms ()
    EndSwitch
WEnd

Func _Forms ()

$v_FileRead_beenum = FileRead($v_Path) ;читаем beenum.txt --> 5434481002460217;08;2015;191;

$s_TelPrefix = Number(GUICtrlRead($o_Inpat_TelPrefix))
_IEFormElementSetValue($o_TelPrefix, $s_TelPrefix)
$s_TelNumber = Number(GUICtrlRead($o_Inpat_TelNumber))
_IEFormElementSetValue($o_TelNumber, $s_TelNumber)
$s_Payments = Number(GUICtrlRead($o_Inpat_Payments))
_IEFormElementSetValue($o_Payments, $s_Payments)

_IEFormElementSetValue($o_CardHolder, $s_CardHolder)
_IEFormElementSetValue($o_CardNumber, StringLeft($v_FileRead_beenum, 16))
_IEFormElementSetValue($o_CardMonth, StringMid($v_FileRead_beenum, 18, 2))
_IEFormElementSetValue($o_CardYear, StringMid($v_FileRead_beenum, 23, 2))
_IEFormElementSetValue($o_CardCode, StringMid($v_FileRead_beenum, 26, 3))

EndFunc

Описание:
При нажатии на кнопку «Пополнить счет», скрипт выбирает из текстового файла первую строку и подставляет ее значения в соответствующие поля в html форме. Прошу показать как сделать, чтобы при повторном нажатии на кнопку, скрипт выбирал следующую строку из текстовика для подстановки новых значений и т.д. по кругу.
 

Вложения

  • beenum.txt
    90 байт · Просмотры: 5

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
использовать
FileReadLine
и использовать счетчик индексов строки.
Код:
Global $ind = 1;это вначале кода
Func _Forms ();это в функции
$v_FileRead_beenum = FileReadLine($v_Path,$ind)
if @error = -1 Or @error = 1 Then Return SetError(1,0,0)
$ind += 1
;тело функции
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Если строки надо читать подряд и все, то я бы сделал примерно так.
Код:
Global $sStr

For $i = 1 To 3
	Do
		If $sStr Then ConsoleWrite($sStr & @LF)
		$sStr = _ReadLineMyFile()
	Until @error
	ConsoleWrite('---' & @LF)
Next

Func _ReadLineMyFile()
	Local Static $h__File
	Local Const $s_File = @ScriptDir & '\beenum.txt'
	Local $s_RetStr

	If Not $h__File Then
		$h__File = FileOpen($s_File)
		If $h__File = -1 Then
			$h__File = 0
			Return SetError(-1, 0, '')
		EndIf
	EndIf
	$s_RetStr = FileReadLine($h__File)
	If @error Then
		FileClose($h__File)
		$h__File = 0
		Return SetError(1, 0, '')
	EndIf
	Return $s_RetStr
EndFunc   ;==>_ReadLineMyFile
 
Верх