Непонятно, что именно надо делать (собственно. по алгоритму шифрования). По работе с динамическими массивами:
Код:
var
Textmatr : Array of Array of Char;
key1 : array of Byte;
key2 : array of Byte;
q : Integer;
h : Integer;
...
Write('Введите кол-во строк:'); readln(q);
Write('Введите кол-во столбцов:'); readln(h);
SetLength(Textmatr,q);
For I := Low(Textmatr) To High(Textmatr) Do SetLength(Textmatr[i],h);
SetLength(key1,q);
SetLength(key2,h);
Все, после этого массивы имеют нужный размер. Далее можно с ними работать:
Low() - возвращает нижний индекс массива (в принципе, для дин. массива это 0)
High() - возвращает верхний индекс массива (в принципе, для дин. массива это Lenght()-1)