IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Delphi. Помогите плиз нужно написать простейший переводчик! (https://www.imho.ws/showthread.php?t=28147)

diablist 28.04.2003 22:41

Delphi. Помогите плиз нужно написать простейший переводчик!
 
Реализация очень простая. Загружаю в memo или richedit текстовый файл,
и по зараннее заготовленной базе или текстового файла с словами, проверяю если слово в базе есть, то заменить в моем загруженном файле. Вот и все никаких наворото ничего только основу расскажите :smile: или дайте ссылку!!

diablist 06.05.2003 15:26

Никто не отвечает на мои мольбы :(
Ну хоть подскажите как зделать массовый search-replace в RichEdit'е?

sasa001 07.05.2003 16:35

diablist
Хе.... )))) Прикольно написал )))
А вот я бы не парился и БД слепил... по-моему, так красивше будет...

diablist 08.05.2003 15:59

sasa001
Дык подскажы как :) Яж для того и помощи спрашую.

donatas 10.05.2003 20:35

хэлпы рулят :)
Код:

procedure TForm1.Button1Click(Sender: TObject);

begin
  FindDialog1.Position := Point(RichEdit1.Left + RichEdit1.Width, RichEdit1.Top);
  FindDialog1.Execute;
end;

procedure TForm1.FindDialog1Find(Sender: TObject);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
begin
  with RichEdit1 do
  begin
    { begin the search after the current selection if there is one }
    { otherwise, begin at the start of the text }
    if SelLength <> 0 then

      StartPos := SelStart + SelLength;
    else

      StartPos := 0;

    { ToEnd is the length from StartPos to the end of the text in the rich edit control }

    ToEnd := Length(Text) - StartPos;

    FoundAt := FindText(FindDialog1.FindText, StartPos, ToEnd, [stMatchCase]);
    if FoundAt <> -1 then
    begin
      SetFocus;
      SelStart := FoundAt;
      SelLength := Length(FindDialog1.FindText);
    end;
  end;
end;


diablist 13.05.2003 18:10

donatas
Спасибо, но это не совсем то. Мне не нужно чтобы вылазил диалог. Нужно чтобы молча заменил указанные слова в документе

donatas 13.05.2003 19:17

var
strfrom,strto:string
str:string;
i:integer;
--------------
for i:=0 to memo1.lines.count-1 do
begin
str:=memo1.lines[i];
if pos(strfrom,str)>0 then
memo1.lines[i]:=
copy(str,0,pos(strfrom,str)-1)+strto+copy(str,pos(strfrom,str)+length(strfrom)),length(str)-(pos(strfrom,str)+length(strfrom)));
end;

вот,писал прямо тут,значит мог в количестве скобок ошибиться =\ но в целом должно работать :)
strfro - что ищем
strto - на что заменяем....
я думаю в цикле сможешь запускать,и подставлять from/to :)

diablist 14.05.2003 03:54

ПАсибо!!!
Бум копатЦА :)


Часовой пояс GMT +4, время: 06:55.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.