On-line: Pasha, PSP, гостей 2. Всего: 4 [подробнее..]
АвторСообщение
постоянный участник


Пост N: 1
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 21.04.09 15:43. Заголовок: Помогите советом начинающему...


Тут вот надумал переползти на xHarbour. Возникла следующая проблема: имена всех функций и подпрограмм дополняются префиксом HB_FUN_. А можно ли этого избежать так, чтобы остались родные, начальные имена. У меня весь софт построен на скриптах, в которых уже стоят вызовы функций и процедур по привычным, родным именам. И перелопатить везде в 5000 текстовых файлах-скриптах вызовы функций и поменять на новые - задача крайне утомительная с непонятной перспективой на успех.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 294 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


постоянный участник




Пост N: 890
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.07.09 21:32. Заголовок: Urri пишет: 2. Можн..


Urri пишет:

 цитата:
2. Можно ли заставить xHarbour реагировать на нажатие CTRL/ALT/(буква, цифра или Enter). В клиппере это срабатывало без проблем, а здесь никак. А пользователи привыкли к определенным комбинациям и переучить их очень трудно. Да и для своих нужд эти кнопки приспособили, привыкли.
3. Клавиатура настроена на 3 раскладки: лат/рус/укр. Нажатие левый Alt/(буква) работает при любой из трех раскладок, а вот правый Alt/(буква) работает только при лат. или рус., а при укр. - не работает. С чего бы это?



Форум заключен не только на этой странице...
Смотри http://clipper.borda.ru/?1-4-15-00000452-000-0-0-1245391628

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 130
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 31.07.09 08:32. Заголовок: Доброе утро. Andrey..


Доброе утро.

Andrey пишет:

 цитата:
Форум заключен не только на этой странице...
Смотри http://clipper.borda.ru/?1-4-15-00000452-000-0-0-1245391628



Нечего тут строгость разводить. Я конечно уже эту страницу видел. Предложенным там способом не воспользовался, сделал по-своему и меня все устраивало до того момента, пока не пришлось добавить еще и укр. раскладку. А вот на ней правый Alt/буква вообще никак не реагирует, так же как и при нажатии CTRL/ALT/(цифра,буква). В предыдущем письме AlKresin предположил, что "Windows берет обработку таких сочетаний на себя, не передавая их пользовательской программе". Ну может в такой ситуации это и понятно (а почему тогда для Клиппера Windows ленился брать обработку на себя), а вот почему для рус. правый ALT/буква работает, а для укр. правый ALT/буква - снова "берет обработку на себя"


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 727
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 31.07.09 11:35. Заголовок: Urri пишет: Ну може..


Urri пишет:

 цитата:
Ну может в такой ситуации это и понятно (а почему тогда для Клиппера Windows ленился брать обработку на себя)


Если бы вы за три месяца статуса "начинающего" не ленились хоть что-то узнать о модели ввода с клавиатуры в Windows и о исполнении 16 битных программ в Win32, вы бы таких вопросов не задавали. В общем RTFM.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 133
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 13.08.09 21:55. Заголовок: Добрый вечер. Подска..


Добрый вечер. Подскажите....

Имеется такая скромная ф-ци

function rupper(txt)
return upper(txt) (по тексту понятно: переводит txt в верхний регистр)

Стал замечать странности в работе, а также отсутствие такого перевода для украинской кодовой страницы заставило вспомнить давно и успешно работающую с Клиппером Си - шную ф-цию.
Была исправлена под xHarbour согласно рекомендациям AlKresin и теперь имеет такой вид

HB_FUNC( RUPPER )
{
/* par1 - исх.строка */
int i,j,n=hb_parclen(1);
char *str=hb_parc(1),*str1;

str1 = hb_xgrab( n );
memcpy( str1, str, n );
for(i=0;i<n;i++) { j=str1;
if (j<'a') continue;
if ((j>='а') && (j<='п')) { str1-='\x20'; continue; };
if ((j>='р') && (j<='я')) { str1-='\x50'; continue; };
if ((j>='a') && (j<='z')) { str1-='\x20'; continue; };
if (j=='ё') { str1='Ё'; continue; };
if (j=='є') { str1='Є'; continue; };
if (j=='ї') { str1='Ї'; continue; };
};

if( ISBYREF(1) )
hb_storclen( str1, n, 1 ) ;

hb_retclen_buffer( str1, n );
}

После этого все сломалось, программа вылетает с кодом 9003. И что я сделал не так?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1204
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.08.09 08:20. Заголовок: А ошибка часом не 90..


А ошибка часом не 9023 ?
Она возникает, если hb_xgrab вызывается с параметром 0
т.е, надо изменить вызов на
str1 = hb_xgrab( n + 1 );

либо добавить проверку на 0

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 134
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 14.08.09 10:26. Заголовок: Павел, спасибо за от..


Павел, спасибо за ответ. Я уже попадался на такую ошибку, но, как говорил Шарапов, глаз "замылился"

Добавил перед строкой
str1 = hb_xgrab( n );

такой текст:

if (n==0) {
hb_retclen( str, n );
return; }

Продолжает вылетать с ошибкой как и раньше.

Тогда я еще заменил на (это из разряда дополнительной перестраховки)
str1 = hb_xgrab( n+1 );

На удивление, вылетать перестало, но работает неправильно: в верхний регистр не переводит (Си-шная ф-ция из Клиппера никогда не подводила)

Подскажи еще, пожалуйста, ф-ция hb_retclen_buffer( str1, n ); освобождает буфер, распределенный по hb_xgrab( n ); , или нужно заботиться об этом дополнительно и применять hb_xfree (str1);?


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1205
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.08.09 11:12. Заголовок: Urri пишет: Подскаж..


Urri пишет:

 цитата:
Подскажи еще, пожалуйста, ф-ция hb_retclen_buffer( str1, n ); освобождает буфер, распределенный по hb_xgrab( n ); , или нужно заботиться об этом дополнительно и применять hb_xfree (str1);?



Нет, вызывать hb_xfree не надо.
Странно, у меня такая функция сработала - строку в верхний регистр перевела.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 135
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 14.08.09 11:56. Заголовок: Pasha пишет: Странн..


Pasha пишет:

 цитата:
Странно, у меня такая функция сработала - строку в верхний регистр перевела.



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

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1206
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.08.09 16:42. Заголовок: Сделайте так: HB_..


Сделайте так:


 цитата:

 
HB_FUNC( RUPPER )
{
/* par1 - исх.строка */
int i,n=hb_parclen(1);
char *str=hb_parc(1),*str1;
unsigned char c;

str1 = hb_xgrab( n + 1 );
memcpy( str1, str, n );
for(i=0;i<n;i++) { c=str1;
if (c<97) continue;
if ((c>=160) && (c<=175)) { str1-='\x20'; continue; };
if ((c>=224) && (c<=239)) { str1-='\x50'; continue; };
if ((c>=97) && (c<=122)) { str1-='\x20'; continue; };
if (c==241) { str1='Ё'; continue; };
if (c==243) { str1='Є'; continue; };
if (c==245) { str1='Ї'; continue; };
};

if( ISBYREF(1) )
hb_storclen( str1, n, 1 ) ;

hb_retclen_buffer( str1, n );
}




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 136
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 15.08.09 12:35. Заголовок: Спасибо Павел. Я тож..


Спасибо Павел. Я тоже такой выход уже нашел: добавил промежуточной печати и получил для 'а' отрицательное число (и для других явных литералов тоже). Поставил конкретные коды вместо литералов - все заработало. Это что - особенности С для Нарбора? И почему нужно выделять на один байт больше, чем нужно, если я точно знаю, что строка для преобразования не пустая?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1207
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 17.08.09 09:42. Заголовок: Urri пишет: Это что..


Urri пишет:

 цитата:
Это что - особенности С для Нарбора?



Нет таких особенностей
см. флаги bcc32:

-K Default char is unsigned

по умолчанию этот флаг выключен, т.е. константы char будут signed
Если это флаг установить, то эти константы будут unsigned, и их можно сравнивать с int.


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1208
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.08.09 09:31. Заголовок: Urri пишет: И почем..


Urri пишет:

 цитата:
И почему нужно выделять на один байт больше, чем нужно, если я точно знаю, что строка для преобразования не пустая?



Вчера не заметил этот вопрос
Если есть проверка на 0 перед hb_xgrab, то ее можно вызывать с параметром n
Если такой проверки нет, то надо вызывать hb_xgrab(n+1), чтобы избежать ошибки 9023

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 137
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 19.08.09 13:03. Заголовок: Pasha пишет: Если е..


Pasha пишет:

 цитата:
Если есть проверка на 0 перед hb_xgrab, то ее можно вызывать с параметром n
Если такой проверки нет, то надо вызывать hb_xgrab(n+1), чтобы избежать ошибки 9023



Проверка конечно есть, но даже с проверкой приходится выделять (n+1), вот что интересно. Иначе работает с ошибкой.
(проверил сейчас еще раз)

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 25.08.09 13:13. Заголовок: Помогите новичку,пож..


Помогите новичку,пожалуйста!
Проблема в следующем: есть DBF-файл в ДОС кодировке.
При попытке вывести его в TBrowse вместо русских букв крякозябры
Причем крякозябры одинаковые при USE wrmo0907 CODEPAGE "RU866" и
USE wrmo0907 CODEPAGE "RU1251"
Русские буквы появляются только при использовании шрифта Terminal,
но тогда заголовки колонок крякозябрами
Что делать?

Спасибо: 0 
Цитата Ответить
Ответов - 294 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 148
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет