Прежде чем задавать вопрос - поищите его в поиске!
0 голосов
138 просмотров
Добрый день, Роман!

Заинтересовал Ваш курс Master Delphi. Подскажите пожалуйста, могу ли я найти в Вашем курсе информацию по переводу приложения с одного языка на другой? Есть исходник программы н англ. языке на котором я собираюсь учится. Я хочу его переработать и перевести на несколько языков. После покупки курса Master Delphi могу я рассчитывать на помощь в появляющихся в процессе обучения вопросах? Подскажите пожалуйста форумы на которых можно было бы получить квалифицированный ответ по Delphi 7. Есть небольшой опыт в Turbo Pascal. C Delphi знаком 3 месяца.
спросил 27 Апр, 16 от Юрий в категории Мастер Delphi | 138 просмотров

5 Ответы

0 голосов
Здравствуйте.

По переводу на разные языки в курсе нету информации, но я помогу чем смогу.

Пишите свои вопросы на этом форуме, создавайте темы и мы разберемся вместе.
ответил 27 Апр, 16 от krotovroman Мастер (131,190 баллов)
0 голосов
Огромное спасибо за поддержку!

Отпишу позже по пунктам. Мне кажется это полезная вещь, и она должна быть востребованна.

С уважением, Юрий.
ответил 27 Апр, 16 от Юрий
0 голосов
Добрый день, Роман!

По ходу обучения появилось два вопроса.

1. Пока еще не совсем понимаю как правильно описать процедуру события OnClick (ссылку/переход) для того что бы выполнить(использовать) процедуру в другой форме проекта. Пытаюст реализовать горячие клавиши в программе.Пробовал разными способами,пока не получилось. Видимо это связанно с тем что я неправильно описываю процедуру. Правильноя понимаю что мне еще раз нужно просмотреть Основы ООП? Подскажите пожалуйста что можно еще почитать и какие посмотреть примеры по реализации горячих клавиш.

2. Второй вопрос для меня сложнее. Продвинулся с переводом приложения. Немного разобрался с Тranslation Мanager. Нашел пока только одно более менее понятное описание его работы:

http://www.rtfm.4hack.com/books.php?id1=2&id2=5&id3=11#3.

Тranslation Мanager использует формы Delphi и в автоматическом режиме  составляет библиотеку компонентов для перевода с присвоением ID к каждому компонениу для того что бы в дальнейшем, при вызове этого компонента, достать из библиотеки нужный перевод.

У меня в программе константы (consts) используемые формами программы описаны в текстовом файле consts.txt. Я попробовал вручную добавить в проект файл consts.txt (т.к. в автоматическом режиме он его вообще не видит). Но Тranslation Мanager не воспринимает файл consts.txt как файл для перевода, и соответственно не создает в библиотеке локализации языка для него перевода.

Что делать?

Я ищу вижу решение в дву вариантах:

а) переписать файл txt в файл pas и задать в использующих его формах соответствующие ссылки. После этого как сделать перевод с помощью Тranslation Мanager мне понятно. Для меня это пока не достижимо.

б) Тranslation Мanage использует Resource Scripts. Его видно Вид>Менеджер перевода>workspace>Русский(Россия)>Resource Scripts. Возможно как то можно добавить в него для перевода константы которые будут подтягтваться в процессе работы программы из txt файла.

буду изучать справку по Setting up a Translation Repository.

 

Заранее спасибо за любой совет!!!
ответил 03 Май, 16 от Юрий
0 голосов

Для реализации горячих клавиш можно использовать дополнительные компоненты. Например HotKeyManager.

По вопросу 2. Почему вариант А) не достижим?

Форма — это модуль, модули можно использовать. Чтобы вызывать процедуры из других форм, их нужно подключить.

uses
  UMain;

Вот пример:

unit UMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Vcl.StdCtrls;

type
  TForm2 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure ShowMess;
begin
  Application.MessageBox('Все успешно!!','Внимание',MB_OK);
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
ShowMess;
end;
end.

Чтобы ShowMess() была видна для других, её объявление следует поместить в разделе interface

unit UMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm2 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

procedure ShowMess();

var
  Form2: TForm2;

implementation

 

ответил 04 Май, 16 от krotovroman Мастер (131,190 баллов)
0 голосов
Добрый день, Роман!

После непродолжительного отпуска возобновляю работу.

Получилось сделать из текстового файла consts.txt  pas  форму consts.pas. Но столкнулся с тем что при компилировании программы выдается ошибка вида:

Project1.dpr(57): Unit Clipbrd was compiled with a different version of consts.SCannotOpenClipboard

Получилось выяснить что Clipbrd исполльзует consts.pas вшитый в Delphi, как понял системный файл pas описывающий системные сообщения. Что делать дальше?

Вариантов два: изменить название моего файла pas на consts1 например. Продолжить развитие этого варианта было бы удобно с точки зрения удобства перевода формы на несколько языков с програмными средствами Delphi. Но пробема в том, что программа использует файл consts.txt через команду

{$I consts.txt}  //File containing various constants (strings, defaults, etc.)

и в дальнейшем подставляет значения в вызываемые формы а также библиотеку dll собранную на C++........

Чувствую себя Шерлоком Холмсом)))) Безумно интересно!))))

Так вот я пробовал переводить txt файл (до того как сделал из него pas форму), но столкнулся с тем что после компиляции программы - возвращается ошибка от dll библиотеки которая выполняет расчет о том что единицы измерения (константы) не верны.

.... Чуствую что путь мой лежит к библиотеке dll на C++....

Буду искать как сопоставить константы в программе и библиотеке dll.

Если я смогу переделать dll так, что бы он воспринимал константы на русском, то можно просто будет добавлять переведенный файл в библиотеку dll. Буду разбираться и искать компилятор для C++.

Исходник библиотеки у меня тоже есть.

{*****************************************************************}
{                                                                                 }
{       Borland Delphi Visual Component Library               }
{                                                                                 }
{  Copyright (c) 1995-2001 Borland Software Corporation }
{                                                                                 }
{*****************************************************************}

unit Clipbrd;

implementation

uses SysUtils, Forms, Consts;

 

{*****************************************************************}
{                                                                                 }
{       Borland Delphi Visual Component Library               }
{                                                                                 }
{  Copyright (c) 1995-2001 Borland Software Corporation }
{                                                                                 }
{*****************************************************************}

unit Consts;
ответил 11 Июнь, 16 от Юрий

Похожие вопросы

0 голосов
2 ответов
спросил 18 Авг, 14 от Елена Краева в категории Мастер Delphi | 48 просмотров
0 голосов
1 ответ
0 голосов
2 ответов
513 вопросов
694 ответов
433 пользователей