Muharrem hocam izninize sığınarak kodlarda bir parça değişiklik yaparak gerçek ilaç karekodlarını okuyabilir hale getirdim.
Bu arada bir şey sorayım. zeromemory nin amacı ne burada?
şunu da söyleyeyim. piyasada farklı karekod okuyucular okudukları escape karakterleri dışarı farklı olarak verebiliyorlar. Program dizayn edecek arkadaşların bunu gözönünde bulundurmasında yarar var.
Kod: Tümünü seç
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
Type tQRCode_Icerik = record
k01_barkod, // uz:13
k21_serino, // uz:05
k17_miad, // uz:04
k10_partino : String; // uz:05
end;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
Function KareKodBilgisi( strKod:String ): tQRCode_Icerik;
var
Form1: TForm1;
gstr:string;
implementation
{$R *.dfm}
Function KareKodBilgisi( strKod:String ): tQRCode_Icerik;
Var
strBlok : String;
iUz,
iKod : Integer;
begin
ZeroMemory(@Result, sizeOf(Result) );
strBlok := Trim(strKod);
strBlok := StringReplace(strBlok, #29, '|', [] );
// strBlok := StringReplace(strBlok, ' ', '|', [] );
while strBlok <> '' do
begin
iKod := StrToInt( Copy(strBlok, 1, 2) );
system.Delete(strBlok, 1, 2);
case iKod of
01: begin
iUz := 14;
Result.k01_barkod := Copy(strBlok, 1, iUz);
system.Delete(strBlok, 1, iUz);
end;
21: begin
iUz := Pos('|', strBlok)-1;
Result.k21_serino := Copy(strBlok, 1, iUz);
system.Delete(strBlok, 1, iUz + 1);
end;
17: begin
iUz := 06;
while strBlok[iUz] + strBlok[iUz+1] <> '10' do inc(iUz);
Dec(iUz);
Result.k17_miad := Copy(strBlok, 1, iUz);
system.Delete(strBlok, 1, iUz);
end;
10: begin
Result.k10_partino := Trim(strBlok);
strBlok := '';
end;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
Var
Sonuc : tQRCode_Icerik;
begin
// edit1.Text:=gstr;
Sonuc := KareKodBilgisi( Edit1.Text );
Memo1.Lines.Add('Barcode : ' + Sonuc.k01_barkod );
Memo1.Lines.Add('Seri : ' + Sonuc.k21_serino );
Memo1.Lines.Add('Miad : ' + Sonuc.k17_miad );
Memo1.Lines.Add('PartiNo : ' + Sonuc.k10_partino );
edit1.Text:='';
gstr:='';
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then begin
edit1.Text:=gstr;
Button1Click(self);
end;
gstr:=gstr+key;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.Text:='01086995041200112114021876651'#29'17151231100K0016';
end;
end.