Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/114: Рейтинг темы: голосов - 114, средняя оценка - 4.79
MZee

Delphi и кириллица

18.12.2009, 17:45. Показов 22855. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть ли в делфи какой-нибудь модуль позволяющий нормально работать с кириллицей? (также как в турбо паскале) например, если я надумаю вывести 'бу', он мне выведет "бу", а никакую то абаракадабару))
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.12.2009, 17:45
Ответы с готовыми решениями:

Delphi XE5, Indy, кириллица
Получаю контент Get запросом, кириллица отображается неверно. Многое пробовал, в том числе и "IndyTextEncoding_UTF8" - решить не...

Подсчитать количество вхождений буквы (кириллица) в строку (кириллица)
Суть такая: по требованию программы ввести строку символов (обыкновенный текст, кириллица(!!!)) и посчитать количество вхождений, если...

кириллица
Как настроить кириллицу в ТР7.1?:-[

5
17 / 17 / 2
Регистрация: 19.12.2008
Сообщений: 89
18.12.2009, 18:39
Вот вам функция:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function Rus(mes: string):string;
// В ANSI русские буквы кодируются числами от 192 до 255,
// в ASCII - от 128 до 175 (А..Яа..п) и от 224 до 239 (р..я).
  var
    i: integer; // номер обрабатываемого символа
  begin
    SetLength(Result,length(mes));
    for i:=1 to length(mes) do
      case mes[i] of
        'А'..'п' :Result[i] := Chr(Ord(mes[i]) - 64);
        'р'..'я' :Result[i] := Chr (Ord(mes [i] ) -16);
        else Result[i]:=mes[i];
      end;
  end;
1
MZee
18.12.2009, 19:28
Ммм.. спасибо.. но малость не то что я хотела =) пример наверно нада было другой привести, но функция полезная, спасибо еще раз)
мне нужно создать массив ['А'..'Б'], в турбо паскале такое возможно, но в делфи не то получается.. как с этим бороться? мне кажется все таки должна же быть какая нибудь библиотека =)
0 / 0 / 0
Регистрация: 02.12.2009
Сообщений: 8
20.12.2009, 18:03
попробуйте через множество
set of
0
 Аватар для Mawrat
13113 / 5894 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
21.12.2009, 14:56
Как я понял, с кириллицей требуется работать в консольном приложении.
В редакторе кода Delphi используется кодировка Win-1251. В этой кодировке программист вводит текст программы. А во время выполнения программы в консоли используется другая кодовая страница - CP866. Из-за этого возникают проблемы с кириллицей.
Чтобы эту проблему решить, можно менять кодовую страницу в консоли. Делается так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
program ...
...
var
  StrTmp : String;
...
begin
  //Настраиваем взаимодействие с консолью.
  
  //Входная кодовая таблица консоли установлена в Win-1251.
  SetConsoleCP('1251');
  //Выходная кодовая таблица консоли установлена в Win-1251.
  SetConsoleOutputCP('1251');
  
  //Теперь можно выполнять процедуры Write(), Writeln(), Read(), Readln() с использованием кириллицы:
  
  Writeln('Текст на кириллице.');
  Readln(StrTmp); //В строковую переменную StrTmp прочитан текст в кодировке Win-1251.
end;
Добавлено через 6 часов 12 минут
Поправлюсь.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Program ...;
...
uses
  SysUtils, Windows;
...
 
//Функция берёт строку в ANSI кодировке (Windows)
//и возвращает её перевод в OEM кодировку (DOS) в виде отдельной строки.
function StrAnsiToOem(aStr : String) : String;
begin
  Result := '';
  if Length(aStr) > 0 then begin
    SetLength(Result, Length(aStr));
    CharToOem(PChar(aStr), PChar(Result));
  end;
end;
 
//Функция берёт строку в OEM кодировке (DOS)
//и возвращает её перевод в ANSI кодировку (Windows) в виде отдельной строки.
function StrOemToAnsi(const aStr : String) : String;
begin
  Result := '';
  if Length(aStr) > 0 then begin
    SetLength(Result, Length(aStr));
    OemToChar(PChar(aStr), PChar(Result));
  end;
end;
 
var
  StrTmp : String;
 
begin
 
  //Можно использовать настройки консоли через SetConsole...().
  //Но в этом случае в свойствах консольного окна следует поменять шрифт на "Lucida Console".
  //Настраиваем консоль на работу с кодовой страницей Win-1251.
  //Входная кодовая страница.
  SetConsoleCP(1251);
  //Выходная кодовая страница.
  SetConsoleOutputCP(1251);
  
  //**************************
  
  //Либо можно пользоваться, например, функциями StrAnsiToOem() и StrOemToAnsi().
  
  Writeln(StrAnsiToOem( 'Это текст на кириллице.' ));
  ReadLn(StrTmp);
  StrTmp := StrOemToAnsi(StrTmp);
  
end.
1
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 7
24.02.2012, 23:57
Цитата Сообщение от spam Посмотреть сообщение
Вот вам функция:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function Rus(mes: string):string;
// В ANSI русские буквы кодируются числами от 192 до 255,
// в ASCII - от 128 до 175 (А..Яа..п) и от 224 до 239 (р..я).
  var
    i: integer; // номер обрабатываемого символа
  begin
    SetLength(Result,length(mes));
    for i:=1 to length(mes) do
      case mes[i] of
        'А'..'п' :Result[i] := Chr(Ord(mes[i]) - 64);
        'р'..'я' :Result[i] := Chr (Ord(mes [i] ) -16);
        else Result[i]:=mes[i];
      end;
  end;
А есть такая же функция, только на с++?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.02.2012, 23:57
Помогаю со студенческими работами здесь

Кириллица
Имеется код: #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> /* ЋЇЁб**ЁҐ бЁбвҐ¬л Є®¬**¤...

Кириллица
Доброго времени суток! Заранее извиняюсь за весьма глупый вопрос, но все же string name; int main() { setlocale...

Кириллица
Добрый день! Что сделать, что б кириллицу можно было вводить?

кириллица
Подскажите, как сделать ,чтобы в Borland C вывод был русскими буквами. Я написал setlocale(LC_ALL, "Russian"); вывод стал на...

Кириллица в C#
Доброго времени суток. У меня такая проблема, прога не считает кол-во букв кириллицы в тексте:( Как это можно сделать? Вот мой код...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru