Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.20;
Скачать: CL | DM;

Вниз

Русские идентификаторы в Delphi for .Net (BDS 2006)   Найти похожие ветки 

 
nata   (2008-06-20 16:58) [0]

Мне НЕОБХОДИМО использовать русские буквы в идентификаторах в Delphi for .Net (BDS 2006).
Например,

procedure TWinForm.Кнопка_Click(sender: System.Object; e: System.EventArgs);
var
{$I "D:\Мои документы\Список_переменных";} : string;
begin
П_Переменная:="natador";
TextBox1.Text:=П_Переменная;
end;

В файле Список_переменных.pas написано имя переменной П_Переменная (для меня важно подключение такого файла).
При первой компиляции имееются сообщения об ошибках:

[Pascal Error] Список_переменных.pas(1): E2038 Illegal character in input file: "П" (#$1F)
[Pascal Error] Список_переменных.pas(1): E2038 Illegal character in input file: "я" (#$4F)
[Pascal Error] WinForm.pas(108): E2003 Undeclared identifier: " П_Переменная"
[Pascal Fatal Error] Project1.dpr(15): F2063 Could not compile used unit "WinForm.pas"

При повторной компиляции ошибок нет и все работает хорошо.
Как этого избежать, т.к. при подключении многих файлов, компиляция мучительно долгая.


 
clickmaker ©   (2008-06-20 17:00) [1]

> Мне НЕОБХОДИМО использовать русские буквы

почему?


 
Dennis I. Komarov ©   (2008-06-20 17:03) [2]

чуръ меня, чуръ... :)


 
Palladin ©   (2008-06-20 17:05) [3]


> Мне НЕОБХОДИМО использовать русские буквы

аффигеть, серьезное ПО... ну транслит, в принципе, не запрещен :)


 
nata   (2008-06-20 17:08) [4]

Ребята, пожалуйста, если не знаете чем помочь, не пишите чушь.
Покритиковать кого я и сама могу.


 
stas ©   (2008-06-20 17:11) [5]

Мне НЕОБХОДИМО использовать русские буквы...
???
А что английской раскладки нет?

Совет:
Edit->replace
с:   русские буквы
на: English


 
McSimm ©   (2008-06-20 17:18) [6]

Поведение компилятора действителтьно странное.
Но странность задачи затмевает.

Цель не могу себе представить, но почему-то уверен, что ее можно добиться и другим способом, без инклуда.


 
Dennis I. Komarov ©   (2008-06-20 17:20) [7]

> [4] nata   (20.06.08 17:08)

Почему не знаем? Знаем. Только:
1. ответь на [1]
2. не понравиться...


 
McSimm ©   (2008-06-20 17:22) [8]


> Почему не знаем? Знаем.

Поделитесь пожалуйста. Мне тоже очень интересно, почему ошибка происходит при первой компиляции, а повторная проходит нормально.


 
Правильный-Вася   (2008-06-20 17:22) [9]

явно пишется расширение языка для протых юзеров

начало
 переменная:=константа
конец


 
nata   (2008-06-20 17:26) [10]


> Почему не знаем? Знаем.


Поделитесь если знаете, пример просто иллюстративный, если вы все еще задумываетесь над использованием данного "программного продукта". Если будет все работать на 3-х строках, будет работать и в реальной программе.
А необходимо, т.к. файл подключения генерируется автоматически на русском языке, заниматься перекодировкой неблагодарное дело, если языком предусмотрена возможность использования символов Unicode.


 
McSimm ©   (2008-06-20 17:29) [11]

Почему неблагодарное? Во всяком случае решить проблему перекодировкой можно, и не так уж и сложно.

но и понять такое поведение тоже было бы интересно.


 
Правильный-Вася   (2008-06-20 17:52) [12]


> если языком предусмотрена возможность использования символов Unicode.

тогда почему String, а не WideString ?


 
McSimm ©   (2008-06-20 17:54) [13]


> тогда почему String, а не WideString ?

А если Integer?

Имя переменной и его содержимое как связаны ?


 
nata   (2008-06-20 17:58) [14]


> McSimm ©   (20.06.08 17:54) [13]
>
Тип не имеет значения, может быть любой, как и значение переменной, это просто иллюстрация ошибок.


 
McSimm ©   (2008-06-20 18:03) [15]


> nata   (20.06.08 17:58) [14]

да, это я понимаю.

Может все-таки стоит обработать генерируемый текст ? Проблему решит, а перекодировщик делается за несколько минут.
Например заменить unicode символы их 16ми кодами: var_<hex-codes>


 
Правильный-Вася   (2008-06-20 18:06) [16]

может, лучше в годегир написать багрепорт?
или хотя бы патчи поставить?


 
nata   (2008-06-20 18:07) [17]

спасибо за предложение, но мой шеф категорически настоен на русские имена, будем компилировать :-)


 
Dennis I. Komarov ©   (2008-06-20 18:24) [18]

> [10] nata   (20.06.08 17:26)

Надо будет переписать компилятор :) Расвели тут 1С, понимаешь.


> Поделитесь пожалуйста. Мне тоже очень интересно, почему
> ошибка происходит при первой компиляции, а повторная проходит
> нормально.

Чего,  правда? У меня нету для .NET. Мда, дожили....


 
Игорь Шевченко ©   (2008-06-20 20:57) [19]


> {$I "D:\Мои документы\Список_переменных";} : string;


а зачем точка с запятой после кавычки ?


 
Anatoly Podgoretsky ©   (2008-06-20 20:58) [20]

> nata  (20.06.2008 18:07:17)  [17]

У Борланда в отличии от Микрософт очень напряженые отношения с неанглийскими символами, если по рабоче крестьянски - плохо у них выходит. Чего стоит наличие буквы Я в комментариях dpr файла. И тут видимо в лужу сели. А вот у Микрософта еще в 1993 году был с этим порядок, полный порядок.
Вот так Борланд на корню гноит национальные кадры.


 
Игорь Шевченко ©   (2008-06-20 21:02) [21]

TurboDelphi 2006:

varnames.inc
 МояПеременная1, МояПеременная2, МояПеременная3

unit main;

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

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure ПоказатьСообщение (Сообщение: string);
begin
 ShowMessage(Сообщение);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
{$I varnames.inc}
 : string;
begin
 МояПеременная1 := "Foo ";
 МояПеременная2 := "Bar ";
 МояПеременная3 := "Baz ";
 ПоказатьСообщение(МояПеременная1+МояПеременная2+МояПеременная3);
end;

end.


 
Игорь Шевченко ©   (2008-06-20 21:03) [22]

Все компилируется и даже работает. Единственно - набирать неудобно, все время промеж раскладками переключаться да и редактор в IDE с русскими буквами не дружит


 
Dummy   (2008-06-20 21:04) [23]


> мой шеф категорически настоен на русские имена


Может проще сменить щефа? по-моему он - идиот.


 
Palladin ©   (2008-06-20 21:11) [24]

шеф, в том, что он идиот, - не виноват. а вот всяким натам осталось грамотно продемонстрировать шефу на несовместимость желалок и возможностей приобретенного продукта. пусть сам решает что ему надо...


 
Игорь Шевченко ©   (2008-06-20 21:13) [25]

Впрочем, гораздо интереснее так:

unit main;

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

type
 Строка = string;
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure ПоказатьСообщение (Сообщение: Строка);
begin
 ShowMessage(Сообщение);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 &#32993;&#38182;&#28059;, &#29579;&#23696;&#23665;, &#20196;&#32908;&#32932;&#32509;&#25918;&#29645;&#29664;&#33324;&#20928;&#30333; : Строка;
begin
 &#20196;&#32908;&#32932;&#32509;&#25918;&#29645;&#29664;&#33324;&#20928;&#30333; := "Foo ";
 &#29579;&#23696;&#23665; := "Baz ";
 &#32993;&#38182;&#28059; := "Bar";
 ПоказатьСообщение(&#20196;&#32908;&#32932;&#32509;&#25918;&#29645;&#29664;&#3332 4;&#20928;&#30333;+&#29579;&#23696;&#23665;+&#32993;&#38182;&#28059;);
end;

end.


 
Anatoly Podgoretsky ©   (2008-06-20 22:03) [26]

> Игорь Шевченко  (20.06.2008 21:13:25)  [25]

Я стесняюсь спросить, а что там написано?


 
Anatoly Podgoretsky ©   (2008-06-20 22:04) [27]

Основенно здесь &#20196;&#32908;&#32932;&#32509;&#25918;&#29645;&#29664;&#33324;&#20928;&#30333;


 
Игорь Шевченко ©   (2008-06-20 22:04) [28]

Anatoly Podgoretsky ©   (20.06.08 22:03) [26]

Все имена переменных - цензурные :)


 
Anatoly Podgoretsky ©   (2008-06-20 23:24) [29]

> Игорь Шевченко  (20.06.2008 22:04:28)  [28]

Меня интересует, что за длинное имя идентификатора, я ведь в курсе, что каждый значок это одно слово, это наверно немецкий идентификатор и для уменьшения физического размера записан иерофглифами. Модно ли узнать каждое слово?


 
Игорь Шевченко ©   (2008-06-20 23:27) [30]


> Модно ли узнать каждое слово?


у каждого программиста свои секреты :)


 
nata   (2008-06-20 23:41) [31]

ой ребята, вам явно не хватает общения, а проблема все еще имеется. TurboDelphi 2006 мне не подходит. И впервые меня называют "всякая НАТА".


 
Игорь Шевченко ©   (2008-06-20 23:57) [32]

nata   (20.06.08 23:41) [31]

и все-таки, зачем точка с запятой после имени файла, который по Include включается ?


 
nata   (2008-06-20 23:58) [33]

можите ее убрать


 
Игорь Шевченко ©   (2008-06-21 00:01) [34]

nata   (20.06.08 23:58) [33]

Да у меня вообще-то и проблемы нет (как и BDS2006, впрочем), так что убирать я ее не буду. С вашего позволения.


 
Anatoly Podgoretsky ©   (2008-06-21 00:05) [35]

> Игорь Шевченко  (20.06.2008 23:27:30)  [30]

Так и не удалось на слабо взять.


 
Anatoly Podgoretsky ©   (2008-06-21 00:07) [36]

> nata  (20.06.2008 23:41:31)  [31]

Что бы была не всякая - начинать надо с фото.


 
Германн ©   (2008-06-21 01:16) [37]


> Игорь Шевченко ©   (20.06.08 21:13) [25]

Сегодня днём там были иероглифы. Сейчас вопросительные знаки. Совсем не красиво :(


 
Leonid Troyanovsky ©   (2008-06-21 11:20) [38]


> Anatoly Podgoretsky ©   (20.06.08 22:04) [27]

> Основенно здесь &#20196;&#32908;&#32932;&#32509;&#25918;&#29645;&#29664;&#33324;&#20928;&#30333;

Кожа расцветает, как жемчуг из незамутненного источника?

--
Regards, LVT.


 
clickmaker ©   (2008-06-23 12:37) [39]

> мой шеф категорически настоен на русские имена

прямо как в монологе Задорнова: "могём или не могём?" )



Страницы: 1 вся ветка

Текущий архив: 2008.07.20;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.022 c
2-1213708430
snake-as
2008-06-17 17:13
2008.07.20
Печать DBGrid


2-1214166864
psa247
2008-06-23 00:34
2008.07.20
Выполнение запроса с цифрами


3-1198262739
DBUser
2007-12-21 21:45
2008.07.20
Как сделать TRIGGER в Oracle из Delphi?


15-1212052025
YurikGL
2008-05-29 13:07
2008.07.20
Нормативный документ с указанием "как именовать объекты"


15-1212671141
Vlad Oshin
2008-06-05 17:05
2008.07.20
Скоро прокси починится. Извините