Создание qr кода по введеному тексту
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Создание скрипта по тексту
Добры день! Как написать такой скрипт, который бы генерировал текст в соответствие с прописанной.
Создание кода программы с нуля!! создание кода C++
ВОТ УСЛОВИЕ : Для данного вещественного x,a,b,c найти значение следующей функции f,принимающей.
Заданий рядок тексту. Визначити, скільки разів зустрічається цей рядок тексту в текстовому файлі
1. Створити або відкрити текстовий (типізований, нетипізований) файл. 2. Виконати над текстовим.
По введеному числу сформировать.
Сделать с помощью циклов
Вложения
Debenu-DelphiZXingQRCode.zip (101.9 Кб, 71 просмотров) |
Создание кода из строк или создание произвольного количества объектов
Привет сообществу. Возник такой вопрос: Мне в мидлете необходимо создать некоторое количество.
Определить город (регион) России по введеному номеру телефона
Здравствуйте. На сайте есть форма с полем «Телефон», в которое водится номер телефона в формате.
Фильтр по введеному слову в поле и при нажатии кнопки
Народ, всем привет! Подскажите, что нужно прописать в процедуре, что бы при нажатии на кнопку.
По введеному дню определить високосный год или нет
По введеному дню определить високосный год или нетprocedure TForm1.btn1Click(Sender: TObject);.
Генерация qr кода delphi
Delphi is a structured communication technique or method, originally developed as a systematic, interactive forecasting method which relies on a panel of experts. Delphi is a programming language and software development kit (SDK) for desktop, mobile, web and console applications. Delphi’s compilers use their own Object Pascal dialect of Pascal and generate native code for several platforms: Windows (x86 and x64), OS X (32-bit only), iOS (32 and 64-bit) and Android.
Delphi application is reliable and creative exploration of ideas or the production of suitable information for decision making.The Delphi Technique is a method used to estimate the likelihood and outcome of future events. A group of experts exchange views, and each independently gives estimates and assumptions to a facilitator who reviews the data and issues a summary report.
For more than 20 years, Delphi Technology has been a leading provider of technology solutions to the insurance and risk management industries. By leveraging its extensive industry knowledge and experience. Delphi Technology delivers a comprehensive range of innovative technology solutions for professional liability insurers, property and casualty carriers, third party administrators (TPAs), self insureds, and risk retention groups (RRGs).
Generating QR-Code Using Delphi
In Delphi Barcodes :: A QR code is a specific barcode, when phones with camera allowed mobile phone users to quickly scan the image and get more info on a product, business, event, offer, URL address. QR (quick response) codes can be used to encode URL, text or other data. Most smartphones like iPhones and Android phones now have apps that let you to read QR codes. When your mobile reads (scans) a QR Code, the QR code will then send you off to a website or online voucher or an online business card.The QR code system became popular outside the automotive industry due to its fast readability and greater storage capacity compared to standard UPC barcodes. Applications include product tracking, item identification, time tracking, document management and general marketing.
Using Delphi there are several ways you can generate QR codes – to encode any text (URL, phone number, simple message). QR Codes store up to 4,296 alphanumeric characters of arbitrary text.
A QR code (Quick Response Code) is a specific 2D barcode, the 2D Barcode VCL components is a set of components designed for generating and printing barcode symbols in your Delphi or C++ Builder applications. Using the components set like any other VCL components. Encrypted QR codes, which are not very common and have a few implementations.
One-dimensional barcodes that were designed to be mechanically scanned by a narrow beam of light, a QR code is detected by a 2-dimensional digital image sensor and then digitally analyzed by a programmed processor. The processor locates the three distinctive squares at the corners of the QR code image, using a smaller square (or multiple squares) near the fourth corner to normalize the image for size, orientation, and angle of viewing. The small dots throughout the QR code are then converted to binary numbers and validated with an error-correcting algorithm. The amount of data that can be stored in the QR code symbol depends on the datatype (mode, or input character set), version (1, …, 40, indicating the overall dimensions of the symbol) and error correction level. The maximum storage capacities occur for 40-L symbols.
QR Codes can easily be displayed inside ReportBuilder reports using a variety of third party libraries currently available. Below is a list of components along with the features they offer.
Usage of QR codes
Code payments- QR codes can be used to store bank account information or credit card information, they can be specifically designed to work with particular payment provider applications and in the field of cryptographic currencies, payment addresses, cryptographic keys and transaction information are often shared between digital wallets in this way. Website login- QR codes can be used to log in into websites: a QR code is shown on the login page on a computer screen and when a registered user scans it with a verified smartphone, they will automatically be logged in. Authentication is performed by the smartphone which contacts the server.
Generating QR Codes Using Delphi – DelphiZXingQRCode – Open Source
DelphiZXingQRCode is a Delphi port of the QR Code functionality in ZXing, an open source barcode image processing library. DelphiZXingQRCode is a single-unit implementation you simply add to your (new or) existing project, set a few properties and paint the image. DelphiZXingQRCode (for the moment) supports auto, numeric, alphanumeric, ISO-8859-1, UTF-8 without Bom and UTF-8 with Bom encoding.
If you need to include the generation of QR barcode images in your Delphi application, you might want to take a look at open source “DelphiZXingQRCode” – a Delphi port of the QR Code functionality in ZXing, an open source barcode image processing library.
Just a few lines of code, TDelphiZXingQRCode related and your QR is ready: Sample Delphi code:
If you only need the image generated out of your application, you might want to try this fantastic free online QR Code Generator from the ZXing Project.
J4L Components includes the QR-code implementation featuring: auto, byte, alpha, numeric and kanji encoding. The Google Chart Tools (Chart API) also let you generate QR-code images using an HTTP POST or GET methods – Generating Qr Codes with Delphi and Google Chart API
Encoding
The format information records two things: the error correction level and the mask pattern used for the symbol. Masking is used to break up patterns in the data area that might confuse a scanner, such as large blank areas or misleading features that look like the locator marks. The mask patterns are defined on a grid that is repeated as necessary to cover the whole symbol. Modules corresponding to the dark areas of the mask are inverted. The format information is protected from errors with a BCH code, and two complete copies are included in each QR symbol.
FireMonkey / Mobile (Android, iOS) QR Code Generation Using Delphi XE 5 / DelphiZXingQRCode
The DelphiZXingQRCode unit, ported from ZXing allows to easily add QR Code generation to your Delphi VCL applications.
While the DelphiZXingQRCode was designed to support VCL applications (and be used in newer as well as in older Delphi versions), it can also easily be “upgraded” for Fire Monkey applications – for desktop or mobile (Android, iOS).
Single Pixel Drawing (and Other Canvas Drawing) FireMonkey Style
In the VCL, the TCanvas class allows accessing single pixels through the “Canvas.Pixels()” property. In FireMonkey this is not supported and you have to use the SetPixel property of a TBitmapData instance.
Once the qr code is generated, to convert it to a bitmap image, in FireMonkey:
VCL’s Canvas.StretchDraw to FMX’s Canvas.DrawBitmap
There’s no StrecthDraw in FMX’s Canvas class. There’s DrawBitmap. StretchDraw by default does no antialiasing. Using TImage, the code to get/display the generated QR Code is as follows:
By default, in FMX, when using DrawBitmap to resize it, antialiasing is used by default. There are two properties you need to set to ensure a bigger copy of your (small) qr code is drawn pixel-copy-perfect. FMX version of DelphiZXIngQRCode.pas: FMX-DelphiZXIngQRCode
Из записных книжек
Админ
четверг, 18 декабря 2014 г.
Генератор QR-кодов на Delphi / Lazarus: DelphiZXingQRCodeEx
Некоторое время назад мне пришлось решать такую задачу: нужно было добавить в документ Microsoft Office картинку с двумерным штрих-кодом (QR-кодом). Изучение вопроса показало, что большинство готовых решений либо требуют денег (в общем случае это не проблема, но в госучреждениях необходимо организовывать тендер, что может тянуться месяцами), либо требуют пересылки данных через Интернет (что при наших объёмах в тысячи документов слишком медленно и ненадёжно), либо «тянут» за собой внешние DLL-библиотеки, что просто неудобно.
Как пользоваться
Ссылки на скачивание
Изменения по сравнению с проектом DelphiZXingQRCode
В качестве примера реализованы кодирование Win-1251 и кодирование URL (преобразование нелатинских символов в %-коды, например, https://ru.wikipedia.org/wiki/QR-код → https://ru.wikipedia.org/wiki/QR-%D0%BA%D0%BE%D0%B4).
Демонстрационный проект (TestApp) переделан настолько, что проще сказать «создан заново». Фактически его можно использовать как отдельную программу для создания QR-кодов на все случаи жизни (чем мы сами с успехом и пользуемся). Он теперь «умеет» показывать строку после преобразования кодировщиком (это важно, так как некоторые символы кодировщик из строки может удалить, а другие заменить), менять цвета для изображения QR-кода, копировать картинку в буфер обмена Windows и сохранять её на диске в разных форматах (BMP, JPEG, EMF).
Так что если вам нужна только простая программа для генерации QR-кодов, то вот прямая ссылка на exe-файл (на GitHub).
Системные требования: Delphi и Lazarus
Вторая особенность работы с Lazarus заключается в наличии ошибки (подтверждённой разработчиками) в классе TBitmap : вызов SaveToFile этого объекта при установленном в True значении свойства Monochrome приводит к исключению «image palette is too big or absent». Поэтому я просто поставил директиву условной компиляции, так что под Lazarus при сохранении картинки в этом формате размер получается в два десятка раз больше. Возможно, есть более элегантный способ.
Исходники демонстрационного проекта под Lazarus
Применение
Печать счетов в Сбербанк
Собственно, с этого всё и началось. В сентябре наша бухгалтерия получила от Сбербанка предложение: печатать на счетах на оплату обучения (которые у нас печатаются тысячами) QR-код, чтобы сэкономить время на ввод данных при оплате и уменьшить вероятность ошибки. Не буду рассказывать, каково работать со Сбербанком (кто хоть раз имел дело с этой конторой, уже представляет их «оперативность» и «отзывчивость»: так, на e-mail, отправленный 12-го ноября, техподдержка ответила только 21-го, как будто письмо было послано не по электронной почте, а Почтой России). И вот, когда я наконец доделал соответствующую функцию в нашем софте, то в ответ на это от Сбербанка мы получили сообщение, что у них у самих ещё не сделана программа для чтения этих QR-кодов, так что минимум до Нового года можно (было) не спешить.
Итог: генерация и вставка кодов работает нормально. По крайней мере, валидатор на сайте Сбербанка (http://www.sbqr.ru/validator/index.html) распознаёт наши коды без ошибок. Программы для чтения QR-кодов с камеры мобильного тоже считывают закодированные данные без проблем.
Расписание занятий
(Любителей всё проверять на практике предупреждаю, что в QR-кодах на картинках ниже зашифрованы адреса, которые были актуальны на момент написания этой статьи, и, скорее всего, уже недоступны сейчас, когда вы её читаете.)
Канал в Telegram
Вы здесь
Генератор QR-кодов на Delphi. Способ 1
Все Вы наверняка хоть раз сталкивались с QR-кодами. Данный способ графического кодирования информации получил широкое распространение относительно недавно. Отличие от штрих-кода в том, что с помощью QR-кода можно кодировать относительно большие объемы информации. Информация может содержать как текст, так и числа.
Например, в этом QR коде закодирован адрес страницы с данной статьей.
Как правило, в QR-кодах кодируют адреса сайтов или адрес страницы с некоторой доп. информацией (цены, страницы подписки), могут быть закодированы номера телефонов и любая другая информация.
Раскодирование QR-кода осуществляется с помощью мобильного телефона и установленного на него приложения. Таких приложений великое множество как для Android или iOS, так и для других операционных систем. Так же, на просторах сети, можно найти великое множество сервисов по дешифрованию QR-кодов со снимка или изображения.
В этой статье я опишу один из способов генерации QR-кода и приведу пример приложения на Delphi, которое позволит Вам создать QR-код и сохранить его в виде изображения.
В первом способе мы воспользуемся сервисом Google (Google API). Да, в статье не будет рассматриваться алгоритм кодирования и генерации QR т.к. это довольно объемный и сложный алгоритм. Если кому интересно, то здесь описаны основы чтения QR-кода.
И так, приступаем к созданию приложения.
Создайте новый проект с формой. Добавьте на форму следующие компоненты:
— Button 2шт. (вкладка Standart);
— ComboBox 2шт. (вкладка Standart);
— Memo 1шт. (вкладка Standart);
— Label 2шт. (вкладка Standart);
— Image 1 шт. (вкладка Additional);
— SavePictureDialog 1шт. (вкладка Dialogs).
Перейдите в окно Object Inspector (F11) и присвойте компонентам следующие имена:
— ComboBox1 свойство Name = ErrLevel – будет выбор уровня коррекции ошибок;
— ComboBox2 свойство Name = QR_img_size – будет выбор размера изображения кода;
— Memo1 свойство Name = QR_text – будет содержать кодируемый текст;
— Button1 свойство Name = GetQR_But – кнопка, с помощью которой будем посылать запрос;
— Button2 свойство Name = Exp_QR_but – кнопка сохранения полученного кода в файл png.
Остальные имена оставляем по умолчанию.
Компоненту Image1 задайте свойства Height и Width равными 500, свойство Center переключите в True для отображения результата (картинки) по центру объекта Image1.
Заполним ComboBox’ы значениями. Для этого выделите первый ComboBox с именем ErrLevel, найдите свойство Items и щелкните рядом по кнопке с надписью «…». У Вас откроется окно String List Editor. Внесите туда следующие строки:
Для ComboBox с именем QR_img_size, аналогично создайте список со следующими значениями:
100×100
150×150
200×200
250×250
300×300
350×350
400×400
450×450
500×500
Свойство ItemIndex у данного компонента установите равным 1.
Ну и для Memo c именем QR_text задайте свойство Lines аналогично свойству Items. Я указал по умолчанию «Введите текст». И еще одно свойство ScrollBars измените на ssBoth. Включение данного параметра делает доступными полосы прокрутки по горизонтали и вертикали.
Остальным компонентам задайте свойства Caption (Подпись) как на картинке ниже т.е. украшательство. Расположение и примерный вид следующий:
Ну, теперь приступаем к кодингу. Открываем редактор кода Code Explorer (View – Code Explorer).
Примечание: Исходный код постарался раскомментировать детально, поэтому детально углубляться не стану. Отмечу некоторые важные моменты.
Для работы приложения с интернетом, а именно запросы на сервер, получение данных и т.д. нам потребуются библиотеки HTTPApp и WinInet. Укажите их в разделе Uses. Так же, для работы с PNG изображениями (именно в таком формате Google возвращает картинку с QR-кодом) нам потребуется сторонний компонент PNGImage. У обладателей версий Delphi 2009 и более поздней, этот компонент идет уже в составе Delphi. Доп. Компонент находится в прикрепленном архиве в папке “Компонент”, там же, я набросал видеоролик по установке и подключению данного компонента.
После установки компонента допишите в Uses библиотеку PngImage.
Теперь смотрим полный листинг и разбираем по основным блокам. Остальное, как я уже говорил, все с подробными комментариями.
unit QR_unit_ex;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, HTTPApp,WinInet, ExtDlgs,PngImage;
type
TForm1 = class(TForm)
Image1: TImage;
ErrLevel: TComboBox;
QR_img_size: TComboBox;
QR_text: TMemo;
GetQR_But: TButton;
Exp_QR_but: TButton;
Label1: TLabel;
Label2: TLabel;
SavePictureDialog1: TSavePictureDialog;
procedure GetQR_ButClick(Sender: TObject);
procedure Exp_QR_butClick(Sender: TObject);
private
< Private declarations >
public
const
UrlQrCode= ‘https://chart.googleapis.com/chart?chs=%dx%d&cht=qr&chld=%s&chl=%s’ ;
var
Form1: TForm1;
implementation
//Процедура делающая запрос по сгенерированному URL и принимающая результатом в Stream изображение QR
//в формате PNG
procedure WinInet_QRGet(const Url: string; Stream: TStream);
const
BuffSize = 1024*1024; //размер буфера 1кб
var
hInter : HINTERNET;
UrlHandle: HINTERNET;
BytesRead: DWORD;
Buffer : Pointer;
begin
hInter := InternetOpen(», INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); //открываем соединение
if Assigned(hInter) then //если соединение успешно, то продолжаем
begin
Stream.Seek(0,0); // устанавливаем указатель на 0 байт в потоке Stream
GetMem(Buffer,BuffSize);
try
//Посылаем URL с параметрами и значением
UrlHandle := InternetOpenUrl(hInter, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);
if Assigned(UrlHandle) then
begin
repeat
InternetReadFile(UrlHandle, Buffer, BuffSize, BytesRead); //читаем полученный файл PNG в переменную Buffer
if BytesRead>0 then
Stream.WriteBuffer(Buffer^,BytesRead); //пишет в поток Stream прочитанные данные из Buffer
until BytesRead = 0;
InternetCloseHandle(UrlHandle); //по окончанию закрываем поток UrlHandle
end;
finally
FreeMem(Buffer); //очищаем Buffer
end;
InternetCloseHandle(hInter); // закрываем интернет соединение
end
//процедура подготовки URL с присвоением наших параметров
procedure GetQrCode(Width, Height: Word; ErrLevel:TCombobox;
const Data: string; StreamImage: TMemoryStream);
var
EncodedURL: string;
begin
//генератор ссылки
//с помощью функции Format подставляем наши параметры в ссылку UrlQrCode (константа)
// ключи в ссылке %d и %s соответственно число или текст
// параметры перечисляются по порядку
//посылаем запрос. Получаем поток содержащий изображение в переменной StreamImage
WinInet_QRGet(EncodedURL,StreamImage);
procedure TForm1.GetQR_ButClick(Sender: TObject);
var
ImageStream: TMemoryStream;
PngImage: TPngObject; //описание объекта графич. файла типа PNG
Width, Height: Word;
begin
Image1.Picture:=nil; //очищаем Image1
ImageStream:=TMemoryStream.Create; // создаем поток который будет содержать данные изображения QR-кода
PngImage:=TPngObject.Create; // создаем экземпляр объекта Png
try
try
// вызываем процедуру GetQrCode и передаем устанвочные параметры из интерфейса приложения
// результат будет сохранен в поток ImageStream
GetQrCode(Width,Height,ErrLevel, QR_text.Lines.Text,ImageStream);
if ImageStream.Size>0 then //проверям размер потока. Если больше 0 то загружаем в Image1
begin
ImageStream.Position:=0; //устанавливаем указатель в начало (0-ая позиция)
PngImage.LoadFromStream(ImageStream); //загружаем поток в объект PNGImage
Image1.Picture.Assign(PngImage); // присоединяем объект PNGImage к компоненту Image1 т.е. отражаем QR-код
end;
except
on E: exception do
ShowMessage(E.Message); //обработка исключения. вывод сообщения об ошибке
end;
finally
ImageStream.Free; //очищаем поток ImageStream
PngImage.Free; // очищаем объект PngImage
end;
Константа UrlQrCode содержит заготовку-ссылку с метками для ввода наших параметров. Метки начинаются со знака «%» следом идет символ d и s, где d- число, s-текст.
Процедура GetQrCode — содержит входные параметры Width, Height, ErrLevel, Data, StreamImage. Width, Height, ErrLevel, Data — параметры, которые мы задаем в интерфейсе программы с помощью ComboBox’ов и Memo. StreamImage — переменная, которая будет содержать данные результата полученного при отправке запроса на Google Api. С помощью функции Format обрабатывается наша константа UrlQrCode, параметры, отмеченные %d и %s, заменяются входными значениями. Параметры подставляются последовательно.
Функция AnsiToUtf8 преобразует введенное сообщение, содержащееся в переменной Data в кодировку UTF8. Если не выполнить данного преобразования, то возможны проблемы с дальнейшим отображением русского текста. Вместо читаемого текста, будут «каракули».
Функция HTTPEncode — преобразует русскоязычный текст в формат «%D0%92%D0%B2%D0%B5%D0%B4%D0%B8%D1%82%D0%B5», латиница остается без изменения за исключением пробелов и знаков пунктуации.
Собственно, если перейти по данной ссылке в браузере, мы увидим изображение QR-кода. Нам остается только сделать этот переход программно с помощью процедуры WinInet_QRGet и полученный результат, содержащийся в переменной StreamImage, отобразить в компоненте Image1.
Примечание: Если воспользоваться методом PngImage.LoadFromFile, то мы можем загрузить PNG-картинку из файла для дальнейших манипуляций с ней. Хочу напомнить, что в Delphi 7 нет поддержки изображений формата PNG, для этого мы использовали стороннюю библиотеку TPNGImage. PngImage так же имеет метод SaveFromFile, в параметре которого нам необходимо указать полный путь и имя файла png (PngImage.SaveFromFile(“C:\test.png”)). Данный метод нам позволяет сохранить содержимое объекта PngImage в файл.
Image1.Picture.Assign(PngImage) — в данной строке мы присоединяем содержимое объекта PngImage к объекту Image1. Собственно, после данной команды у нас отобразится полученный QR-код на форме.
В процедуре Exp_QR_butClick мы сохраняем содержимое Image1 в файл с использованием диалога SavePictureDialog1. Если визуальное отображение QR-кода на форме не обязательно, то сохранение в файл можно сделать сразу после строки PngImage.LoadFromStream(ImageStream), добавив строчку следующего кода: PngImage.SaveFromFile(“C:\test.png”).
В прикрепленном файле Вы можете найти исходный код приложения и требуемый компонент. Для обладателей новых версий Delphi с 2009 и выше устанавливать компонент TPNGImage не нужно!
В данном методе есть один существенный недостаток, связь с интернетом, в следующей статье я приведу пример генератора, не использующего интернет и сервис Google. Мы создадим полностью самостоятельное приложение-генератор QR-кода. Но а данный пример будет полезен для ознакомления и потом, у Google API есть много интересных функций которые могут оказаться полезными.