Gthtrjlbhjdobr
- перекодировщик
Найденные символы мы будем сохранять в переменную Result, поэтому
для начала присвоим ей пустую строку. Теперь берем цикл for от
первой до последней буквы введенной строки (она хранится в свойстве
Text компоненты Edit1, а функция length возвращает нам длину введенной
в нее строки - для рассмотренного примера она вернет 6, и цикл
будет исполняться от одного до шести). Еще один цикл for - начиная
с первого символа, просматриваем строку EngLet до конца (length(EngLet)
и проверяем оператором if, не совпадают ли та буква, которую мы
сейчас ищем (Form1.Edit1.Text[i]), и та, на которую сейчас указывает
счетчик j внутреннего цикла (а он указывает на EngLet[j]); если
совпадают - то выскакиваем из цикла при помощи оператора break,
кричим во все горло "Rulezz!" и добавляем найденную буковь (RusLet[i])
к строке Result при помощи функции Concat (она берет две строки,
приписывает к концу первой вторую и возвращает полученную строку.
Догадайся, что вернет эта функция, если ее вызвать так: Concat(
"Fu", "ck off!" ) ). Вот и все, а после того, как циклы завершатся,
мы полученную строку вписываем во вторую строку ввода - в свойство
Text компоненты Edit1 на форме Form1, во как.
Кидалово
Догадайся, где я тебя только что кинул!.. Догадался? Нет!
Правильный ответ такой (запусти прогу и проверь): если ввести
"Dj,kf" то прога выдаст "Вобла", а если ввести "Dj,kf b gbdj",
то она ответит снова "Вобла", а "gbdj" (пиво) она зажмет и не
отдаст.
- Почему, нехороший человек, ты меня опять кинул? - вежливо,
не ругаясь, спросишь меня ты.
- А чтобы ты внимательнее относился потом к написанию кода, потому
что, чтобы найти ошибку, нужно гораздо больше времени, чем на
то, чтобы написать здоровенную прогу всего с одной этой ошибкой,
- отвечу тебе я.
Секрет в том, что когда мы во втором цикле ищем в строке EngLet
символ "пробел", мы его там не находим, огорчаемся и добавляем
в переменную Result символ RusLet[length(Englett)+1], а это за
пределами нашей строки, и там лежит какая-то лажа. Поэтому поступим
так - введем специальную переменную Flag - флажок, который мы
будем по умолчанию поднимать, а опускать - если нашли нужный символ
в строке EngLet. Потом если он окажется все еще поднятым после
окончания цикла, мы будем добавлять в Result не из RusLet[i],
а прямо из Form1.Edit1.Text[i] - то есть, в нашем случае, добавлять
пробел там, где надо.
Итак, исправь эту часть процедуры вот так:
for i:=1 to length(Form1.Edit1.Text) do begin