英文字母和數字按asc碼大小實現固定長度的流水號編碼怎么實現,誰有源碼
英文字母和數字按asc碼大小實現固定長度的流水號編碼如何實現,誰有源碼。
用數字作為流水號編碼非常簡單,但是我想用字母也編到流水號中去。
如三位流水編碼:如果隻用數字隻到999,如果用字母可以到zzz,反正都
是字符,用字母作為流水號可以縮短編碼長度。
------解决方案--------------------
在数据库里定义ID字段
然后在窗体里把MAX的字段值+1后再转成ASCII码
------解决方案--------------------
//参考如下代码
function IncIdent(AIdent: string): string;
const
cChars = '0123456789abcdefghijklmnopqrstuvwxyz ';
var
I, J, K: Integer;
vBreak: Boolean;
begin
Result := AIdent;
for I := Length(AIdent) downto 1 do
begin
vBreak := True;
for J := Length(AIdent) downto 1 do
begin
K := Pos(AIdent[J], cChars);
if K < Length(cChars) then
begin
Result[J] := cChars[K + 1];
for K := Length(AIdent) downto J + 1 do Result[K] := cChars[1];
vBreak := false;
Break;
end;
end;
if vBreak then Break;
end;
end; { IncIdent }
procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := IncIdent(Caption);
end;
------解决方案--------------------
//简化一下这样
function IncIdent(AIdent: string): string;
const
cChars = '0123456789abcdefghijklmnopqrstuvwxyz ';
var
J, K: Integer;
vBreak: Boolean;
begin
Result := AIdent;
for J := Length(AIdent) downto 1 do
begin
K := Pos(AIdent[J], cChars);
if K < Length(cChars) then
begin
Result[J] := cChars[K + 1];
for K := Length(AIdent) downto J + 1 do Result[K] := cChars[1];
vBreak := false;
Break;
end;
end;
end; { IncIdent }
用數字作為流水號編碼非常簡單,但是我想用字母也編到流水號中去。
如三位流水編碼:如果隻用數字隻到999,如果用字母可以到zzz,反正都
是字符,用字母作為流水號可以縮短編碼長度。
------解决方案--------------------
在数据库里定义ID字段
然后在窗体里把MAX的字段值+1后再转成ASCII码
------解决方案--------------------
//参考如下代码
function IncIdent(AIdent: string): string;
const
cChars = '0123456789abcdefghijklmnopqrstuvwxyz ';
var
I, J, K: Integer;
vBreak: Boolean;
begin
Result := AIdent;
for I := Length(AIdent) downto 1 do
begin
vBreak := True;
for J := Length(AIdent) downto 1 do
begin
K := Pos(AIdent[J], cChars);
if K < Length(cChars) then
begin
Result[J] := cChars[K + 1];
for K := Length(AIdent) downto J + 1 do Result[K] := cChars[1];
vBreak := false;
Break;
end;
end;
if vBreak then Break;
end;
end; { IncIdent }
procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := IncIdent(Caption);
end;
------解决方案--------------------
//简化一下这样
function IncIdent(AIdent: string): string;
const
cChars = '0123456789abcdefghijklmnopqrstuvwxyz ';
var
J, K: Integer;
vBreak: Boolean;
begin
Result := AIdent;
for J := Length(AIdent) downto 1 do
begin
K := Pos(AIdent[J], cChars);
if K < Length(cChars) then
begin
Result[J] := cChars[K + 1];
for K := Length(AIdent) downto J + 1 do Result[K] := cChars[1];
vBreak := false;
Break;
end;
end;
end; { IncIdent }