Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2006-04-26

Re: Проблема с переключением языка в XP [D3, Win95/98, WinXP]

Hello Oleg,

Monday, April 10, 2006, 8:41:43 AM, you wrote:

OP> Доброго дня!
OP> У меня возникла проблема с переключением языка ввода в ХР. Ситуация
OP> такая. Есть приложение написанное на Delphi 3. В windows 98 работает без
OP> проблем, а вот в ХР переключение языка ввода работает странно. Сочетание
OP> клавишь то работает, то не работает, при этом в языковой панели
OP> обозначение языка вообще не меняется. Если менять язык мышкой, то язык
OP> меняется, а вот обозначения языка со второго раза. Например, что бы
OP> переключиться мышкой на русский, надо два раза щелкнуть. С первого раза
OP> русский уже работает, со второго меняется обозначение на русский.
OP> Что можно с этим всем сделать?

Такое часто бывает при установке хуков, которые не вызывают CallNextHookEx.
Фактически стоит только раз в ХР пропустить такой вызов и переключалка языка
начинает глючить независимо от дальнейшей выгрузки биб-ки.

   2006-04-26 20:55:18 (#542162)

Re: "Регулярные выражения"

V> Вот к примеру есть такой текст:
V> LowerCase(DateTimeToStr(Now));
V> Возможно ли вообще, и если да то как, проверить парность всех скобок?

Сильно сомневаюсь, что возможно - хотя бы даже потому, что может быть
и такое выражение:
LowerCase((DateTimeToStr(Now)+")");
Выражение неверно, но пары скобок имеются.

Или
LowerCase(DateTimeToStr(Now)); // )
Выражение верно, но одна скобка лишняя.

Имхо, тут нужно два прохода, даже при подходе без регулярных выражений
- первым исключаем все ненужные скобки (вырезаем текст между каждой
нечётной и чётной кавычками, между символами /* и */ и всё что дальше
//).
- вторым реально считаем. Причём считать лучше всего навстречу - т.е.
сначала находишь открывающую скобку (запоминаешь индекс A), потом
начинаешь с конца, если находишь закрывающую, тоже запоминаешь но в B
и начинаешь опять искать с A. Если в процессе поиска B, ты доходишь до
A или натыкаешся на открывающую скобку - выражение неверно. Цикл
оканчивается положительно, когда при поиске очередной открывающей
скобки, ты доходишь до B, которая с самого начала должна быть равна
длине строки.

Провернуть всё это регулярными - нереально.

Номер выпуска : 5297
Возраст листа : 948 (дней)
Количество подписчиков : 544
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/542018
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2006-04-26 15:21:51 (#542018)

Re: "Регулярные выражения"

Здравствуйте, VITO!

> Вот к примеру есть такой текст:
>
> LowerCase(DateTimeToStr(Now));
>
> Возможно ли вообще, и если да то как, проверить парность всех скобок?

Например так:

Счетчик = 0.
Читать по одному символу, слева направо.
Если символ - открывающая скобка, увеличить счетчик на 1.
Если символ - закрывающая скобка, уменьшить счетчик на 1.
Если в конце строки счетчик равен нулю - все правильно.
Если в конце строки счетчик больше нуля - не все скобки закрыты.
Если в конце строки счетчик меньше нуля - закрывающих больше.
С уважением, AleX

Номер выпуска : 5296
Возраст листа : 948 (дней)
Количество подписчиков : 544
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/541829
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2006-04-26 03:27:28 (#541829)

Re[4]: Течет ручей, бежит ручей. И ты ничья и я ничей.

Hello Ischuk,

Tuesday, April 25, 2006, 3:18:16 PM, you wrote:

Deni_S>> // Получаем DC для рисования
Deni_S>> HDC hDC = ::GetDC (GetSafeHwnd());
IP> Вот тут, я не понял...Зачем те вызывать GetSafeHwnd она же (выдержка
IP> из МСДН) Returns the window handle for a window. Returns NULL if the CWnd
is
IP> not attached to a window or if it is used with a NULL CWnd pointer.
Все время без сбоев работало (для диалоговых окошек). Поясню, поскольку
это было написано в классе кнопки, то GetSafeHwnd() вовращало хэндл окошка кнопки.
::GetDC использовался апишный. Тут все нормально - проверял.

IP> static bool bLoadOne=true;
IP> CBitmap *pOldBitmap;
IP> CBitmap newBitmap;
IP> if(bLoadOne)
IP> newBitmap.LoadBitmap(IDB_BITMAP_ONE);
IP> else
IP> newBitmap.LoadBitmap(IDB_BITMAP_TWO);
IP> CDC *pDC;
IP> pDC=((CButton*)GetDlgItem(ID_KNOPKA))->GetDC();
IP> CDC memDC;
IP> memDC.CreateCompatibleDC(pDC);
IP> pOldBitmap=memDC.SelectObject(&newBitmap);
IP> pDC->BitBlt(10,3,18,15,&memDC,0,0,SRCCOPY);
IP> memDC.SelectObject(pOldBitmap);
IP> bLoadOne=!bLoadOne;
Вот он - свет в конце туннеля. Выручил, Павел - ручей перекрыт.
Только в конце ты забыл ReleaseDC (pDC); иначе утечки шли
и дальше (не зря я сидел с книгой в обнимку :)

   2006-04-26 02:29:00 (#541822)

"Регулярные выражения"

>, comp

Вот к примеру есть такой текст:

LowerCase(DateTimeToStr(Now));

Возможно ли вообще, и если да то как, проверить парность всех скобок?

   2006-04-26 02:28:50 (#541821)