Delphi Can

Orjinalini görmek için tıklayınız: Büyük Sayılarla Çalışmak
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2
Merhaba
HexToDec işlemi yapıyorum. Fakat gelen hex. sayı fazla büyük buda sonucu bana - olarak döndürmesine neden oluyor. Bu tarz durumlarda ne yapılmalı.

function HexToDec(Str: string): LongInt;
var
 i, M: Integer;
begin
 Result:=0;
 M:=1;
 Str:=AnsiUpperCase(Str);
 for i:=Length(Str) downto 1 do
 begin
   case Str[i] of
     '1'..'9': Result:=Result+(Ord(Str[i])-Ord('0'))*M;
     'A'..'F': Result:=Result+(Ord(Str[i])-Ord('A')+10)*M;
   end;
   M:=M shl 4;
 end;
end;

Hex hali = 9a2929c7
(02-09-2018, Saat: 21:06)masteryoda Adlı Kullanıcıdan Alıntı: [ -> ]https://github.com/rvelthuis/DelphiBigNumbers
buraya bir göz atın.

Aslında bana string olarak lazım sonuç. Sadece bir convert için bu kadar pası projeye eklemek ne kadar mantıklı

Çok basit bir hata yaptığımı farkettim sonucu int64 yapıp ara değişkenleri integer yaptığım için patlıyomuşum.
Herkese iyi akşamlar Smile Saygılar.
function HexToDec(Str: string): int64  ;
var
 i, M: int64;
begin
 Result:=0;
 M:=1;
 Str:=AnsiUpperCase(Str);
 for i:=Length(Str) downto 1 do
 begin
   case Str[i] of
     '1'..'9': Result:=Result+(Ord(Str[i])-Ord('0'))*M;
     'A'..'F': Result:=Result+(Ord(Str[i])-Ord('A')+10)*M;
   end;
   M:=M shl 4;
 end;
end;
Fonksiyon tipini LongInt yerine UInt64 olarak değiştirip deneyin. Çok daha büyük sayılar devreye girmeyecekse mevcut durumu idare edebilir belki. Yoksa bu durum için yazılacak kodlar, bunca pas dosyasını projeye eklemekten çok daha maliyetli olabilir Big Grin .
işin garip tarafı VCL'de doğru sonuç verirken firemonkeyde saçmalıyor.
UInt64 veri tipi ile de denermisin,

http://docwiki.embarcadero.com/Libraries...tem.UInt64
(02-09-2018, Saat: 22:32)uparlayan Adlı Kullanıcıdan Alıntı: [ -> ]UInt64 veri tipi ile de denermisin,

http://docwiki.embarcadero.com/Libraries...tem.UInt64

Hocam denedim olmadı shl işlemi firemonkeyde saçmalıyor. Algoritmayı shl siz hale çektim düzeldi şimdi

(02-09-2018, Saat: 22:32)uparlayan Adlı Kullanıcıdan Alıntı: [ -> ]UInt64 veri tipi ile de denermisin,

http://docwiki.embarcadero.com/Libraries...tem.UInt64

Hocam fakat saçma geldi bana müsaitseniz kodu VCL de birde Firemonkeyde denermisiniz bir bende mi böyle oluyor.
VCL ve FMX'de windows x32 ve x64'te denedim, bende normal çalışıyor
(02-09-2018, Saat: 23:15)uparlayan Adlı Kullanıcıdan Alıntı: [ -> ]VCL ve FMX'de windows x32 ve x64'te denedim, bende normal çalışıyor

Android derlediğimde telefonda saçmalıyor zaten
Sayfalar: 1 2