1 (изменено: sanniauto, 2017-10-18 03:04:02)

Тема: AHK: Чтение файла

Всем здравствуйте, я еще на нашел ничего подобного, поэтому решил создать тему.

Например, у нас есть текстовый документ (.txt), в нём содержатся 4 строки, например такие:

-------------------------------------------------------------------------------------------------------------------
[07:10:47] При регистрации Вы указали Email, но не подтвердили его

[07:10:47] Вы можете сделать это прямо сейчас, через /menu > Настройки безопасности

[07:10:47] Без подтверждения Email восстановить доступ к аккаунту будет невозможно

[07:10:49] Автобус по маршруту ЖД Вокзал ЛС — Завод  отправляется через 10 секунд

-------------------------------------------------------------------------------------------------------------------

Итак, мне нужно, чтобы скрипт обрабатывал этот текстовый документ и написал, например такое в Msgbox:

-------------------------------------------------------------------------------------------------------------------
[07:10:47] При регистрации Вы указали Email, но не подтвердили его[Время и дата]

[07:10:47] Вы можете сделать это прямо сейчас, через /menu > Настройки безопасности[Время и дата]

[07:10:47] Без подтверждения Email восстановить доступ к аккаунту будет невозможно[Время и дата]

[07:10:49] Автобус по маршруту ЖД Вокзал ЛС — Завод  отправляется через 10 секунд[Время и дата]

-------------------------------------------------------------------------------------------------------------------

Я попробовал сделать кое-что сам и вот что у меня получилось:




FileRead, out, %File%
loop, parse, out, `n, `r
{
	Total:=a_index
	LoopField := A_LoopField
}

F1::
Msgbox, %LoopField%[%A_Hour%:%A_Min%:%A_Sec% | %A_DD%.%A_MM%.%A_YYYY%]
return

; LoopField - выводящее значение строк в Msgbox

Тут он выводит в Msgbox только последнюю строку в файле, а мне нужно, чтобы он выводил именно все строки.

Буду очень признателен, если поможете, так как я правда обыскал весь интернет и ничего не нашёл. Думаю это также будет многим полезно, кто делает скрипты для сампа

2

Re: AHK: Чтение файла

Привет.
На каждой итерации цикла, "LoopField" получает новое значение, а Вам нужно присоединение новой строки. Этим занимается оператор ".=". Подробнее об этом и прочих подробностях почитайте тут.


FileRead, out, %File%
loop, parse, out, `n, `r
{
	Total := a_index
	LoopField .= A_LoopField "[" A_Hour ":" A_Min ":" A_Sec " | " A_DD "." A_MM "." A_YYYY "]`n"
}

F1::
	Msgbox,% LoopField
return

Циклом можно так же читать и разбирать сразу файл. Подробнее тут.

3

Re: AHK: Чтение файла

Спасибо большое! Как раз то, что нужно!

4

Re: AHK: Чтение файла

Здравствуйте еще раз. У меня тут возникли некоторые сложности, то есть вот код:

FileRead, out, xTexting.txt
loop, parse, out, `n, `r
{
	Total := a_index
	LoopField .= Total ". " A_LoopField "`n"
}


F1::
InputBox, var, Введите номер строки, которую хотите скопировать.
return
}

Вообщем мне нужно, чтобы когда пользователь вводил номер строки в inputBox, ему копировалось в буфер обмена содержание этой строки(1,2,3,...) в буфер обмена, например:
В (.txt) есть 3 строки:

Красный
Зеленый
Синий

Далее когда пользователь, например в InputBox вводит номер строки - 1, ему копируется в буфер обмена: Красный (Первая строка), и вот по такому принципу должно работать. Заранее спасибо

5

Re: AHK: Чтение файла

sanniauto, держи.

F1::
Box:
InputBox, var, Введите номер строки`, которую хотите скопировать.
if var is not Number
	goto, Box
Clipboard := OutLineForFile(var, "xTexting.txt")
return

OutLineForFile(line, patch)
{
	loop, Read, % patch
	{
		if (A_Index == line)
		{
			Return A_LoopReadLine
		}
	}
}
Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

6

Re: AHK: Чтение файла

Спасибо огромное! Даже не знаю как вас отблагодарить!

7

Re: AHK: Чтение файла

Плюс нажимайте и этого достаточно.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.