• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

EditBox

  • Автор темы iktomy
  • Дата начала
Статус
Закрыто для дальнейших ответов.
I

iktomy

Привет всем! Visual C++ 6 & MFC
Такая вот фигня получается: Имеется форма с двумя эдитами. В первый пишу слово - название месяца. Во вторую должно выводить такую строку - "номер месяца" и само слово месяц в зависимости от падежа. Например пишу "октября", а должно вывести "10 месяца". Присвоил эдитам переменные m_Input и m_Output типа CString. В функцию кнопки ввел код:
Код:
CString jan[]  = {"январь", "января",  "январю", "январем", "январе"};
 CString febr[]  = {"февраль", "февраля", "февралю", "февралем", "феврале"};
 CString march[]  = {"март", "марта", "марту", "мартом", "марте"};
 CString april[]  = {"апрель", "апреля", "апрелю", "апрелем", "апреле"};
 CString may[]  = {"май", "мая", "маю", "маем", "мае"};
 CString june[]  = {"июнь", "июня", "июню", "июнем", "июне"};
 CString july[]  = {"июль", "июля", "июлю", "июлем", "июле"};
 CString august[]= {"август", "августа", "августу", "августом", "августе"};
 CString sept[]  = {"сентябрь", "сентября", "сентябрю", "сентябрем", "сентябре"};
 CString octob[]  = {"октябрь", "октября", "октябрю", "октябрем", "октябре"};
 CString novem[]  = {"ноябрь", "ноября", "ноябрю", "ноябрем", "ноябре"};
 CString decem[]  = {"декабрь", "декабря", "декабрю", "декабрем", "декабре"};
  CString month[]  = {"месяц", "месяца", "месяцу", "месяцем", "месяце"};
  for(int i=0; i<5; i++)
 {
   if(m_Input == jan[i])
   {
     UpdateData(TRUE);
     m_Output += "1 ";
     m_Output += month[i];
     UpdateData(FALSE);
   }
 }

 for(int i=0; i<5; i++)
 {
   if(m_Input == febr[i])
   {
     UpdateData(TRUE);
     m_Output += "2 ";
     m_Output += month[i];
     UpdateData(FALSE);
   }
 }
 // и т.д. пока все месяцы не перебру
В OnInitDialog установил русскую раскладку языка LoadKeyboardLayout("00000419", KLF_ACTIVATE).
Но нифига не получается. Не выводит во второй эдит того, что мне нужно. Пробовал вместо m_Input == jan делать m_Input.CompareNoCase( jan) == 0 (и просто Compare пробовал) - результат тот же. Что делать - ума не приложу. Хелп ми плиз, кто чем может.
 
I

iktomy

<!--QuoteBegin-iktomy+15:10:2004, 11:18 -->
<span class="vbquote">(iktomy @ 15:10:2004, 11:18 )</span><!--QuoteEBegin-->
Код:
  for(int i=0; i<5; i++)
 {
   if(m_Input == febr[i])
   {
     UpdateData(TRUE);
     m_Output += "2 ";
     m_Output += month[i];
     UpdateData(FALSE);
   }
 }
[/quote]
А оказывается все очень просто:
Надо только поменять положение UpdateData(TRUE) в коде -
Код:
for(int i=0; i<5; i++)
{
  UpdateData(TRUE);
  if(m_Input == febr[i])
  {    
    m_Output += "2 ";
    m_Output += month[i];
    UpdateData(FALSE);
  }
}
И всего то делов!
Огромное спасибо за подсказку чукотскому шаману craftyfox'у :)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!