AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

sehr große Zahlen MOD

Ein Thema von Texas · begonnen am 27. Jun 2013 · letzter Beitrag vom 28. Jun 2013
Antwort Antwort
Texas

Registriert seit: 15. Jul 2005
Ort: Laatzen
59 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

sehr große Zahlen MOD

  Alt 27. Jun 2013, 17:21
Hallo,

ich versuche gerade eine 24 Stellige Zahl mit MOD zu berechnen. Leider ohne erfolg. Ich benötige die Berechnung für die IBAN Prüfzahl um meine alten Kontonummern und BLZ's auf
SEPA-Umzustellung.

Weiß jemand wie man so große Integerzahlen berechnen kann oder gibt es einen Intergertype der so große Zahlen verwaltet. bzw gibt es einen andere möglichkeit für so eine Berechnung?

Viele Grüße

Michael
Michael
  Mit Zitat antworten Zitat
Benutzerbild von MrMooed
MrMooed

Registriert seit: 18. Feb 2012
101 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: sehr große Zahlen MOD

  Alt 27. Jun 2013, 17:34
Vielleicht sind BigInteger genau das was du suchst - wobei die bei "nur" 24 Stellen vielleicht etwas zu überdimensioniert sind

Geändert von MrMooed (27. Jun 2013 um 19:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#3

AW: sehr große Zahlen MOD

  Alt 27. Jun 2013, 18:51
Ich vermute, die Zahl liegt als String vor. Dann kannst du die sogar Zeichenweise abarbeiten. Es gilt nämlich
(a + b) mod c = ((a mod c) + (b mod c)) mod c

Solange der Divisor noch als Integer darstellbar ist und damit das Ergebnis zwangsläufig auch, tut es auch somit folgende Funktion:
Delphi-Quellcode:
function LongMod(const Zahl: string; Divisor: Integer): Integer;
var
  Ch: Char;
begin
  Result := 0;
  for Ch in Zahl do begin
    Result := (10*Result + Ord(Ch) - Ord('0')) mod Divisor;
  end;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Texas

Registriert seit: 15. Jul 2005
Ort: Laatzen
59 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: sehr große Zahlen MOD

  Alt 28. Jun 2013, 06:02
Super
besten dank für die Vorschläge
Michael
  Mit Zitat antworten Zitat
Texas

Registriert seit: 15. Jul 2005
Ort: Laatzen
59 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: sehr große Zahlen MOD

  Alt 28. Jun 2013, 12:55
irgendwo mache ich was falsch

beim aufrufen der funktion gibt es folgende fehlermeldung

[Fehler] Unit1.pas(38): Operator ist auf diesen Operandentyp nicht anwendbar
in zeile 38 steht
for Ch in Zahl do begin


Delphi-Quellcode:
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
  i := LongMod('210501700012345678131400',97)
end;

function TForm1.LongMod(const Zahl: string; Divisor: Integer): Integer;
var
  Ch: Char;
begin
  Result := 0;
  for Ch in Zahl do begin
    Result := (10*Result + Ord(Ch) - Ord('0')) mod Divisor;
  end;
end;
was mache ich falsch
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#6

AW: sehr große Zahlen MOD

  Alt 28. Jun 2013, 13:07
was mache ich falsch
Ganz einfach: du verwendest eine zu alte Delphi-Version

Delphi-Quellcode:
function TForm1.LongMod(const Zahl: string; Divisor: Integer): Integer;
var
  I: Integer;
begin
  Result := 0;
  for I := 1 to Length(Zahl) do begin
    Result := (10*Result + Ord(Zahl[I]) - Ord('0')) mod Divisor;
  end;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz