29. ACL -- задачи и решения. Интернет.

автор: Виктор Кон, Курчатовский институт, URL: http://kohnvict.narod.ru

1. Скачивание файлов из интернета.

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

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

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

В третьей  строке определяется размер этого файла. Так как его имя большое, то вынесено в аргумент. Зная размер, мы можем сразу определить параметры текстовой строки, которая будет записана после чтения файла. Эти параметры записаны в переменных I1 и S1. И тут же выполняется считывание файла.

В четвертой строке сначала в записанной текстовой строке находятся все положения символа с номером 34, это кавычки. Они записываются в целый массив i() начиная с начала. Соответственно число картинок N равно половине числа таких символов. Предполагается, что файл со списком записан правильно. В переменных j и k задаем стартовые значения и возвращаем текущую рабочую папку, в которой записана сама программа.

В пятой строке делается цикл и в нем последовательно определяются параметры текстовой строки с именем конкретного файла картинки, они записываются в переменные a и b. В шестой строке происходит показ картинки и запись ее в файл. Для этого в команде #w используется режим [mo=-1;], а в качестве папки для записи картинок выьрана папка "wci" внутри папки программы. Файлы имеют имена im001.jpg, im002.jpg и так далее.

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

2. Замена картинок разного размера на картинки одинакового размера.

Иногда, например, для показа слайд-шоу по объекту "живые ссылки" необходимо все картинки разного размера привести в одному и тому же размеру. Такую работу тоже очень просто сделать на ACL с использованием графики. Я снова сначала покажу программу, а потом объясню как она работает.

В первой строке задаем начальное значение счетчика цикла и число повторений в переменных k и N. В переменных W и H задаем ширину и высоту всех картинок. В переменных x и y положение центра картинки. И устанавливаем рабочую папку, в которой находятся все картинки.

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

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

3. Манипуляции со списками имен файлов.

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

Здесь в первой строке задаются параметры цикла и имя папки, где записаны картинки. Во второй строке задается имя постоянной ссылки. В третьей строке открывается цикл и считывается одна строка из файла с подписями. После этого печатается составная строка, которая содержит все нужные компоненты в правильном порядке. И затем эта строка записывается в файл. В конце номер строки (счетчик цикла) изменяется и цикл закрывается.

Работа с текстовыми строками -- очень важный компонент любого языка программирования. В ACL все делается командой #pri которая имеет много полезных форматов и способна сформировать  строку любой степени сложности как часть текстового массива юникодов.