Свободное общение

Krinkels

Он где то тут
Администратор
А почему именно она?
А почему нет?

У меня при отладке почему-то никогда не было нужды в том, чтобы "ждать нажатия клавиш".
Про кодеблокс промолчу, там как бы автоматически консоль не закрывается после выполнения, а вот в студии я ничего похожего не нашел. Так что в ней либо через команду либо через батник, выбор не велик.
А вообще, как ты тогда видишь результат выполнения операций в консоли, ведь тебе же нет нужды "ждать нажатия клавиш"? :)
 

Mailchik

Старожил
Проверенный
SotM написал(а):
Просто не ясно, зачем запускать внешнюю команду операционки, когда есть готовая функция!
Я Вам еще раз объясняю: Я использую эту паузу для себя, чтобы видеть результаты, и только при компиляции...
SotM написал(а):
Но я с "рождения" знал об этой простой функции, как getch. Она существует не один десяток лет, и всегда есть в примерах.
Рад за вас!
 

SotM

Участник
Проверенный
Я бы до этого в бредовом сне не додумался бы - запуск внешней программы для того, чтобы ждать нажатия клавиши!
Даже гугл в первой же ссылке упоминает о getch!!!

Про кодеблокс промолчу, там как бы автоматически консоль не закрывается после выполнения, а вот в студии я ничего похожего не нашел. Так что в ней либо через команду либо через батник, выбор не велик.
У меня консольное окно в CodeBlocks тоже закрывается сразу.

А вообще, как ты тогда видишь результат выполнения операций в консоли, ведь тебе же нет нужды "ждать нажатия клавиш"? :)
Есть такая интересная вещь, наверное ты не слышал о такой: Breakpoint.
Зачем городить огород, когда есть обычные средства проверенные временем?! Зачем усложнять такие простые вещи?
 
Последнее редактирование:

Krinkels

Он где то тут
Администратор
Есть такая интересная вещь, наверное ты не слышал о такой: Breakpoint.
У каждого свое видение мира, и каждый использует те средства которые ему удобней. Так что спорить можно долго, а результат будет таким же.
 

SotM

Участник
Проверенный
У каждого свое видение мира, и каждый использует те средства которые ему удобней. Так что спорить можно долго, а результат будет таким же.
Вряд ли слово "удобней" здесь может быть применимо.

Писать лишний код, который по определению не нужен - плохая манера. Надеюсь хоть эту очевидную вещь не нужно объяснять? :)

Добавлено через 57 секунд
Я использую эту паузу для себя, чтобы видеть результаты, и только при компиляции...
Это понятно что "для себя", но почему именно эту команду?
 

Krinkels

Он где то тут
Администратор
Писать лишний код, который по определению не нужен - плохая манера.
Писать код для двойной компиляции, т.е. анси или юникод - это писать лишний код, и значит это плохая манера? :)

Это понятно что "для себя", но почему именно эту команду?
Тоже самое можно спросить и у тебя, почему ты используешь для такого бряки. Можно спросить и у меня, почему я для такого использую батники. :)
 

SotM

Участник
Проверенный
Писать код для двойной компиляции, т.е. анси или юникод - это писать лишний код, и значит это плохая манера? :)
В смысле?! Пример давай.

Тоже самое можно спросить и у тебя, почему ты используешь для такого бряки. Можно спросить и у меня, почему я для такого использую батники. :)
Кого-кого?! Что такое "бряки"?
 

Krinkels

Он где то тут
Администратор
[SOURCE="c"]#ifdef UNICODE
void convertUTF8 (char *OUTutf8, WCHAR *INutf16);
#else
void convertUTF8(char *OUTutf8, char *INansi);
#endif

#ifdef UNICODE
void convertUTF8 (char *OUTutf8, WCHAR *INutf16)
{
do {
UINT c = INutf16[0];
if (0xd800<=c && c<=0xdbff && 0xdc00<=INutf16[1] && INutf16[1]<=0xdfff)
c = (c - 0xd800)*0x400 + (UINT)(*++INutf16 - 0xdc00) + 0x10000;
if (c<=0x7F) *OUTutf8++ = c;
else if (c<=0x07FF) *OUTutf8++ = 0xC0|(c>> 6)&0x1F, *OUTutf8++ = 0x80|(c>> 0)&0x3F;
else if (c<=0xFFFF) *OUTutf8++ = 0xE0|(c>>12)&0x0F, *OUTutf8++ = 0x80|(c>> 6)&0x3F, *OUTutf8++ = 0x80|(c>> 0)&0x3F;
else *OUTutf8++ = 0xF0|(c>>18)&0x0F, *OUTutf8++ = 0x80|(c>>12)&0x3F, *OUTutf8++ = 0x80|(c>> 6)&0x3F, *OUTutf8++ = 0x80|(c>> 0)&0x3F;
} while (*INutf16++);
}
#else
void convertUTF8(char *OUTutf8, char *INansi)
{
int cchANSI = (MultiByteToWideChar(CP_ACP, 0, INansi, -1, NULL, NULL)) * 2;
WCHAR *pBuffer = (WCHAR *)GlobalAlloc(GPTR, cchANSI);
MultiByteToWideChar(CP_ACP, 0, INansi, -1, pBuffer, cchANSI);
WideCharToMultiByte(CP_UTF8, 0, pBuffer, -1, OUTutf8, cchANSI, NULL, NULL);
GlobalFree(pBuffer);
}
#endif[/SOURCE]

Что такое "бряки"?
breakpoint
 

SotM

Участник
Проверенный
[SOURCE="c"]#ifdef UNICODE
void convertUTF8 (char *OUTutf8, WCHAR *INutf16);
#else
void convertUTF8(char *OUTutf8, char *INansi);
#endif

#ifdef UNICODE
void convertUTF8 (char *OUTutf8, WCHAR *INutf16)
{
do {
UINT c = INutf16[0];
if (0xd800<=c && c<=0xdbff && 0xdc00<=INutf16[1] && INutf16[1]<=0xdfff)
c = (c - 0xd800)*0x400 + (UINT)(*++INutf16 - 0xdc00) + 0x10000;
if (c<=0x7F) *OUTutf8++ = c;
else if (c<=0x07FF) *OUTutf8++ = 0xC0|(c>> 6)&0x1F, *OUTutf8++ = 0x80|(c>> 0)&0x3F;
else if (c<=0xFFFF) *OUTutf8++ = 0xE0|(c>>12)&0x0F, *OUTutf8++ = 0x80|(c>> 6)&0x3F, *OUTutf8++ = 0x80|(c>> 0)&0x3F;
else *OUTutf8++ = 0xF0|(c>>18)&0x0F, *OUTutf8++ = 0x80|(c>>12)&0x3F, *OUTutf8++ = 0x80|(c>> 6)&0x3F, *OUTutf8++ = 0x80|(c>> 0)&0x3F;
} while (*INutf16++);
}
#else
void convertUTF8(char *OUTutf8, char *INansi)
{
int cchANSI = (MultiByteToWideChar(CP_ACP, 0, INansi, -1, NULL, NULL)) * 2;
WCHAR *pBuffer = (WCHAR *)GlobalAlloc(GPTR, cchANSI);
MultiByteToWideChar(CP_ACP, 0, INansi, -1, pBuffer, cchANSI);
WideCharToMultiByte(CP_UTF8, 0, pBuffer, -1, OUTutf8, cchANSI, NULL, NULL);
GlobalFree(pBuffer);
}
#endif[/SOURCE]
Здесь я уж не знаю почему так. Есть предположение, что первая функция для кроссплатформенного компилирования, а вторая чиста для Винды. Ведь второй функции пофиг что ей передается, будь то wchar, будь то char.

Ааа, ну так и говори что брэйкпоинт.
 
Последнее редактирование:

Krinkels

Он где то тут
Администратор
Здесь я уж не знаю почему так. Есть предположение, что первая функция для кроссплатформенного компилирования, а вторая чиста для Винды. Ведь второй функции пофиг что ей передается, будь то wchar, будь то char.
А вот и не угадал. Это часть сорца плагина для NSIS ;)
 

Krinkels

Он где то тут
Администратор

SotM

Участник
Проверенный
Ладно, на этот раз прощается ;)

Ну почему, будет работать. Этот код чисто как пример, не более
Вот и спроси их, зачем так они извращаются? Если я не ошибаюсь, то можно и так написать:

Код:
#ifdef UNICODE 

void convertUTF8 (char *OUTutf8, WCHAR *INutf16)
{
convertUTF8_internal( OUTutf8, (char *)INutf16 )
}     

#else

void convertUTF8 (char *OUTutf8, char *INansi)
{
convertUTF8_internal( OUTutf8, INansi )
}     

#endif

   static void convertUTF8_internal(char *OUTutf8, char *INansi)
   {
      int cchANSI = (MultiByteToWideChar(CP_ACP, 0, INansi, -1, NULL, NULL)) * 2;
      WCHAR *pBuffer = (WCHAR *)GlobalAlloc(GPTR, cchANSI);
      MultiByteToWideChar(CP_ACP, 0, INansi, -1, pBuffer, cchANSI);
      WideCharToMultiByte(CP_UTF8, 0, pBuffer, -1, OUTutf8, cchANSI, NULL, NULL);
      GlobalFree(pBuffer);
   }
 

SotM

Участник
Проверенный
Krinkels написал(а):
Не-не-не, это твой вариант кода ты и пробуй
Вот как найдется время так и попробую.

У каждого свое видение мира, и каждый использует те средства которые ему удобней. Так что спорить можно долго, а результат будет таким же.
И опять же... Кто-то для того, чтобы забить гвоздь использует молоток, а кто-то отвертку / плоскогубцы / утюг. При этом последние говорят "мне так удобней".
 

ProFrager

Знаток
Проверенный
SotM, а ты хочешь пошатнуть их веру? Твоя вера ничем не отличается от их и доказать свою правоту тебе не удастся.
 

SotM

Участник
Проверенный
Ne0N, а зачем мне доказывать то, что является фактом? :)
Я же говорю, есть готовый и простой инструмент, а кто хочет чтобы ему "так нравилось" тот может хоть головой гвоздь забивать. Ему ведь никто не запретит это делать. :)

Вспоминается старый добрый закон Мерфи (лет этак 15-20 назад): "Если существует инструкция, которая абсолютно идеально объясняет по пунктам как и что нужно делать, то обязательно найдётся хотя бы один дурак, который поймёт её неправильно".

P.S. Вера и знание - две абсолютно разные вещи (это так, для тех кто не знает).
 

LexBell

Борода
Супер модератор
Вот уж не думал, что из-за одной строчки кода могут разгореться такие страсти. Господа модераторы, какой пример вы подаете пользователям?
Товарищ SotM, загляните в скайп, хочу Вас помучить немного..
 
Сверху