// Bu kodla 12 karaktere sahip bir barkodun son 6 karakteri duzenli olarak degistirilerek
// yeni bir barkod uretilmektedir. Degisen son 6 karakter,bir veri tabanında tutulmakta
//ve her yeni barkod alındiginda bu en son deger kullanilarak degistirilmektedir.
//Test etmek icin bir form yaratarak , bir edit box,bir Button ve bir Label olusturunuz.
// Erdal Kilinc
// ekilinc@netas.com.tr
Procedure TForm1.GetNewBarcode;
var
a, b, c, d, e, f,j,k : Integer;//Loop Degiskenleri
sChangeBar : String; //Degisecek Barkod
tmp:Char; //Gecici degisken
St: array [1..6] of integer; //Degisecek son 6 karakter icin dizi
LastBar:string; //LastBar veri tabanından alınan ve en son kullanılan 6 karakter
//Test etmek icin LastBar bir string degisken olark tanitilmis ve
//degisecek barkod bir Edit Box 'tan alinarak bir Label'a aktarlmistir
begin
LastBar:=uppercase(edit1.text);
if Length(LastBar) <> 6 Then Exit;
for k := 1 To 6 do
begin
Tmp:=LastBar[k];
if tmp in ['0'..'9'] then
St[k]:= ord(tmp) - 47;
if tmp in ['A'..'Z'] then
St[k] := ord(tmp) - 54;
end;
St[6]:= St[6]+1;
for a:=St[1] To 36 do
begin
for b := St[2] To 36 do
begin
for c := St[3] To 36 do
begin
for d := St[4] To 36 do
begin
for e := St[5] To 36 do
begin
for f := St[6] To 36 do
if Length(sChangeBar)=6 Then
begin
LastBar:=sChangeBar;
Label1.Caption:=Lastbar;
Exit;
end
else
begin
for j:= 1 To 6 do
if St[j] < 11 Then
begin
tmp := Chr(St[j] + 47);
sChangeBar := sChangeBar + tmp
end
else
begin
tmp := Chr(St[j] + 54);
sChangeBar := sChangeBar + tmp;
end;
end;
St[6] := 1;
St[5] := St[5] + 1;
end; // end e
St[5] := 1;
St[4] := St[4] + 1;
end; //end d
St[4] := 1;
St[3] := St[3] + 1;
end; //end c
St[3] := 1;
St[2] := St[2] + 1;
end; // end b
St[2] := 1;
St[1] := St[1] + 1;
end; // end a
end; // end procedure