Проблема с русскими именами

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Проблема с русскими именами

Сообщение Sergey7 » 31.01.2010 12:30:25

Здравствуйте уважаемые форумчане. Вот решил освоить программирование на Паскале. Попробовал Delphi 7 не понравилось, то что нет поддержки Unicode - не могу присвоить русские имена переменным. А значит при проектировании баз данных, названия таблиц, полей и т.д. все на английском - плохо для меня. Но если для всех версий Delphi это приговор, и ничего сделать уже нельзя, то для Lazarus ведь изначально заложено поддержка Unicode. Но при попытке присвоить переменной русского имени - компилер Lazarus выдает ошибку - ПОЧЕМУ! В VB таких проблем не было.
IDE: Lazarus v.0.9.29 с fpc 2.3.1
ОС: Windows XP SP3 RUS
C уважением Сергей.
Sergey7
незнакомец
 
Сообщения: 4
Зарегистрирован: 31.01.2010 11:48:10

Re: Проблема с русскими именами

Сообщение WAYFARER » 31.01.2010 15:21:27

Но если для всех версий Delphi это приговор

Delphi 2009 уже с Unicod'ом.

А зачем переменной присваивать русское имя? Можно подробнее изложить?
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Проблема с русскими именами

Сообщение Mr.Smart » 31.01.2010 15:45:40

Sergey7 писал(а):не могу присвоить русские имена переменным.

Использование в коде литералов с кириллицей противоречит принципам языка Pascal!
В свою очередь использование любых литералов в названии полей таблиц и любых объектов в базах данных возможно, если конечно это позволяет сама база дынных.
Например в MSSQL это можно сделать так:
Код: Выделить всё
SELECT * FROM [Склад № 3] WHERE [Код товара]>15

или так
Код: Выделить всё
SELECT * FROM "Склад № 3" WHERE "Код товара">15

а вообще это зависит от реализации конкретного движка баз данных.
Здесь есть один подводный камень. Вы можете столкнуться с проблемами вызванные различием используемых кодировок :wink:
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Проблема с русскими именами

Сообщение Sergey7 » 31.01.2010 16:14:33

WAYFARER писал(а):
Но если для всех версий Delphi это приговор

Delphi 2009 уже с Unicod'ом.

А зачем переменной присваивать русское имя? Можно подробнее изложить?


Да вообщем -то не критично конечно. Но для людей слабо разбирающихся в английском (я в первую очередь) это было бы плюсом.
Согласитесь, одно дело запомнить необходимый минимум типа: if, else, begin и т.д. Но когда дело доходит до проектирования различных бизнес-логик (читай баз данных) то ситуация меняется кардинально. Например какой-нибудь метод типа <<ЮридическиеЛицаФормаЭлемента>> лучше писать на своем родном.
Да и сына хочу приучить к программированию, а у него тоже с аглицким напряг - 1-й класс все таки.

Добавлено спустя 10 минут 43 секунды:
Mr.Smart писал(а):
Sergey7 писал(а):не могу присвоить русские имена переменным.

Использование в коде литералов с кириллицей противоречит принципам языка Pascal!
В свою очередь использование любых литералов в названии полей таблиц и любых объектов в базах данных возможно, если конечно это позволяет сама база дынных.
Например в MSSQL это можно сделать так:
Код: Выделить всё
SELECT * FROM [Склад № 3] WHERE [Код товара]>15

или так
Код: Выделить всё
SELECT * FROM "Склад № 3" WHERE "Код товара">15

а вообще это зависит от реализации конкретного движка баз данных.
Здесь есть один подводный камень. Вы можете столкнуться с проблемами вызванные различием используемых кодировок :wink:


Спасибо за ответ. Но а насчет проблем вызванных различием используемых кодировок - не страшно. Дальше России не пойду. Ума не хватит.
Sergey7
незнакомец
 
Сообщения: 4
Зарегистрирован: 31.01.2010 11:48:10

Re: Проблема с русскими именами

Сообщение WAYFARER » 31.01.2010 16:58:35

Например какой-нибудь метод типа <<ЮридическиеЛицаФормаЭлемента>> лучше писать на своем родном.

Дык ведь тогда транслитом можно писать, не обязательно кириллицей, например <YridicheskieLicaFormaElementa>> - по-русски, но латиницей.
Но а насчет проблем вызванных различием используемых кодировок - не страшно. Дальше России не пойду.

Не обязательно куда то идти дальше, самые распространенные windows-1251, koi8-r, cp866 - это все кириллица.
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Проблема с русскими именами

Сообщение Sergey7 » 31.01.2010 17:20:59

WAYFARER писал(а):Дык ведь тогда транслитом можно писать, не обязательно кириллицей, например <YridicheskieLicaFormaElementa>> - по-русски, но латиницей.


Согласен, если надо всего несколько строк. А если таких строк сотни. Думаю <ЮридическиеЛицаФормаЭлемента> будет намного понятнее, чем <YridicheskieLicaFormaElementa>. Не говоря уже о скорости разработки.
Sergey7
незнакомец
 
Сообщения: 4
Зарегистрирован: 31.01.2010 11:48:10

Re: Проблема с русскими именами

Сообщение Verx0Laz » 01.02.2010 09:34:44

Sergey7 писал(а):
WAYFARER писал(а):Дык ведь тогда транслитом можно писать, не обязательно кириллицей, например <YridicheskieLicaFormaElementa>> - по-русски, но латиницей.


Согласен, если надо всего несколько строк. А если таких строк сотни. Думаю <ЮридическиеЛицаФормаЭлемента> будет намного понятнее, чем <YridicheskieLicaFormaElementa>. Не говоря уже о скорости разработки.


Знаете, а код, вообще-то, очень любит порядок. Вот так в начале кода, бывало, позволишь себе схалтурить, и к концу кода это таким кроком вылазит, что проще заново переписать, чем пытаться поправить :)

Sergey7, у вас изначально в понимание процесса программирования вкралась ошибочка: дело в том, что процентов 70 этого процесса занимает копание в справочной информации, а не само написание кода. А справочная информация почти вся на английском.
Поверьте, гораздо проще скачать самоучитель, переводчик и выучить английский хотябы на уровне работы со словарем, нежели пытаться код переписывать на русский язык. И вам, и сыну вашему, это будет гораздо полезнее.
Аватара пользователя
Verx0Laz
постоялец
 
Сообщения: 125
Зарегистрирован: 11.09.2007 11:24:07

Re: Проблема с русскими именами

Сообщение eevee » 01.02.2010 10:57:23

Народ, не повторяйте ошибок 1С !!! Там тоже люди взяли человеческую форму языка XML и!!!! переписали все операторы на русский!!!! Это как же надо было головой то удариться?!Не делайте так никогда!

Добавлено спустя 2 минуты 13 секунд:
По поводу Visual Basic - это не язык программирования, а черт знает что вообще. Если уж брать за пример, то возьмите хотя бы C/C++, но он тоже такого безобразия, как переменные в кириллице, не допускает

Добавлено спустя 2 минуты 37 секунд:
По поводу того, почему так сложилось - кодировка латиницы всегда была, есть и будет всего одна. Она никогда не меняется. Она - стандарт. Я вот только русских кодировок знаю 4: KOI8-R, cp866,cp1251,UTF-8. У остальных языков и того хлеще. Как же компилятору разбираться в местных кодировках?
eevee
новенький
 
Сообщения: 63
Зарегистрирован: 29.12.2009 17:52:44
Откуда: Саратов

Re: Проблема с русскими именами

Сообщение Brainenjii » 01.02.2010 11:41:54

А какая разница компилятору - какая кодировка у идентификаторов? ^_^ Да и англицский в какой-нибудь UTF-16 отличается от той же UTF8, насколько я знаю... По мне, практика порочна только по причине её непривычности и английского как стандарта в IT де факто ^_^
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Проблема с русскими именами

Сообщение eevee » 01.02.2010 15:13:35

Неа, аглицкий везде одинаковый, это зря...
Разница будет вот в чем:
UTF8: 0 x 01 65 00 00 00 00 00 00 - код буквы 65 аглицкого алфавита
UTF16 - 0 x 01 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - тоже самое

разницы не вижу совсем

ISO-8859-1 0x65 - как был код 65 - так и остался, везде и всегда
eevee
новенький
 
Сообщения: 63
Зарегистрирован: 29.12.2009 17:52:44
Откуда: Саратов

Re: Проблема с русскими именами

Сообщение Sergey7 » 04.02.2010 22:13:21

Verx0Laz писал(а):Sergey7, у вас изначально в понимание процесса программирования вкралась ошибочка: дело в том, что процентов 70 этого процесса занимает копание в справочной информации, а не само написание кода. А справочная информация почти вся на английском.
Поверьте, гораздо проще скачать самоучитель, переводчик и выучить английский хотябы на уровне работы со словарем, нежели пытаться код переписывать на русский язык. И вам, и сыну вашему, это будет гораздо полезнее.


Значит будем потихоньку изучать английский. Всем спасибо. Тему можно закрывать.
Sergey7
незнакомец
 
Сообщения: 4
Зарегистрирован: 31.01.2010 11:48:10

Re: Проблема с русскими именами

Сообщение скалогрыз » 05.02.2010 01:29:41

eevee писал(а):Неа, аглицкий везде одинаковый, это зря...

в utf-16 на кодирование 1ого символа (не суррогата) уходит 2 байта! ВСЕГДА! даже если это английский.
в utf-8 на английский символ уходит 1 байт, а все другие... 2 байта и больше!

даже если в utf8 и utf16 код символа будет одинаковый, это не значит, что $65 = $0065! мы же здесь разработчики, и понимаем важность РАЗМЕРА данных?!
например, код вроде:
Код: Выделить всё
var
  a: AnsiString;
  w: WideString;
begin
  a:='Hello World';
  SetLength(w, length(a));
  Move(a[1], w[1], length(a));
  writeln(w);
end.

выдаст совсем не "Hello World"!
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Проблема с русскими именами

Сообщение eevee » 05.02.2010 09:01:45

Я имел в виду именно код символа :-)Так как для русского даже коды символов не совпадают
eevee
новенький
 
Сообщения: 63
Зарегистрирован: 29.12.2009 17:52:44
Откуда: Саратов


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 27

Рейтинг@Mail.ru