On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение





Пост N: 86
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 11.08.13 18:47. Заголовок: Перехожу с Clipper 5.2e на Harbour, список вопросов от "новичка"


Добрый день, уважаемые коллеги.

Большое спасибо за море справочной информации по переходу, но нужно ещё пнуть меня в нужном направлении.

Итак, установил Harbour 3.0 + BCC 5.5.1 ==>> 3.2.0 +minGW скомпилировал и запустил традиционный "Hello, world!"
Дело перешло к проекту, из-за которого собственно и речь. Компилируется что через hbmk2, что самим харбором - без ошибок, всего с парой предупреждений, что меня немало удивило.
Возникли ошибки на этапе линковки:

Скрытый текст

Help, please - что делать и куды бечь ?

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


администратор




Пост N: 3536
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.09.13 22:42. Заголовок: Sergy пишет: символ..


Sergy пишет:

 цитата:
символы CHR(16) заменяются на "?" и соотв. выводятся назад уже не в виде треугольников, а в виде знаков вопроса.


Простой и понятный исходник сюда. У себя такого не наблюдал.

PS
GTWVT

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




Пост N: 2975
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.09.13 23:01. Заголовок: Sergy пишет: А може..


Sergy пишет:

 цитата:
А может быть какая-нибудь петрушка с SAVESCREEN / RESTSCREEN ?



Совершенно непонятно, в чем заключается ваша проблема. Разве трудно сделать простейшие тесты, чтобы проверить, как работает кодовая страница в rdd, вроде такого:

REQUEST HB_CODEPAGE_RU866
hb_cdpSelect( "RU866" )
dbCreate('aa', {{'CC','C',1,0}},, .t., 'aa',, 'RU866')
for i := 0 to 255
aa->(dbAppend())
aa->CC := Chr(i)
next

и посмотреть на выходной файл ?
Да и протестировать savescreen/restscreen ?

@ 0,0 say chr(16)
cc := SaveScreen(0,0,0,0)
RestScreen(0,2,0,2,cc)


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



Пост N: 35
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 09.09.13 06:49. Заголовок: chr(16) - треугольник, это из Dos(Clipper)


Нет никакой перекодировки и треугольника уже нет
Просто в используемом Вами шрифте на этом месте другое изображение.
Есть стандартноая утилита Windows TableMap ( Пуск\Все программы\Служебные\Таблица символов)
Если треугольник сильно нужен, можно создать свой шрифт.

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





Пост N: 268
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 09.09.13 09:36. Заголовок: Все эти выкладки кон..


Все эти выкладки конечно здорово, но факт остается фактом... :(

По поводу шрифта - тестировал Lucida Console. Эффект повторяется 1:1. 900 вызовов проходят нормально, а один - корявится. Поэтому пока не могу создать тест...

Такая вот петрушка.

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




Пост N: 2976
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.09.13 10:00. Заголовок: Так огласите наконец..


Так огласите наконец-то, что за факт. Все телепаты в отпуске. Сначала вы говорили что-то перекодировку в use, потом про savescreen. Трудно отвечать на незаданный вопрос, а разгадывать шарады не хочется.

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





Пост N: 269
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 09.09.13 10:11. Заголовок: Pasha пишет: Так ог..


Pasha пишет:

 цитата:
Так огласите наконец-то, что за факт. Все телепаты в отпуске. Сначала вы говорили что-то перекодировку в use, потом про savescreen. Трудно отвечать на незаданный вопрос, а разгадывать шарады не хочется.



Есть функция SaveConsole(), которая делает SAVESCREEN и кладет его в локальную DBF таблицу, чтобы не расходовать память. Ровно в одном месте программы в таблицу стали попадать символы "?" вместо CHR(16).

И соотв. при восстановлении экрана в RestConsole() происходит RESTSCREEN(0,0,MAXROW(),MAXCOL(), console->buffer)

Ровно в одном месте программы.

Первая мысль была на USE ... CODEPAGE. Спросил, знающий человек быстро откликнулся (за что ему спасибо), проверил - не помогло.
Стал копать дальше. Оказывается, SAVESCREEN именно в этом месте программы возвращает "испорченные" коды. Которые попадают в таблицу и USE уже ни причем - он пишет в таблицу то, что ему вернул SAVESCREEN().

Во всей программе все работает как нужно. В этом, одном, единственном месте, написанном на чистом Clipper безо всяких наворотов - такая вот петрушка...

Поэтому, собственно, пока единственный вопрос - были ли у кого-нить на Harbour проблемы с SAVESCREEN() / RESTSCREEN() или нет.

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


Пост N: 928
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 09.09.13 10:30. Заголовок: Я никогда, даже во в..


Я никогда, даже во времена работы с Клиппером, не сохранял экраны в dbf.
Просто делал сохранение в массив, выполнявший роль стека LIFO (last in first out). Даже с Клиппером память ни разу не исчерпалась.


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




Пост N: 3537
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.09.13 10:36. Заголовок: PSP пишет: Я никогд..


PSP пишет:

 цитата:
Я никогда, даже во времена работы с Клиппером, не сохранял экраны в dbf.


+1

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



Пост N: 36
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 09.09.13 10:56. Заголовок: символы "?" вместо CHR(16) - это несравнимо по определению


символы "?" ( это картинка) вместо CHR(16) ( а это - число,байт,...)
Либо - символы "?" вместо символа "x" ,
либо CHR(n) вместо CHR(16)

Сохраняейте в бинарный файл (типа TXT) и смотрите содержимое любым Hex-вьюером(editor)

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





Пост N: 270
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 09.09.13 11:06. Заголовок: PSP пишет: Я никогд..


PSP пишет:

 цитата:
Я никогда, даже во времена работы с Клиппером, не сохранял экраны в dbf.
Просто делал сохранение в массив, выполнявший роль стека LIFO (last in first out). Даже с Клиппером память ни разу не исчерпалась.



Выключить эту опцию сегодня - дело трех строчек кода. Наверное так и сделаю. Но это пока не решает этого мелкого вопросика, о котором речь.

petr707 пишет:

 цитата:
символы "?" ( это картинка) вместо CHR(16) ( а это - число,байт,...)
Либо - символы "?" вместо символа "x" ,
либо CHR(n) вместо CHR(16)

Сохраняейте в бинарный файл (типа TXT) и смотрите содержимое любым Hex-вьюером(editor)



Символ CHR(16) - это такой треугольник, который изображает, что данный пункт имеет вложенное подменю.
Например: "Документы >" при выборе этого пункта вызывается меню с документами.

После SAVESCREEN/RESTSCREEN получается так: "Документы ?"

т.е. вместо CHR(16) получается CHR(63) - как раз выяснилось из сравнения слитых в txt результатов SAVESCREEN()
Надеюсь, что понятно объяснил.

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


Пост N: 929
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 09.09.13 11:14. Заголовок: А какой тип поля в d..


А какой тип поля в dbf?

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




Пост N: 2977
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.09.13 11:32. Заголовок: Символ CHR(16) - это..



 цитата:
Символ CHR(16) - это такой треугольник, который изображает, что данный пункт имеет вложенное подменю.
Например: "Документы >" при выборе этого пункта вызывается меню с документами.



Я точно также отмечаю меню с подменю символом Chr(16), и тоже использую при этом savescreen/restscreen. Правда, сохраняю все в структурах типа стек. Проблем не возникало.


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





Пост N: 271
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 09.09.13 12:28. Заголовок: PSP пишет: А какой ..


PSP пишет:

 цитата:
А какой тип поля в dbf?


CHAR, с размером ширина*высота экрана * 2 (для атрибутов)

Pasha пишет:

 цитата:
Я точно также отмечаю меню с подменю символом Chr(16), и тоже использую при этом savescreen/restscreen. Правда, сохраняю все в структурах типа стек. Проблем не возникало.



Сейчас стало совершенно понятно, что структуры точно не причем. RESTSCREEN() возвращает вместо треугольника знак вопроса.

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



Пост N: 926
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 09.09.13 12:52. Заголовок: Sergy пишет: RESTSC..


Sergy пишет:

 цитата:
RESTSCREEN() возвращает вместо треугольника знак вопроса.

Самодостаточный пример в студию, как говорится.

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




Пост N: 3538
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.09.13 13:47. Заголовок: Sergy А вот так буд..


Sergy
А вот так будут BAD ? ;)

 
proc main
local csave
local csave1
local i
cls

for i=1 to 10000
@ 10,10 say chr(16) color "gr+/r"

csave:=savescreen(10,10,10,10)

if left(csave,1)#chr(16)
? "Bad Savescreen "
wait
endif
@ 10,10 say " " color "n/n"

restscreen(10,10,10,10,csave)

csave1:=savescreen(10,10,10,10)
if left(csave1,1)#chr(16)
? "Bad Restscreen"
wait
endif


next

return


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





Пост N: 272
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 09.09.13 13:59. Заголовок: AlexMyr пишет: Само..


AlexMyr пишет:

 цитата:
Самодостаточный пример в студию, как говорится.



Если-бы было все так просто... Из нескольких сотен вызовов SAVESCREEN/RESTSCREEN все работает ровно. Заковыка только в одном-единственном. Может еще где есть в программе - там вызовов десятки, если не сотни разбросаны. Ведь все происходит довольно быстро: SAVESCREEN - диалог - RESTSCREEN и практически сразу идет перепрорисовка меню. Заметить сложно.

Пока вычислил один, но совершенно точно - врет... Либо глюк.

Dima пишет:

 цитата:
Sergy
А вот так будут BAD ?



Вечером смогу ответить.

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


Пост N: 930
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 09.09.13 14:13. Заголовок: Sergy пишет: Заковы..


Sergy пишет:

 цитата:
Заковыка только в одном-единственном


Пошагово выполнить программу. Может там действительно перед выполнением savescreen() знаки вопроса на экране.

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





Пост N: 273
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 09.09.13 22:21. Заголовок: Dima пишет: Sergy ..


Dima пишет:

 цитата:
Sergy
А вот так будут BAD ?



Не очень понял смысла кода (память/видеоадаптер проверялся что-ли...), но ни одной надписи "Bad savescreen" не получил.

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




Пост N: 3539
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.09.13 22:30. Заголовок: Sergy Думаю где то ..


Sergy
Думаю где то твой косяк , просто подумай где он.
У меня тоже при переводе программы на Harbour c Сlipper был глюк который не мог долго поймать.
Психовал даже маленько ;) Но поймал.

PS
на форуме таких примеров при "переводе" достаточно, о якобы глюках Harbour.


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





Пост N: 274
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 09.09.13 22:53. Заголовок: PSP пишет: Пошагово..


PSP пишет:

 цитата:
Пошагово выполнить программу.


Так и сделал.
И акуел, если честно:

Скрытый текст


Загвоздка оказалась в команде RUN. Как она может повлиять на SAVESCREEN() - ума не приложу.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 285 , стр: 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 час. Хитов сегодня: 28
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет