QR - код
Модератор: Дед Пахом
					Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
	При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- 
				john113@rambler.ru
 - Прохожий
 - Сообщения: 3
 - Зарегистрирован: 06 Декабрь 2011, 15:00
 
- Admin
 - Администратор
 - Сообщения: 4022
 - Зарегистрирован: 05 Июль 2005, 15:59
 - Откуда: Хабаровск
 - Благодарил (а): 59 раз
 - Поблагодарили: 42 раза
 - Контактная информация:
 
Re: QR - код
The RAW attribute of a PROCEDURE prototype specifies that STRING or GROUP parameters pass the memory address only. This allows you to pass just the memory address of a *?, STRING, or GROUP parameter, whether passed by value or by reference, to a non-Clarion language procedure or function. Normally, STRING or GROUP parameters pass the address and the length of the string. The RAW attribute eliminates the length portion. For a prototype with a ? parameter, the parameter is taken as a LONG but passed as a "void *" which just eliminates linker warnings. This is provided for compatibility with external library functions that expect only the address of the string.
If a function is prototyped with one of the following return types: ?, *? or *STRING, and the prototype has the RAW attribute, the return value is treated as a LONG.
Example:
			
			
									
						If a function is prototyped with one of the following return types: ?, *? or *STRING, and the prototype has the RAW attribute, the return value is treated as a LONG.
Example:
Код: Выделить всё
 MAP
  MODULE('Party3.Obj')                 !A third-party library
Func46 PROCEDURE(*CSTRING),REAL,C,RAW  !Pass CSTRING address-only to C function
  END
 ENDРай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
			
						- Admin
 - Администратор
 - Сообщения: 4022
 - Зарегистрирован: 05 Июль 2005, 15:59
 - Откуда: Хабаровск
 - Благодарил (а): 59 раз
 - Поблагодарили: 42 раза
 - Контактная информация:
 
Re: QR - код
Вот сразу работающий код 
Только куда сунуть l:shtr после рутинки я не знаю. Это к автору.
			
			
									
						Только куда сунуть l:shtr после рутинки я не знаю. Это к автору.
Код: Выделить всё
                        PROGRAM
LPCSTR                  EQUATE(CSTRING)
DWORD                   EQUATE(ULONG)
WORD                    EQUATE(USHORT)
BOOL                    EQUATE(SIGNED)
LPSTR                   EQUATE(STRING)    
                        MAP
                          MODULE('QRCode.LIB')
                             _enQRCode(*CSTRING, WORD, WORD, WORD) RAW, PASCAL, NAME('QRCodeEncode')
                             QRGetRows(), WORD, RAW, PASCAL, NAME('QRCodeGetRows')
                             QRGetCols(), WORD, RAW, PASCAL, NAME('QRCodeGetCols')
                             QRGetCharAt(WORD, WORD), WORD, RAW, PASCAL, NAME('QRCodeGetCharAt')
                          end
                        END
l:shtr                  CSTRING(4096)
l:mode                  WORD
l:rows                  WORD
l:errCorLev             WORD
l:len                   BYTE
lo:rows                 WORD
lo:column               WORD
  CODE
  DO set_shtr
  MESSAGE(l:shtr)
set_shtr routine
 l:shtr      = '12345678901234567890'
 l:mode      = 2
 l:errCorLev = 0
 l:rows      =  3
 l:len       = len(clip(l:shtr))
 if l:len > 0
   _enQRCode(l:shtr, l:mode, l:errCorLev, l:rows)
   lo:rows = QRGetRows()
   lo:column = QRGetCols()
   l# = 1
   loop i# = 0 to lo:rows - 1
     loop j# = 0 to lo:column - 1
       l:shtr[l#] = chr(QRGetCharAt(i#, j#))
       l# += 1
     end
     l:shtr[l#] = '<13>'
     l# += 1
     l:shtr[l#] = '<10>'
     l# += 1
   end
   l:shtr[l#] = '<0>'
 end
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
			
						Re: QR - код
Уважаемый ADMIN, большое спасибо за уточненный пример, но, все же, при компиляции дает з ошибки:
Illegal return type or atribute!
на все три процедуры (QRGetRows(), WORD, RAW, PASCAL, Name, QRGetCols(), WORD, RAW, PASCAL, Name, QRGetCharAt(WORD,WORD), WORD, RAW, PASCAL, Name),
которые вставлены в Global MAP, и курсор стоит вначале RAW
С уважением, ABBASoft.
			
			
									
						Illegal return type or atribute!
на все три процедуры (QRGetRows(), WORD, RAW, PASCAL, Name, QRGetCols(), WORD, RAW, PASCAL, Name, QRGetCharAt(WORD,WORD), WORD, RAW, PASCAL, Name),
которые вставлены в Global MAP, и курсор стоит вначале RAW
С уважением, ABBASoft.
- Admin
 - Администратор
 - Сообщения: 4022
 - Зарегистрирован: 05 Июль 2005, 15:59
 - Откуда: Хабаровск
 - Благодарил (а): 59 раз
 - Поблагодарили: 42 раза
 - Контактная информация:
 
Re: QR - код
В проект добавляли LIB файл?
Какая версия Clarion?
Каков опыт работы с Clarion?, а то вопросы такие ...
P.S. Все это к тому что код, который я дал, скомпилирован и был запущен на C6.3
			
			
									
						Какая версия Clarion?
Каков опыт работы с Clarion?, а то вопросы такие ...
P.S. Все это к тому что код, который я дал, скомпилирован и был запущен на C6.3
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
			
						- Дед Пахом
 - Старичок
 - Сообщения: 3346
 - Зарегистрирован: 07 Июль 2005, 16:51
 - Откуда: Москва, Россия
 - Благодарил (а): 20 раз
 - Поблагодарили: 56 раз
 - Контактная информация:
 
Re: QR - код
Скорее всего тип WORD неопределён, надо заменить на USHORT:
WORD EQUATE(USHORT)
			
			
									
						WORD EQUATE(USHORT)
С уважением, ДП
			
						Re: QR - код
Уважаемый ADMIN, Ваша програмка у меня была вставлена в Application, библиотека была подцеgлена (определена) в Project.
но выдавало з ошибки. Теперь я сделал как у Вас (программа .clw + определил Project) и все Ок. Ваш пример заработал.
Почему он не работал в APP - не известно.
Но что теперь делать с содержимым в строке l:shtr??? Автор примера QR-кода, подскажите, пожалуйста, что делать дальше?
С уважением, ABBASoft.
			
			
									
						но выдавало з ошибки. Теперь я сделал как у Вас (программа .clw + определил Project) и все Ок. Ваш пример заработал.
Почему он не работал в APP - не известно.
Но что теперь делать с содержимым в строке l:shtr??? Автор примера QR-кода, подскажите, пожалуйста, что делать дальше?
С уважением, ABBASoft.
Re: QR - код
l:shtr  может быть размещено в форме, репорте как обычное edit-поле, но при этом необходимо указать  шрифт , предварительно  установив в систему(панель управления - шрифты), который включен в состав zip-файла.
Надо было мне приложить пример в TXA формате, но это только в понедельник.А впрочем лучше app целиком.
			
			
									
						Надо было мне приложить пример в TXA формате, но это только в понедельник.А впрочем лучше app целиком.
Re: QR - код
Благодарим всех за отзывчивость (SVRU, ADMINa, Деда Пахома). Ждем от  SVRU .app.
С уважением, ABBASoft.
			
			
									
						С уважением, ABBASoft.
Re: QR - код
Уважаемый SVRU, большое спасибо за пример, но как из этого кода получить картинку?
Мне ее необходимо напечатать.
С уважением, ABBASoft (ABBASoft@ukr.net).
			
			
									
						Мне ее необходимо напечатать.
С уважением, ABBASoft (ABBASoft@ukr.net).
Re: QR - код
Легче простого. Пример можно посмотреть тут. http://www.pisoft.ru/verstak/barfonts.htm Он отностися, конечно,  к штрихкоду code-39, но принцип такой же.
			
			
									
						