Есть txt файл, в нём по строкам написан текст.
Пример:
Алёша Попович
Дмитрий Иванов
Костя Дзю
..............
Нужно выгрузить их в скрипт и как пример присвоить слову "Алёша" переменную "#A1", слову "Попович" переменную "A2"
И дополнительно вырезать их из текстового файла.
Очень буду благодарен за помощь!
load_array %arr C:\123.txt
//log %arr [1] // первая строка из файла
//log %arr [2] // вторая
log clear
log mode compact
set $regexp "[^ ]+"
set #n regexp (#pos $a1 %arr[1] $regexp) // поиск в строке любого текста до пробела
if #n = 1
log $a1
end_if
set $regexp "(?<= )[^ ]+"
set #n regexp (#pos $a2 %arr[1] $regexp) // поиск в строке текста после пробела
if #n = 1
log $a2
end_if
delete_array %arr -1 // удалить первую строку из массива
save_array %arr C:\456.txt // сохранить массив в файл, можно в тот же 123.txt
end_script
load_array %arr C:\123.txt
//log %arr [1] // первая строка из файла
//log %arr [2] // вторая
log clear
log mode compact
set $regexp "[^ ]+"
set #n regexp (#pos $a1 %arr[1] $regexp) // поиск в строке любого текста до пробела
if #n = 1
log $a1
end_if
set $regexp "(?<= )[^ ]+"
set #n regexp (#pos $a2 %arr[1] $regexp) // поиск в строке текста после пробела
if #n = 1
log $a2
end_if
delete_array %arr -1 // удалить первую строку из массива
save_array %arr C:\456.txt // сохранить массив в файл, можно в тот же 123.txt
end_script
dir (%result "C:\12345" "*" norecursion) // узнать количество файлов/папок в папке C:\12345
set %z [1] size(%result) + 1 // прибавить 1 к количеству
dircreate (C:\12345\telega%z[1]) // создать папку telega
end_script
dir (%result "C:\12345" "*" norecursion) // узнать количество файлов/папок в папке C:\12345
set %z [1] size(%result) + 1 // прибавить 1 к количеству
dircreate (C:\12345\telega%z[1]) // создать папку telega
end_script
dir (%result C:\12345 "*" norecursion) // узнать количество файлов/папок в папке C:\12345
set %z [1] size(%result) + 1 // прибавить 1 к количеству
dircreate (C:\12345\telega%z[1]) // создать папку telega
wait 500
filecopy (C:\Windows\System32\calc.exe C:\12345\telega%z[1]\calc.exe) // скопировать калькулятор
wait 500
exec C:\12345\telega%z[1]\calc.exe // запустить
end_script
dir (%result C:\12345 "*" norecursion) // узнать количество файлов/папок в папке C:\12345
set %z [1] size(%result) + 1 // прибавить 1 к количеству
dircreate (C:\12345\telega%z[1]) // создать папку telega
wait 500
filecopy (C:\Windows\System32\calc.exe C:\12345\telega%z[1]\calc.exe) // скопировать калькулятор
wait 500
exec C:\12345\telega%z[1]\calc.exe // запустить
end_script
пытаюсь конвертировать данные из таблицы(тхт) в более читабельный вариант...вроде как числа, разбирать строку и конвертировать их выходит...но собрать ее из полученных данных не получается, чо делаю не так
log clear
log mode compact
set %arr [1 10] 1000,550,9200000,1250,55000,999 //для примера получаем такую строку из файла
set delimiter ',' //устанавливаем делиметр что бы смогли получить строку и разбить на подстроки
init_arr %a %arr [1 10] //представляем ее в виде подстрок %a [1 1] %a [1 2] %a [1 3] %a [1 4] и т.д.
set delimiter '' //возвращаем по умолчанию что бы могли работать
//тут нужно обработать все имеющиеся значения подстроки
for #i 1 size(%a)
log число подстроки %a [#i 1]
if %a [#i 1] < 1000 //число меньше 1кг запишем в грамах
//set %r %a [#i 1])
log %a [#i 1]г,
set $z [#i 1] %a [#i 1]г, //записать результат
end_if
if %a [#i 1] > 999 and %a [#i 1] < 1000000 //число от 1кг и до 1т запишем в КГ
set %am math.dbl (%a [#i 1] / 1000) //переводим в килограммы
gosub convert
log %am [1]кг,
set $z [#i 1] %a [1]кг, //записать результат
end_if
if %a [#i 1] > 999999 //число от 1т запишем в Т
set %am math.dbl (%a [#i 1] / 1000000) //переводим в тонны
gosub convert
log %am [1]т,
set $z [#i 1] %am [1]т, //....записать результат
end_if
end_for
log $z [1] //собрать строку и вывести её
end_script
:convert
//log чо сокророщаем %am [1]
set $temp %am [1]
set $c trunc($temp)
set $b frac($temp)
while 1 = 1
set $temp copy($b size($b) 1)
if $temp = 0
set $b Delete($b size($b) 1)
else
break
end_if
end_while
set %am[1] $c
if $b != ""
set %am [1 2] ","
set %am [1 3] $b
end_if
//log получаем %am [1]
return
init_arr %a (1) 1кг 550г 9т
set $z ""
log clear
log mode compact
for #i 1 size(%a[])
log %a[1 #i]
set $z $z %a[1 #i]
end_for
log $z
end_script
init_arr %a (1) 1кг 550г 9т
set $z ""
log clear
log mode compact
for #i 1 size(%a[])
log %a[1 #i]
set $z $z %a[1 #i]
end_for
log $z
end_script
log clear
log mode compact
set %arr [1 10] 1000,550,9200000,1250,55000,999 //для примера получаем такую строку из файла
log %arr [1 10]
set delimiter ',' //устанавливаем делиметр что бы смогли получить строку и разбить на подстроки
init_arr %a %arr [1 10] //представляем ее в виде подстрок %a [1 1] %a [1 2] %a [1 3] %a [1 4] и т.д.
set delimiter '' //возвращаем по умолчанию что бы могли работать
//тут нужно обработать все имеющиеся значения подстроки
set delimiter ''
for #i 1 size(%a)
//log число подстроки %a [#i 1]
if %a [#i 1] < 1000 //число меньше 1кг запишем в грамах
//log %a [#i 1]г,
set $z $z %a [#i 1]г, //записать результат
end_if
if %a [#i 1] > 999 and %a [#i 1] < 1000000 //число от 1кг и до 1т запишем в КГ
set %am math.dbl (%a [#i 1] / 1000) //переводим в килограммы
gosub convert
//log %am [1]кг,
set $z $z %am [1]кг, //записать результат
end_if
if %a [#i 1] > 999999 //число от 1т запишем в Т
set %am math.dbl (%a [#i 1] / 1000000) //переводим в тонны
gosub convert
//log %am [1]т,
set $z $z %am [1]т, //....записать результат
end_if
end_for
log $z //собрать строку и вывести её
end_script
:convert
//log чо сокророщаем %am [1]
set $temp %am [1]
set $c trunc($temp)
set $b frac($temp)
while 1 = 1
set $temp copy($b size($b) 1)
if $temp = 0
set $b Delete($b size($b) 1)
else
break
end_if
end_while
set %am[1] $c
if $b != ""
set %am [1 2] ","
set %am [1 3] $b
end_if
//log получаем %am [1]
return
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)