1 (изменено: димитрий2, 2019-01-29 13:30:58)

Тема: AHK: Как вписать и сложить числа из одного txt в другой txt

Здравствуйте.
Подскажите такую вещь:
Как выполнить арифметическую операцию по сложению чисел - но в текстовых файлах ?

У меня есть два файла txt:
В первом написано:
gdh4 :12
gdsy3 :8

Во втором написано:
gdh4 :4
gdsy3 :2

Как скриптом - вытащить числа из первого файла, прибавив их к числам из второго файла.
В итоге - в первом файле должно быть:
gdh4 :0
gdsy3 :0

А во втором файле txt должно быть:
gdh4 :16
gdsy3 :10

(То есть числа из первого файла - арифметически добавятся во второй файл)

Post's attachments

Файлы txt.rar 188 b, 1 downloads since 2019-01-29 

You don't have the permssions to download the attachments of this post.

2

Re: AHK: Как вписать и сложить числа из одного txt в другой txt

Здравствуйте.
Для начала, нужно оформить название темы как положено.

Почитать про:
- FileRadline
- StrReplace
- FileDelete
- FileAppend
- Переменные и выражения [EN], [RU]
Из суммы полученных знаний смастерить приспособу.

3

Re: AHK: Как вписать и сложить числа из одного txt в другой txt

Слушайте, вы привели ссылки - они все на английском.
Вы говорите - почитать.

4

Re: AHK: Как вписать и сложить числа из одного txt в другой txt

димитрий2 пишет:

... они все на английском.

Не правда. одна из них на Русском. Если в шапке этой страницы кликнуть по ссылке "Проект перевода документации AutoHotkey: перечень переведённых статей и статей в работе." - попадёте на страницу с переводом документации. Там и поищите переведённые статьи.

5

Re: AHK: Как вписать и сложить числа из одного txt в другой txt

FileRadline - прочитал строки документа и сообщил мне. Но мне нужны не текст в строках, а только числа, для суммирования.

StrReplace - вообще никакой информации.
Судя по названию - эта команда переносит строку. Но мне нужно не строку перенести, а просуммировать числа в конце строки.

FileDelete - используется для удаления файлов.
Мне никаких файлов удалять не надо.

FileAppend - Написано, что это команда для записи текста в txt.
Но что именно записывать, сумма ведь не получена ?

6 (изменено: KusochekDobra, 2019-01-29 16:31:07)

Re: AHK: Как вписать и сложить числа из одного txt в другой txt

Текстовый файл - не база данных. Он не имеет подобной структуры, в которой данные хранятся в "ячейках". Чтобы изменить содержимое такого файла даже в одном символе, нужно перезаписать весь файл. Для этого Вам понадобится его удалить(FileDelete), а затем создать(FileAppend). Можете так же воспользоваться FileOpen(), чтобы сделать это в одну операцию, но раз Вы не понимаете базовых принципов, то это будет сложнее.

StrReplace, по ссылке выше, это аналог, устаревшего ныне StringReplace, о чём сказано там же. Понадобится Вам, чтобы получать из каждой прочитанной FileRadline строки, число:


fileName := "1.txt"

FileReadLine, line,% fileName,1
MsgBox % StrReplace(line, "gdh4 :", "")
FileReadLine, line,% fileName,2
MsgBox % StrReplace(line, "gdsy3 :", "")

StringReplace:


fileName := "1.txt"
FileReadLine, line,% fileName,1
StringReplace, num, line, gdh4 :
 MsgBox % num
FileReadLine, line,% fileName,2
StringReplace, num, line, gdsy3 :
 MsgBox % num

Понять, как сохранять переменные и манипулировать их содержимым поможет статья "Переменные и выражения", по ссылке выше.

Чтобы из полученных результатов получить два текстовых файла с ожидаемым содержимым, текущие файлы нужно - FileDelete, сформировать строки для новых файлов, об этом рассказано в статье, после чего, эти строки записать в файл - FileAppend.

7

Re: AHK: Как вписать и сложить числа из одного txt в другой txt

Я вам крайне советую использовать ini файл в таких целях. Там есть возможность читать и изменять значения по именам. Почитайте в справке про команду IniRead и IniWrite и все сами поймете.

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

8

Re: AHK: Как вписать и сложить числа из одного txt в другой txt

KusochekDobra, В общем прочитал я этот талмуд, по теме "Переменные и выражения".... и вот что у меня получилось:


fileName := "Первый файл.txt"

FileReadLine, line,% fileName,1
MsgBox % StrReplace(line, "gdh4 :", "")

x1 := StrReplace(line, "gdh4 :", "")


FileReadLine, line,% fileName,2
MsgBox % StrReplace(line, "gdsy3 :", "")

x2 := StrReplace(line, "gdsy3 :", "")


fileName2 := "Второй файл.txt"

FileReadLine, line,% fileName2,1
StringReplace, num, line, gdh4 :
x3 := num

 MsgBox % x1+x3

FileReadLine, line,% fileName2,2
StringReplace, num, line, gdsy3 :
x4 := num

 MsgBox % x2+x4


FileAppend, Another line.`n, C:\1\Второй файл.txt
FileDelete, C:\1\Второй файл.txt

; The following example uses a continuation section to enhance readability and maintainability:
FileAppend,
(
gdh4 :x1+x3
gdsy3 :x2+x4
), C:\1\Второй файл.txt

Но вместо суммирования - получается запись в виде текста:
gdh4 :x1+x3
gdsy3 :x2+x4

Хотя вроде бы по идее x1+x3 и x2+x4  -должны собственно сложиться.

9

Re: AHK: Как вписать и сложить числа из одного txt в другой txt

димитрий2, вы записываете как текст, ничего и не должно было посчитать.

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

10

Re: AHK: Как вписать и сложить числа из одного txt в другой txt

Phoenixxx_Czar, ну я понимаю что записываю как текст - потому что не разбираюсь.

А как записать, чтобы  x1+x3 и x2+x4 складывались ?

(MsgBox % x1+x3  - показывает же операцию сложения. )

11 (изменено: Phoenixxx_Czar, 2019-01-30 10:00:19)

Re: AHK: Как вписать и сложить числа из одного txt в другой txt

FileAppend, % "gdh4 :" x1+x3 "`ngdsy3 :" x2+x4, C:\1\Второй файл.txt
Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

12

Re: AHK: Как вписать и сложить числа из одного txt в другой txt

Phoenixxx_Czar, ясно. Вроде работает нормально.

Подскажите - как вместо пути C:\1\Второй файл.txt   написать просто Второй файл.txt  ?
(Ведь этот файл - лежит все время в одной папке со скриптом.)

13

Re: AHK: Как вписать и сложить числа из одного txt в другой txt

Так и пишите. Если переменная A_ScriptDir не была вами установлена заранее то будет искаться файл в папке скрипта.

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

14

Re: AHK: Как вписать и сложить числа из одного txt в другой txt

belyankin12, все  понял.

Тема решена.
Всем спасибо за ответы.