مشكل Division by zero في delph xe 5 android
#2
المشكلة أن كومبايلر أندرويد يستخدم Zero based string : بمعنى الترقيم يبدأ من الصفر و ليس الواحد !!
يمكن تعطيله باستخدام التوجيه :

PHP كود :
{$ZEROBASEDSTRINGS OFF} 

لكن كحل مثالي و آمن أنصحك أن لا تقوم بتعطيله لأن ال RTL الخاصة بالأندرويد تعمل بنفس المبدأ Zero Based ..
هذا حل يلبي احتياجك :

PHP كود :
{$IF CompilerVersion >=26}
   {
$IFDEF MSWINDOWS}
      {
$ZEROBASEDSTRINGS ON}
      {
$DEFINE ZeroBasedStrOn}
   {
$ENDIF}
{
$IFEND}

function 
CalculateCode(LicenseName: string): string;
var
  
i, Code: integer;
  
CodeStr: string;
  
Num: Int64;
  
FSeed: Int64;
  
FRegCodeSize: integer;
begin
  FSeed 
:= 3210;
  
FRegCodeSize := 13;
  
// You can modify this algorithm if you want to...
  
if (Length(LicenseName) > 21) or (Length(LicenseName) < 4) then
  begin
    Result 
:= ''; // LicenseName did not fit length requirements
    
Exit;
  
end;
  
i := Length(LicenseName){$IFDEF ZeroBasedStrOn} - 1{$ENDIF};
  
// Takes the last 6 characters (going backwards), converting each
  // character to ASCII and taking the remainder of dividing it into Seed
  
while {$IFDEF ZeroBasedStrOn} (i >= Length(LicenseName) - 1 - 8) and (i >= 0)
{
$ELSE}
    (
i >= Length(LicenseName) - 8) and (i > 0)
{
$ENDIF}
    do
  
begin
    CodeStr 
:= CodeStr + IntToStr(FSeed mod Ord(LicenseName[i]));
    
Dec(i);
  
end;
  
Val(CodeStr, Num, Code);
  if 
FRegCodeSize <= 0 then
    Result 
:= IntToHex(Num, 0)
  else
  
begin
    Result 
:= IntToHex(Num, FRegCodeSize);
    
Delete(Result, FRegCodeSize + 1, Length(Result) - FRegCodeSize);
  
end;
end; 
Open Your Source .. Open Your Mind
الرد


الردود في هذا الموضوع
مشكل Division by zero في delph xe 5 android - بواسطة sky19 - 09-02-2014, 08:41 PM
مشكل Division by zero في delph xe 5 android - بواسطة SMP3 - 19-02-2014, 08:21 PM
مشكل Division by zero في delph xe 5 android - بواسطة sky19 - 21-02-2014, 03:32 PM
مشكل Division by zero في delph xe 5 android - بواسطة SMP3 - 21-02-2014, 08:26 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم