Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.12.2011, 14:59
abab abab вне форума
Прохожий
 
Регистрация: 30.12.2011
Сообщения: 4
Репутация: 10
По умолчанию Англо-русский переводчик

добрый день! помогите с программой, а то сам чет не могу сообразить...
Код:
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  
Старый 30.12.2011, 15:03
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

хотелось бы конкретней, чтобы не изучать всю помойку
Ответить с цитированием
  #3  
Старый 30.12.2011, 15:14
abab abab вне форума
Прохожий
 
Регистрация: 30.12.2011
Сообщения: 4
Репутация: 10
По умолчанию

мемо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  
Старый 30.12.2011, 15:24
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

правильно понял что проблема с 1.txt?
Ответить с цитированием
  #5  
Старый 30.12.2011, 15:37
abab abab вне форума
Прохожий
 
Регистрация: 30.12.2011
Сообщения: 4
Репутация: 10
По умолчанию

нет, проблема в том что я никак не могу сообразить как привязать этот тхт к программе(((

там вот где я отметил красным должен быть цикл который будет брать найденые слова, искать перевод их в 1.тхт и выводить уже переведенные слова в мемо2
Ответить с цитированием
  #6  
Старый 30.12.2011, 15:47
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

циклы ты и сам умеешь, значит проблема только в переводе
PHP код:
one
один
two
два
three
три 
PHP код:
function translate(wordstringdictTStrings): string;
var 
iinteger;
begin
  i 
:= dict.IndexOf(word);
  if 
= -1 then result := word else
    
result := dict[1];
end
PHP код:
Caption := translate(Edit1.TextMemo1.Lines
Ответить с цитированием
Этот пользователь сказал Спасибо Pyro за это полезное сообщение:
abab (30.12.2011)
  #7  
Старый 30.12.2011, 19:22
abab abab вне форума
Прохожий
 
Регистрация: 30.12.2011
Сообщения: 4
Репутация: 10
По умолчанию

к сожелению мне не это надо(((
вот я чуть чуть отредактировал исходник
Код:
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.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:33.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter