1 (изменено: avens, 2015-01-07 19:13:46)

Тема: AHK: Добавление текста из файла в переменную при компиляции скрипта

Как можно решить такую задачу с текстом и переменными:
Есть отдельный от скрипта текстовый файл, размером до 1 Мб.
Необходимо добавить его содержимое в переменную компилируемого скрипта, так что бы он был внутри скомпилированного скрипта, и не извлекался как с командой FileInstall.

Вариант типа:

Variable =
(
содержимое текстового файла
)

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

2

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

avens пишет:

выскакивают различные ошибки на содержимое текста

А что за ошибки? У меня так работает при сохранении скрипта в Unicode:

Variable =
(
í·¯©EęŏŒźŲΖΑΣǽǾǼмЎΰΙΘҢҜҖҐסבש٠ُ٭ځٲڲ۞۝۩۵ớứ–‗₪₫№⅞∙∩├▓▌╪♫אָכֿﮙﺆﺨﻓ 
í·¯©EęŏŒźŲΖΑΣǽǾǼмЎΰΙΘҢҜҖҐסבש٠ُ٭ځٲڲ۞۝۩۵ớứ–‗₪₫№⅞∙∩├▓▌╪♫אָכֿﮙﺆﺨﻓ 
í·¯©EęŏŒźŲΖΑΣǽǾǼмЎΰΙΘҢҜҖҐסבש٠ُ٭ځٲڲ۞۝۩۵ớứ–‗₪₫№⅞∙∩├▓▌╪♫אָכֿﮙﺆﺨﻓ 
)

GUI, Add, Text,  , %Variable%
GUI, Show

И после компиляции всё нормально отображается.

3

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

avens, у вас всё точки из поста пропали, что за глюк?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

4

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

teadrinker пишет:

avens, у вас всё точки из поста пропали, что за глюк?

Извиняюсь, исправил

А что за ошибки?

Вот такая ошибка:

Error at line 13.

Line Text: текст
Error: Continuation section too long.

The program will exit.

Но это все равно не вариант так как очень неудобно постоянно вставлять в скрипт огромное количество текста из обновляемого текстового файла.

5

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

А что значит "постоянно вставлять в скрипт"? Вы будете его компилировать по двадцать раз на дню?

6 (изменено: avens, 2015-01-07 19:40:00)

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

ypppu пишет:

А что значит "постоянно вставлять в скрипт"? Вы будете его компилировать по двадцать раз на дню?

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

7

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

Делаем скрипт компилятор. Считываем текст файла, создаём переменную разбивая её на более короткие отрезки избегая ошибки "Continuation section too long" подробнее здесь функция "DataToVar". При этом добавив опции для избегания запрещённых символов, пример:

var =
( ` %
;%"`()
)

MsgBox % var

Считываем текст скрипта, где до и после переменной, имеются уникальные строки:

 ; начало переменной
переменная
 ; конец переменной


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

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

8

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

Разделите текст на несколько переменных, затем объедините их.


text1=
(
какойто текст
бла бла бла
столько сколько влезет в "Continuation section"

)
text2=
(
продолжение текста
если и сюда не влезет то в text3
)
text:= text1 . text2
msgbox,%text%
Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

9

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

Я уже писал по поводу:

Var =
(

)

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

10

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

Ну если запуск кода по любому из доступных условий это уже неудобно, то расскажите как в наши дни это делается удобно? Или вы имели ввиду удобную компиляцию силой мысли?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11 (изменено: avens, 2015-01-07 22:25:58)

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

С вариантом:

Var =
(

)

надо при каждом обновлении содержимого текста и компиляции скрипта вставлять в скрипт текст.. Или я не так понял?

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

Или вы имели ввиду удобную компиляцию силой мысли?

Было бы отлично, но это из другой темы программирования

12

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

надо при каждом обновлении содержимого текста и компиляции скрипта вставлять в скрипт текст

Что?

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

Пост 7 именно про это.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

13

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

В общем в документации, как и сказали Alectric и serzh82saratov, предлагается разбивать текст на части, не превышающие 16383 символов. Это, грубо говоря, 32 кБ. Соответственно, текст в 1 МБ придётся побить на 32 переменные с последующим склеиванием.

14

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

DataToVar под ваши цели:


text =
( ` %
текст считанного файла
;%"`()
)  
MsgBox % DataToVar(text, "MyVar")

DataToVar(Data, Name) {
    Sub := 1, RowMax := 16000
    Loop % Ceil(StrLen(Data) / RowMax)
    { 
        Str .= Name " = %" Name "%`n( `` %`n" SubStr(Data, Sub, RowMax) "`n)`n"
        Sub += RowMax 
    }
    Return Str
}

Но я бы посоветовал тс всё таки простой путь: FileInstall в укромное место - прочитать файл - сразу удалить файл.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

15

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

Кстати про использование FileInstall. ResHacker видит прикреплённый FileInstall'ом ресурс. А на форуме где-то был пример использования ресурса, взятого из скомпилированного скрипта.

16 (изменено: avens, 2015-01-08 14:11:56)

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

serzh82saratov пишет:

DataToVar под ваши цели:


text =
( ` %
текст считанного файла
;%"`()
)  
MsgBox % DataToVar(text, "MyVar")

DataToVar(Data, Name) {
    Sub := 1, RowMax := 16000
    Loop % Ceil(StrLen(Data) / RowMax)
    { 
        Str .= Name " = %" Name "%`n( `` %`n" SubStr(Data, Sub, RowMax) "`n)`n"
        Sub += RowMax 
    }
    Return Str
}

Но я бы посоветовал тс всё таки простой путь: FileInstall в укромное место - прочитать файл - сразу удалить файл.

Я не понимаю как этот код подходит под мой пример?
Сюда надо же каждый раз после обновления и компиляции помещать содержимое текстового файла? Или как это автоматизировать?

text =
( ` %
текст считанного файла
;%"`()
) 

ypppu пишет:

Кстати про использование FileInstall. ResHacker видит прикреплённый FileInstall'ом ресурс.

В моем случае содержимое текстового файла секретные данные, так что FileInstall не катит.

Сформулирую более ясней:
Мне необходимо что то вроде команды FileInstall, что бы при компиляции возможно было добавить текстовый файл в скрипт, а после использовать/добавить его содержимое в переменную. Только без распаковки файла и без возможности вынуть содержимое ResHacker-ром и подобными утилитами.

ypppu пишет:

А на форуме где-то был пример использования ресурса, взятого из скомпилированного скрипта.

Было бы хорошо его попробовать, если конечно для этого не надо будет использовать тот же ResHacker.
Среди этих статей есть тот пример? Нашел только вопрос.

17

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

и без возможности вынуть содержимое ResHacker-ром и подобными утилитами.

Ну тогда это всё бесполезные потуги. Кому надо, тот извлечёт исходник скрипта и прочитает текст.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

18 (изменено: avens, 2015-01-08 14:30:07)

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

serzh82saratov пишет:

и без возможности вынуть содержимое ResHacker-ром и подобными утилитами.

Ну тогда это всё бесполезные потуги. Кому надо, тот извлечёт исходник скрипта и прочитает текст.

Что весь исходник можно достать?
Но есть же команда /NoDecompile или /pass "пароль".

Кстати ResHacker не видит вложенных ресурсов в моей программе на AHK там rar архивы, изображения и другие файлы.

19

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

По этому поводу много тем есть. Я так понял, что при любой шифровке код всё равно в исходном виде находится в памяти процесса.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

20

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

Вообще то да, но на запуск программы также есть уловки и пароль, так что прежде чем программа полностью запустится в оперативную память надо знать пароль.

Или же хранить этот файл в закриптованом файловом контейнере, а все файлы для его расшифровки добавлять  с помощью FileInstall

21

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

Все файлы, добавляемые командой FileInstall, прекрасно просматриваются сторонними программами. Так же и код скрипта. Пароль был только в старой версии AutoHotkey.

Обсуждение здесь: AHK: Компиляция, декомпиляция и защита исходного кода.

22

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

Вообще, если это текст, используемый в скрипте, а не какой-нибудь вирус, зачем его скрывать?

23 (изменено: avens, 2015-01-09 16:38:27)

Re: AHK: Добавление текста из файла в переменную при компиляции скрипта

ypppu пишет:

Все файлы, добавляемые командой FileInstall, прекрасно просматриваются сторонними программами. Так же и код скрипта. Пароль был только в старой версии AutoHotkey.

Я пока что компилирую этот скрипт старой версией AutoHotkey.
Но вижу лучше для описанной в теме задачи хранить текстовый файл в другом месте или в зашифрованном виде.

ypppu пишет:

Вообще, если это текст, используемый в скрипте, а не какой-нибудь вирус, зачем его скрывать?

Ну мало ли зачем. Там пароли например.
Суть вот в чем и для чего: моя програмка на AHK по нажатию клавиши берет адрес ссылки с адресной строки браузера, вынимает домен, далее по имени домена ищет его в текстовом файле, где сохранены домены сайтов и пароли, если находит выводит компактное Gui окошко со всеми результатами по данному домену. Так удобно не приходится каждый раз лазить и искать пароли на вход и прочее для сайтов.. Потому как браузеры использую разные, плюс не все пароли и другие данные они сохраняют, да и не стоит все в них сохранять.

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