Бред это. Если в Edit1 есть символ точки, то переменной key присваивается пустая строка (следовательно, key это строковая переменная), а затем последний символ Edit1 заменяется на эту переменную key. Итого будем иметь как минимум несовпадение типов.
if pos('.', edit1) > 0 // Если в строке edit1* позиция точки больше нуля,
// то есть если эта точка в строке существует,
then begin // тогда делаем несколько действий
key:='' // В переменную key пишем пустую строку**
edit1.text[length(edit1.text)] := key
// В тексте поля edit1 меняем последний символ на key
end;
* Полагаю, это не сработает, так как вместо строки в функцию pos подается само поле.
** Здесь в конце нужна точка с запятой - разделитель двух операторов.
Кроме того, если переменная key имеет тип char, то пустую строку в нее не запихнешь.
А если string, то в edit1.text[length(edit1.text)] ты строку не положишь, только чар.