QR - код

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
john113@rambler.ru
Прохожий
Сообщения: 3
Зарегистрирован: 06 Декабрь 2011, 14:00

QR - код

Сообщение john113@rambler.ru » 01 Август 2012, 11:13

Кто то сталкивался с печатью QRкода?

svru
Посетитель
Сообщения: 27
Зарегистрирован: 29 Февраль 2012, 12:49
Откуда: Е-бург

Re: QR - код

Сообщение svru » 01 Август 2012, 18:51

Есть вариант , но только завтра вечером. QR - это модно.

svru
Посетитель
Сообщения: 27
Зарегистрирован: 29 Февраль 2012, 12:49
Откуда: Е-бург

Re: QR - код

Сообщение svru » 02 Август 2012, 17:04

Пробуйте.
Вложения
qr.ZIP
(612.73 КБ) 183 скачивания

ABBASoft
Бывалый
Сообщения: 73
Зарегистрирован: 15 Май 2006, 17:08

Re: QR - код

Сообщение ABBASoft » 08 Август 2012, 22:45

В Вашем примере QR.zip не описана переменная RAW. Что это за переменная?

Аватара пользователя
Admin
Администратор
Сообщения: 3346
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

Re: QR - код

Сообщение Admin » 09 Август 2012, 4:06

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:

Код: Выделить всё

 MAP
  MODULE('Party3.Obj')                 !A third-party library
Func46 PROCEDURE(*CSTRING),REAL,C,RAW  !Pass CSTRING address-only to C function
  END
 END
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса

Аватара пользователя
Admin
Администратор
Сообщения: 3346
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

Re: QR - код

Сообщение Admin » 09 Август 2012, 4:20

Вот сразу работающий код :)
Только куда сунуть 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
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса

ABBASoft
Бывалый
Сообщения: 73
Зарегистрирован: 15 Май 2006, 17:08

Re: QR - код

Сообщение ABBASoft » 09 Август 2012, 21:57

Уважаемый 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.

Аватара пользователя
Admin
Администратор
Сообщения: 3346
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

Re: QR - код

Сообщение Admin » 09 Август 2012, 22:45

В проект добавляли LIB файл?
Какая версия Clarion?
Каков опыт работы с Clarion?, а то вопросы такие ...

P.S. Все это к тому что код, который я дал, скомпилирован и был запущен на C6.3
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2193
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Re: QR - код

Сообщение Дед Пахом » 10 Август 2012, 12:00

Скорее всего тип WORD неопределён, надо заменить на USHORT:
WORD EQUATE(USHORT)
С уважением, ДП

ABBASoft
Бывалый
Сообщения: 73
Зарегистрирован: 15 Май 2006, 17:08

Re: QR - код

Сообщение ABBASoft » 10 Август 2012, 14:13

Уважаемый ADMIN, Ваша програмка у меня была вставлена в Application, библиотека была подцеgлена (определена) в Project.
но выдавало з ошибки. Теперь я сделал как у Вас (программа .clw + определил Project) и все Ок. Ваш пример заработал.
Почему он не работал в APP - не известно.
Но что теперь делать с содержимым в строке l:shtr??? Автор примера QR-кода, подскажите, пожалуйста, что делать дальше?
С уважением, ABBASoft.

svru
Посетитель
Сообщения: 27
Зарегистрирован: 29 Февраль 2012, 12:49
Откуда: Е-бург

Re: QR - код

Сообщение svru » 10 Август 2012, 20:17

l:shtr может быть размещено в форме, репорте как обычное edit-поле, но при этом необходимо указать шрифт , предварительно установив в систему(панель управления - шрифты), который включен в состав zip-файла.
Надо было мне приложить пример в TXA формате, но это только в понедельник.А впрочем лучше app целиком. :oops:

ABBASoft
Бывалый
Сообщения: 73
Зарегистрирован: 15 Май 2006, 17:08

Re: QR - код

Сообщение ABBASoft » 10 Август 2012, 21:13

Благодарим всех за отзывчивость (SVRU, ADMINa, Деда Пахома). Ждем от SVRU .app.
С уважением, ABBASoft.

svru
Посетитель
Сообщения: 27
Зарегистрирован: 29 Февраль 2012, 12:49
Откуда: Е-бург

Re: QR - код

Сообщение svru » 13 Август 2012, 17:58

qr-code + бонус - pdf417
barcode.zip
(79.39 КБ) 193 скачивания

ABBASoft
Бывалый
Сообщения: 73
Зарегистрирован: 15 Май 2006, 17:08

Re: QR - код

Сообщение ABBASoft » 13 Август 2012, 21:29

Уважаемый SVRU, большое спасибо за пример, но как из этого кода получить картинку?
Мне ее необходимо напечатать.
С уважением, ABBASoft (ABBASoft@ukr.net).

svru
Посетитель
Сообщения: 27
Зарегистрирован: 29 Февраль 2012, 12:49
Откуда: Е-бург

Re: QR - код

Сообщение svru » 14 Август 2012, 16:01

Легче простого. Пример можно посмотреть тут. http://www.pisoft.ru/verstak/barfonts.htm Он отностися, конечно, к штрихкоду code-39, но принцип такой же.

Ответить