Здравствуйте.
Т.е. скрипт успешно компилируется, но во время работы не выполняет своих функций? Если так, значит какие-то из условий которые Вы описали в скрипте - не выполняются. После выполнения скрипта посмотрите
журнал сервера, нет ли там сообщений об ошибках в скрипте? Также обратите внимание, что правильный цикл по всем строкам таблицы должен выглядеть так:
for i := 0 to (tblStructure.RowCount - 1) do
т.к. нумерация строк начинается с нуля. То же касается
функции GetCell, в неё тоже нужно передавать индекс строки и столбца отсчитывая с нуля.
Также учитывайте, что условие "if (aCell2 = aCell) then" никогда не выполнится. Ведь в переменную "aCell" Вы сначала записываете ячейку "tblStructure.GetCell(3, i)", а в переменную "aCell2" записываете ячейку "tblIngredients.GetCell(0, j)". Во-первых это разные ячейки (с разными индексами строки/столбца). Во-вторых это ячейки разных таблиц. Поэтому они никак не могут быть равны и условие никогда не выполнится. Если нужно сравнивать содержимое ячеек, то нужно писать так:
if (aCell2.Text = aCell.Text) then
, такое условие пройдёт если текст в ячейках полностью совпадает.