Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
IMEI Checksum (Luhn) Algoritması
#1
IMEI Checksum (Luhn) Algoritması 

Wikipedia Luhn Algoritması :  Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Delphi Fonksiyonu  : 

function Luhn_Hesapla(S:String):Char;
Var
i,F,V,Sum:integer;
begin
F:=2;
Sum:=0;
for i:=Length(S) downto 1 do
 begin
  if Not (S[i] In ['0'..'9']) Then Exit;
  V:=F*(Ord(S[i])-Ord('0'));
  if V>9 Then V:=(V Mod 10)+1;
  Sum:=Sum+V;
  F:=3-F;
 end;
Sum:=Sum Mod 10;
if Sum<>0 Then Sum:=10-Sum;
Result:=Chr(Sum+$30);
end;
- Namyelus
WWW
Cevapla
#2
(06-02-2018, Saat: 16:43)dicle_gsm Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlIMEI Checksum (Luhn) Algoritması 

Wikipedia Luhn Algoritması :  Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Delphi Fonksiyonu  : 

function Luhn_Hesapla(S:String):Char;
Var
i,F,V,Sum:integer;
begin
F:=2;
Sum:=0;
for i:=Length(S) downto 1 do
 begin
  if Not (S[i] In ['0'..'9']) Then Exit;
  V:=F*(Ord(S[i])-Ord('0'));
  if V>9 Then V:=(V Mod 10)+1;
  Sum:=Sum+V;
  F:=3-F;
 end;
Sum:=Sum Mod 10;
if Sum<>0 Then Sum:=10-Sum;
Result:=Chr(Sum+$30);
end;

Ellerinize sağlık. Ancak bazı düzenlemeler ile daha da efektif bir kod haline getirebilirsiniz rahatlıkla.

Örneğin:
1- Result'a bir başlangıç değeri atamanız yerinde olabilir.
2- Fonksiyona geçilen parametre'yi const olarak geçmeniz hız ve memory tasarrufu sağlar.
3- Gördüğüm kadarı ile fonksiyona geçilen parametre'nin bir sayı olması bekleniyor. Bu durumda "A0123456789" gibi bir değer geçildiğinde fonksiyona bu geçilen değerin sayı olmadığını anlamak için 10 defa döngü içinde dönmeniz gerekiyor. Bu koşulu döngüye girmeden önce kontrol etmek yerinde olabilir.
4- Sürekli string parametre'nin ilgili indis'deki karakterlerinin ordinal değerlerini alacağınıza ilgili parametre'yi bir TBytes değişkenine aktarmanız daha yerinde ve şık olabilir.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter





Konuyu Okuyanlar: 1 Ziyaretçi