|
Вопрос # 526/ вопрос решён / |
|
Здравствуйте, уважаемые эксперты! У меня такой вопрос: как реализовать "реакцию" программы на вводимый текст? к примеру есть список слов(команд/вопросов) и соответвующий ему список ответов. как сделать так, чтобы при вводе в TEdit слова из списка вопросов, программа выводила в лейбл или TMemo ответ на соответвующий вопрос?*
Я так подозреваю, зделать можно с помощью case. а как именно не предтавляю, спасибо заранее.
 |
Вопрос задал: Phoenix (статус: Посетитель)
Вопрос отправлен: 24 апреля 2007, 21:58
Состояние вопроса: решён, ответов: 2.
|
Ответ #1. Отвечает эксперт: Вадим К
На делфи со строками case не работает. Но выход есть. Можно например подвязать к номеру строки. Например. Вы в edit вводите слово. Найти его индекс в мемо можно с помощью Memo1.Lines.IndexOf('слово'). Если слово не найдено - возвратиться -1. Хотя можно и проще сделать - завести масив записей виде
type Taskanser=record
ask:string;
answer:string;
end;
var questions:array of Taskanswer;
Но case здесь никаким боком. А вот в C# там можно делать Case по строкам (он правда там switch назывется).
Но если хочеться что то в виде case, тогда поможет такая конструкция
if s='test1' then begin
//test1
end else
if s='test2' then begin
//test2
end else
if s='test3' then begin
//test3
end else
//если ничего не нашлось
И на последок. Строки часто надо сравнивать без учёта регистра. Для этого есть чудная функция function SameText(str1,str2:string):boolean;
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 25 апреля 2007, 00:38
Оценка за ответ: 5
Комментарий к оценке: спасибо большое, пригодилось
|
Ответ #2. Отвечает эксперт: min@y™
Предлагаю использовать TStringList, а точнее, его свойства Names и Values. Изначально один раз заполнить список строками типа "Текст_вопроса=Текст ответа". А потом, при вводе вопроса, юзать метод IndexOfName(Текст_вопроса). Пишу пример на коленке:
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 25 апреля 2007, 08:32
Оценка за ответ: 5
Комментарий к оценке: отличная идея, но вопрос ниже
|
Мини-форум вопроса
Всего сообщений: 3; последнее сообщение — 26 апреля 2007, 16:01; участников в обсуждении: 2.
|
Phoenix (статус: Посетитель), 25 апреля 2007, 15:03 [#1]:
а как, к примеру тогда можно связать ValueListEditor с TStringList?
|
|
min@y™ (статус: Доктор наук), 26 апреля 2007, 08:09 [#2]:
ValueListEditor я никогда не использовал (правда, знаю, что это такое), так что извини. Включи мозг, читай хэлп, смотри примеры.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Phoenix (статус: Посетитель), 26 апреля 2007, 16:01 [#3]:
спасибо! разобрался во всем!
|
31 января 2011, 19:26: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|