Вот тебе работающий набросок на FPC, просто добавь построчное чтение из Memo в строку S и измени процедуру Replace_Word так, чтобы она меняла переданное ей слово на соотв. слово из файла-словаря:
procedure replace_word(s: string); begin write('(-', s, '-)'); { <--- замени на вывод во второй Memo } end;
var s: string = 'this ::is a, text'; next_word: string; i: byte;
begin i := 1; next_word := ''; while i <= length(s) do begin if upcase(s[i]) in ['A'..'Z'] then begin next_word := next_word + s[i]; inc(i) end else begin if next_word <> '' then replace_word(next_word); write(s[i]); { <--- замени на вывод во второй Memo } next_word := ''; inc(i); end; end;
if next_word <> '' then replace_word(next_word);
end.
Как видишь, все разделители сохраняются... Кстати, эту программку можно еще оптимизировать ;)