2016-04-20 1 views
1

В анкете, я опустил 3 примечания: memo1, memo2, и memo3.Сравните текст в памятке с другой запиской?

Когда я ввожу вопрос с полным предложением в memo2, ответ, который хранится в memo1, должен быть отображен в memo3.

Например, предположим, что в memo1 я писал:

what is your name?=my name is john 

Когда я типа what is your name? в memo2, my name is john должен появиться в memo3.

Как это сделать?

ответ

3

Memo1 содержит name=value пар. Объект TMemo.Lines - это объект TStrings, а TStrings имеет некоторые полезные свойства для работы с name=value парами. В вашем примере, решение Простейшее будет использовать вопрос в Memo2 в качестве параметра Name из TStrings.Values[] свойства, например:

var 
    question: string; 
    answer: string; 
begin 
    question := Trim(Memo2.Text); 
    answer := Memo1.Lines.Values[question]; 
    Memo3.Text := answer; 
end; 
+0

Спасибо Remy за вашу помощь, я пытался как ваши, например. Но я не мог. Вы можете показать мне свой проект, если вы не возражаете. Как я hv поиск в Google n, я получил тот, который похож на abit, но думаю, что когда я печатаю любую букву на клавиатуре перед тем, как закончить свое предложение ... он отображает answer.so есть ли способ сделать. – meitei

+0

Название: splitting memo line в другие две заметки..By Stifhen. ответ Дэвид Хеффернан ..... Вот код ... var s: string; р: целое число; begin s: = memo1.Text; р: = поз ('=', с); memo2.Text: = copy (s, 1, p-1); memo3.Text: = copy (s, p + 1, maxint); конец; – meitei

+0

@Meitei: Я забыл, что свойство 'TStrings.Text' возвращает строку, которая имеет разрыв строки на конце. Я обновил свой пример для этого. Теперь 'Memo3' отображает' мое имя john', как и ожидалось. –