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

Как исправить ошибку с русским текстом

04.11.2015, 12:25. Показов 1898. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если ввожу логин английскими то все работает нормально, а если ввожу логин русскими, то происходит какой то глюк
с прочтением русского текста. Причем, если ввожу пароль рускими буквами, то такого не происходит. Заметил, что при вводе логина русскими буквами в начале выполнения программы-сохраняются левые символы, а при проверке на правильность ввода читаются корректно. Подскажите пжлст в чем причина?

Pascal
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
51
52
53
54
55
56
program Project1;
 {$APPTYPE CONSOLE}
type TUser = class
  private
    fLogin: string;
    fPassword: string;
    procedure setLogin(newlogin: string);
    procedure setPassword(newpass: string);
  published
    property Login: string read fLogin write setLogin;
    property Password: string read fPassword write setPassword;
    function Connect: boolean;
end;
procedure TUser.setLogin(newlogin: string);
begin
 if newlogin <>'' then fLogin:=newlogin
   else writeln('Error! Login is void!');
end;
procedure TUser.setPassword(newpass: string);
begin
 if Length(newpass)>3 then fPassword:=newpass
   else writeln('Error! Password is too short!');
end;
function TUser.Connect:boolean;
var
 s,p: string;
begin
 writeln('Введите имя пользователя:');
 readln(s);
 writeln('Введите пароль:');
 readln(p);
 result:= (s=fLogin) and (p=fPassword);
end;
var
 User: TUser;
 s,p: string;
begin
 User:=TUser.Create;
  writeln('Create username');
 readln(s);
 User.Login:=s;
 writeln('Create password');
 readln(p);
 User.Password:=p;
 writeln('Username is: '+User.Login);
 writeln('Password is: '+User.Password);
 writeln('Try to login...');
 while User.Password<>'' do begin
   if User.Connect then begin
     writeln('All Ok.');
     break;
   end else writeln('Incorrect data. Try again!');
 end;
 User.Destroy;
 readln;
end.
Миниатюры
Как исправить ошибку с русским текстом  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.11.2015, 12:25
Ответы с готовыми решениями:

Blob с русским текстом
Всем привет! Есть csv файл, который записан в базе в blob. Нужно распарсить каждую строчку, взяв части между ';'. С английскими...

Как работать с русским текстом в ASP.NET и ASP одновременно?
Сначала я обратился со следующим вопросом: Выполняется следующий код (база MSSQL2000) &lt;code&gt; SqlCommand myCmd = new...

JSON с русским текстом в юникоде
Экспериментирую как можно было бы выводить данные в json-формате непосредственно в файл с двумя обязательными условиями: 1) Поддержка...

8
 Аватар для planetoxod
251 / 162 / 24
Регистрация: 22.08.2014
Сообщений: 1,598
Записей в блоге: 1
04.11.2015, 13:33
Ansistring не помогает?
0
1 / 1 / 2
Регистрация: 18.12.2013
Сообщений: 239
05.11.2015, 07:22  [ТС]
Нет, попробовал, но результат тот же.
0
 Аватар для planetoxod
251 / 162 / 24
Регистрация: 22.08.2014
Сообщений: 1,598
Записей в блоге: 1
05.11.2015, 08:31
Напечатай что там на экране
Цитата Сообщение от mserg1972 Посмотреть сообщение
в начале выполнения программы-сохраняются левые
0
1 / 1 / 2
Регистрация: 18.12.2013
Сообщений: 239
05.11.2015, 10:28  [ТС]
Скрин приложен вроде к теме.
0
 Аватар для Mawrat
13113 / 5894 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
05.11.2015, 11:16
mserg1972, консольный ввод/вывод надо переключить на ту же кодовую страницу, что и редактор, в котором написан текст программы - CP1251 (Windows-1251).
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
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, Windows;
 
var
  S : String;
begin
  {Переключение окна консоли на кодовую страницу CP1251 (Win-1251).
  Если после переключения русские буквы показываются неверно,
  следует открыть системное меню консольного окна - щелчком мыши в левом
  верхнем углу окна консоли и выбрать:
  Свойства - закладка "Шрифт" - выбрать шрифт: "Lucida Console".}
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
 
  Write('Задайте текст: ');
  Readln(S);
  Writeln('Вы ввели текст: ', S);
 
  Readln;
end.
1
1 / 1 / 2
Регистрация: 18.12.2013
Сообщений: 239
05.11.2015, 13:06  [ТС]
Попробовал оба варианта но результат тот же.
Интересно то, что при выполнении предложенного вами кода:
1. При указании кодировке в коде программы - текст все равно кракозябры
2. При выборе в консоли шрифта-ваш пример работает корректно.

Но в моем примере все равно это не помогает, даже при изменении в консоли.
Почему ?

Приложил скан 1 варианта и скан, если меняю шрифт в консоли при выполнении моего кода.
Миниатюры
Как исправить ошибку с русским текстом  
Изображения
 
0
1234 / 424 / 107
Регистрация: 31.03.2012
Сообщений: 1,159
06.11.2015, 03:47
Цитата Сообщение от mserg1972 Посмотреть сообщение
При выборе в консоли шрифта-ваш пример работает корректно.
Возьми исходники русский язык в консоли и подключи к своей программе модуль CyrConsole

Не по теме:

работает только от Vista и выше

1
 Аватар для Mawrat
13113 / 5894 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
06.11.2015, 08:22
Лучший ответ Сообщение было отмечено mserg1972 как решение

Решение

Цитата Сообщение от mserg1972 Посмотреть сообщение
1. При указании кодировке в коде программы - текст все равно кракозябры
2. При выборе в консоли шрифта-ваш пример работает корректно.
Если в предустановках консоли Windows не задан шрифт Lucida Console или Consolas, то, да, при запуске придётся вручную выбирать какой-то из этих шрифтов:
Цитата Сообщение от Mawrat Посмотреть сообщение
Delphi
1
2
3
4
5
6
begin
  {Переключение окна консоли на кодовую страницу CP1251 (Win-1251).
  Если после переключения русские буквы показываются неверно,
  следует открыть системное меню консольного окна - щелчком мыши в левом
  верхнем углу окна консоли и выбрать:
  Свойства - закладка "Шрифт" - выбрать шрифт: "Lucida Console".}
Чтобы каждый раз не задавать шрифт вручную, можно задать его в предустановках консоли Windows. Для этого надо открыть консольное окно (запустив любую консольную программу) - в левом верхнем углу окна открыть системное меню - выбрать пункт "Умолчания" - перейти на вкладку "Шрифт" - в списке выбрать шрифт Lucida Console или Consolas.

В модуле, который предложил Joeymax, делаются подобные действия. Сначала для консольного ввода/вывода устанавливается кодовая страница CP1251. А затем - устанавливается шрифт Lucida Console:
Delphi
1
2
3
4
5
initialization
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  SetConsoleFont(14, 'Lucida Console');
end.
Но надо иметь в виду, что API функция задания шрифта SetCurrentConsoleFontEx() из kernel32.dll, которая вызывается в теле SetConsoleFont(), появилась в библиотеке, начиная с Windows Vista. Т. е., в прежних версиях Windows, например, в Windows XP, автоматическая установка шрифта работать не будет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.11.2015, 08:22
Помогаю со студенческими работами здесь

idhttp - работа с русским текстом
Проблема такая strRead = Http1-&gt;Get(strURL); русские буквы считываются каракулями - как их перевести или считать в нормальном виде?

Работа с русским текстом в linux
Пишу консольное приложение в Code::Blocks на Ubuntu 15.04. Выводит он русский текст и без всяких функций, а вот с чтением проблема,...

Проблема с русским текстом в форме
С некоторых пор введенный по-русски текст из формы передается в таком виде %CF%F0%EE%E1%EB%E5%EC%E0... как это вылечить?

Сохранение вебстраницы с русским текстом
написал код:using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; ...

SELECT не находит строку с русским текстом
Есть база данных в кодировке utf8: Структура 1 id int(12) UNSIGNED Нет Нет AUTO_INCREMENT 2 name ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
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