Код:
asm
push s;
end;
asm
pop s;
end;
Не смог стерпеть такой жути, как push в процедуре...

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