Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Борьба с крякозябрами в консольном приложении 
:(
    Опции темы
Mastodont
Дата 25.9.2009, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 18.3.2007

Репутация: нет
Всего: 1



Пытаюсь бороться с крякозябрами в консольном приложении:
Нашел статью http://www.rsdn.ru/article/qna/ui/concp.xml. В ней описаны несколько способов:
1) Набрать текст программы в редакторе консольного файл-менеджера - это значит билдером сохранить cpp-файл, а затем открыть его редактором файл-менеджера?
3) Смена шрифта. В статье написано про Visual C++. А как изменить шрифт в билдере?
PM MAIL   Вверх
mrbrooks
Дата 25.9.2009, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Mastodont @  25.9.2009,  09:01 Найти цитируемый пост)
А как изменить шрифт в билдере? 

CharToOem.

зы. лично у меня с локалями в Билдере , когда этим интересовался, не получалось. Сейчас может быть и поддерживают.
PM MAIL   Вверх
prom1856
Дата 29.9.2009, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 29.9.2009

Репутация: нет
Всего: нет



В смысле крякозябры когда килиллицу выводишь?
Тогда вот так:
#include <vcl.h>
#pragma hdrstop
#include "iostream.h"
#include <system.hpp>
#pragma argsused
int main(int argc, char* argv[])
{
    char *str;
    //или
    //char str[100];
    CharToOem("йцукенг",str);
    cout << str;
    Sleep(3000);
    return 0;
}
Это схема, а вообще CharToOem лучше вынести в отдельную функцию, в нее передавать исходную строку.
PM MAIL   Вверх
Mastodont
Дата 29.9.2009, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 18.3.2007

Репутация: нет
Всего: 1



Цитата

CharToOem лучше вынести в отдельную функцию, в нее передавать исходную строку

Интересная мысль.

Я сделал так:
Код

#include <stdio.h>
#include <iostream.h>
#include <windows.h>
int main(int args, char* pszArgs[])
{
 system("chcp 1251");
 cout << "Здравствуй, Мир!"
 system("pause");
}

К тому же в свойствах консоли установил шрифт Lucuida Console. Теперь русские буквы выводит прекрасно  smile 
PM MAIL   Вверх
dumb
Дата 29.9.2009, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



Код
#pragma hdrstop
#include <windows.h>
#include <stdio.h>
#include <iostream.h>
int main(int argc, char* argv[])
{
  UINT oldcp = GetConsoleOutputCP();
  SetConsoleOutputCP(1251);
  cout << "Здравствуй, Мир!" << endl;
  cin.get();
  SetConsoleOutputCP(oldcp);
  return 0;
}

PM MAIL   Вверх
prom1856
Дата 29.9.2009, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 29.9.2009

Репутация: нет
Всего: нет



В vs,   если в main() включить функцию setlocale(LC_ALL,NULL), то тогда вообще больше ничего не надо делать. Да вот почему-то в билдере это не катит.
PM MAIL   Вверх
Mastodont
Дата 11.11.2009, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 18.3.2007

Репутация: нет
Всего: 1



А вот так написать грамотно?
Код

#include <stdio.h>
#include <iostream.h>
#include "windows.h"

int rustext(char str[])
{
CharToOem(str,str);
cout << str;
}

int main(int argc, char* argv[])
{
    rustext("Всем привет\n");
    system("pause");
    return 0;
}

Консоль руками настраивать не приходится. Все делает ф-ция CharToOem.
PM MAIL   Вверх
cristaloleg
Дата 11.11.2009, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 15.6.2009
Где: Donetsk

Репутация: нет
Всего: нет



Цитата(prom1856 @ 29.9.2009,  07:16)
В vs,   если в main() включить функцию setlocale(LC_ALL,NULL), то тогда вообще больше ничего не надо делать. Да вот почему-то в билдере это не катит.

вроде так надо: setlocale(LC_CTYPE, "Hello World")
PM   Вверх
SenkraD
Дата 11.11.2009, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



вообще, по стандарту так
Код
// imbue example
#include <iostream>
#include <locale>
using namespace std;
  
int main()
{
    locale mylocale("platform depended locale name");      // Construct locale object with the user's default preferences
    cout.imbue(mylocale );   // Imbue that locale
    cout << (double) 3.14159 << endl;
    return 0;
}
Код
27.4.2.3 ios_base locale functions
     locale imbue(const locale& loc);
Effects: Calls each registered callback pair (fn,index) (27.4.2.6) as
(*fn)(imbue_event,*this,index) at such a time that a call to ios_base::getloc()
from within fn returns the new locale value loc.
Returns: The previous value of getloc().
Postcondition: loc == getloc().
    locale getloc() const;
Returns: If no locale has been imbued, a copy of the global C  +  + locale, locale(), in effect at the time of
construction. Otherwise, returns the imbued locale, to be used to perform locale-dependent input and
output operations.


Это сообщение отредактировал(а) SenkraD - 11.11.2009, 16:20


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.2403 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.