|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Англо-русский переводчик
добрый день! помогите с программой, а то сам чет не могу сообразить...
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm1 = class(TForm) Label1: TLabel; RadioButton1: TRadioButton; RadioButton2: TRadioButton; Button1: TButton; Button2: TButton; Memo1: TMemo; StringGrid1: TStringGrid; Memo2: TMemo; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; s1,s2:tstringlist; c:set of char = ['A'..'Z','a'..'z']; i:integer; implementation uses Unit2; {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin s1:=tstringlist.Create; s1.LoadFromFile('1.txt'); s2:=tstringlist.Create; s2.LoadFromFile('2.txt'); end; procedure TForm1.Button1Click(Sender: TObject); var s,s5:string; j:integer; k_slov,k_per:integer; m_slov:array[1..1000] of string; per_slov:array[1..1000] of integer; flag:boolean; begin {if radiobutton1.Checked then begin if s1.IndexOf(edit1.Text)<>-1 then edit2.Text:=s2.Strings[s1.IndexOf(edit1.Text)]; end else begin if s2.IndexOf(edit1.Text)<>-1 then edit2.Text:=s1.Strings[s2.IndexOf(edit1.Text)]; end; } begin s:=memo1.Text; k_slov:=0; k_per:=0; s5:=''; if length(s)>0 then if s[1] in c then flag := True Else flag := false; for j:=1 to length(s) do begin if s[j] in c then begin //буква if flag then s5:=s5+s[j] else begin inc(k_slov); m_slov[k_slov]:=s5; s5:=s[j]; flag:=true; end; end else begin //не буква if not flag then s5:=s5+s[j] else begin inc(k_slov); inc(k_per); m_slov[k_slov]:=s5; per_slov[k_per]:=k_slov; s5:=s[j]; flag:=false; end; end; end; for i:=1 to k_slov do begin flag:=false; for j:=1 to k_per do if i=per_slov[j] then flag:=true; if flag then stringGrid1.Cells[i-1,1]:=m_slov[i] else stringGrid1.Cells[i-1,0]:=m_slov[i]; end; end; ---------------------------------------------------------- begin for i:=1 to k_slov do {if i=per_slov then} begin Form1.Memo2.Lines.Add(IntToStr(k_slov); end; ВОТ СДЕСЬ НАДО ЗАДАТЬ ЦИКЛ ТАКОЙ ШТО Б ОН МНЕ ПЕРЕВОДИЛ РАЗДЕЛЕННЫЕ СЛОВА НА РУССКИЙ ИЗ 1.TXT ------------------------------------------------------------- end; end; procedure TForm1.Button2Click(Sender: TObject); begin form2.show; end; end. Последний раз редактировалось Admin, 31.12.2011 в 12:27. |
#2
|
|||
|
|||
хотелось бы конкретней, чтобы не изучать всю помойку
|
#3
|
|||
|
|||
мемо1 я ввожу англйское предложение, в StringGrid1 он разделяет слова от пробелов и запятых
Код:
begin s:=memo1.Text; k_slov:=0; k_per:=0; s5:=''; if length(s)>0 then if s[1] in c then flag := True Else flag := false; for j:=1 to length(s) do begin if s[j] in c then begin //буква if flag then s5:=s5+s[j] else begin inc(k_slov); m_slov[k_slov]:=s5; s5:=s[j]; flag:=true; end; end else begin //не буква if not flag then s5:=s5+s[j] else begin inc(k_slov); inc(k_per); m_slov[k_slov]:=s5; per_slov[k_per]:=k_slov; s5:=s[j]; flag:=false; end; end; end; for i:=1 to k_slov do begin flag:=false; for j:=1 to k_per do if i=per_slov[j] then flag:=true; if flag then stringGrid1.Cells[i-1,1]:=m_slov[i] else stringGrid1.Cells[i-1,0]:=m_slov[i]; end; end; и записывает отдельно слово в ячейку, в следующую ячейку он записывает пробел, потом в следующую слово и т.д. и вот надо задать цикл што б он эти отдельно найденые выводил в мемо2 на русском Последний раз редактировалось Admin, 31.12.2011 в 12:27. |
#4
|
|||
|
|||
правильно понял что проблема с 1.txt?
|
#5
|
|||
|
|||
нет, проблема в том что я никак не могу сообразить как привязать этот тхт к программе(((
там вот где я отметил красным должен быть цикл который будет брать найденые слова, искать перевод их в 1.тхт и выводить уже переведенные слова в мемо2 |
#6
|
|||
|
|||
циклы ты и сам умеешь, значит проблема только в переводе
PHP код:
PHP код:
PHP код:
|
Этот пользователь сказал Спасибо Pyro за это полезное сообщение: | ||
abab (30.12.2011)
|
#7
|
|||
|
|||
к сожелению мне не это надо(((
вот я чуть чуть отредактировал исходник Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm1 = class(TForm) Label1: TLabel; RadioButton1: TRadioButton; RadioButton2: TRadioButton; Button1: TButton; Button2: TButton; Memo1: TMemo; StringGrid1: TStringGrid; Memo2: TMemo; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; s1,s2:tstringlist; c:set of char = ['A'..'Z','a'..'z']; i:integer; implementation uses Unit2; {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin s1:=tstringlist.Create; s1.LoadFromFile('1.txt'); s2:=tstringlist.Create; s2.LoadFromFile('2.txt'); end; procedure TForm1.Button1Click(Sender: TObject); var s,s5:string; j:integer; k_slov,k_per:integer; m_slov:array[1..1000] of string; per_slov:array[1..1000] of integer; flag:boolean; p:integer; begin for p:=0 to memo1.Lines.Count-1 do begin s:=memo1.Lines.Strings[p]; k_slov:=0; k_per:=0; s5:=''; if length(s)>0 then if s[1] in c then flag := True Else flag := false; for j:=1 to length(s) do begin if s[j] in c then begin //буква if flag then s5:=s5+s[j] else begin inc(k_slov); m_slov[k_slov]:=s5; s5:=s[j]; flag:=true; end; end else begin //не буква if not flag then s5:=s5+s[j] else begin inc(k_slov); inc(k_per); m_slov[k_slov]:=s5; per_slov[k_per]:=k_slov; s5:=s[j]; flag:=false; end; end; end; for i:=1 to k_slov do begin flag:=false; for j:=1 to k_per do if i=per_slov[j] then flag:=true; if flag then stringGrid1.Cells[i-1,1]:=m_slov[i] else stringGrid1.Cells[i-1,0]:=m_slov[i]; end; а вот в этом промежутке надо обработать стринг грид 1 перевести даные каждой ячейки второй строки, соединить первые вторые строки и добавить в мемо2 переведенное на русский язык предложение memo2.Lines.Add() end; end; procedure TForm1.Button2Click(Sender: TObject); begin form2.show; end; end. Последний раз редактировалось Admin, 31.12.2011 в 12:29. |