Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi 787454545454545645454544 ist kein gültiger integerwert (https://www.delphipraxis.net/105307-787454545454545645454544-ist-kein-gueltiger-integerwert.html)

Gehstock 19. Dez 2007 16:24


787454545454545645454544 ist kein gültiger integerwert
 
egal was ich mache ich bekomm Obenstehende Fehlermeldung (Titel)

mein Code
Delphi-Quellcode:
var
s : String;
begin
s:=Edit1.Text+Edit2.Text+Edit7.Text+Edit5.Text;
s := InttoStr(StrtoInt64(s) mod 45);

mkinzler 19. Dez 2007 16:25

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Die Zahl ist halt zu groß für einen Integer

Die Muhkuh 19. Dez 2007 16:27

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Int64 verwenden. ;-)

Christian Seehase 19. Dez 2007 16:28

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Moin Manuel,

Zitat:

Zitat von Die Muhkuh
Int64 verwenden. ;-)

Der Wert ist auch für Int64 (viel) zu gross ;-)

Gehstock 19. Dez 2007 16:29

Re: 787454545454545645454544 ist kein gültiger integerwert
 
hatte ich auch schon so etwa geht aber auch net


Delphi-Quellcode:
var
s : String;
i : Int64;
begin
s:=Edit1.Text+Edit2.Text+Edit7.Text+Edit5.Text;
i := StrToInt64(s)
was kann ich noch tun

Nuclear-Ping 19. Dez 2007 16:30

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Was willst du denn mit so'ner Zahl machen?

mkinzler 19. Dez 2007 16:30

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Dir zahl ist zu groß für einen normalen Integer.
-BigInt
-VLI

Die Muhkuh 19. Dez 2007 16:30

Re: 787454545454545645454544 ist kein gültiger integerwert
 
// Murks

idontwantaname 19. Dez 2007 16:30

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Suche mal im Forum nach Hier im Forum suchenLarge Integer oder Hier im Forum suchenVery Big Int oder ähnlichem ;)

Dax 19. Dez 2007 16:34

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Zitat:

Zitat von Gehstock
was kann ich noch tun

In deinem Fall: spezielle Eigenschaften der mod-Arithmetik ausnutzen.

(a + b) mod x = ((a mod x) + (b mod x)) mod x

Sidorion 20. Dez 2007 16:08

Re: 787454545454545645454544 ist kein gültiger integerwert
 
@dax: Du weisst schon, dass wenn man Strings 'addiert', diese aneinandergekettet werden, oder? Insofern ist Deine Formel zwar allgemein hilfreich, im konkreten Fall jedoch Unsinn.

('5'+'6') mod 4=56 mod 4 = 0
((5 mod 4)+(6 mod 4)) mod 4= (1+2) mod 4=3

Dax 20. Dez 2007 16:10

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Zitat:

Zitat von Sidorion
@dax: Du weisst schon, dass wenn man Strings 'addiert', diese aneinandergekettet werden, oder? Insofern ist Deine Formel zwar allgemein hilfreich, im konkreten Fall jedoch Unsinn.

Ja, das ist mir dann später auch aufgefallen. In einer Antwort auf eine dazugehörige Frage vom Threadersteller habe ich das auch geantwortet.

Muchacho 13. Dez 2009 16:47

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Hi, :-D

also ich habe jetzt auch ähnliches Problem.

Wie kann man solche Zahl wie hier: ‘787454545454545645454544‘
auf irgendwelche Integer Zahl umwandeln (ähnlich wie StrToInt64)?

Muchacho

Medium 13. Dez 2009 16:53

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Auf Integer, wie hier schon gesagt wurde, überhaupt nicht. Mit den 32 Bit eines Integers (bzw. Cardinals) kommst du schlicht nicht über 2^32-1 = 4.294.967.295. Auch Int64 ist begrenzt, und zwar eben bei 2^64-1 = 18.446.744.073.709.551.615

Sobald du da drüber liegst, kommst du um die Verwendung externe BigNum-Libraries nicht mehr herum, weil das nativ a) kein Prozessor und b) kein Compiler unterstützt.

(Seit wann ist Dax eigentlich ganz weg!? :shock:)

mimi 13. Dez 2009 16:55

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Die Antwort ist doch schon hier im Thread drin:
Zitat:

Suche mal im Forum nach Suche in der Delphi-PRAXiSLarge Integer oder Suche in der Delphi-PRAXiSVery Big Int oder ähnlichem Wink

Muchacho 13. Dez 2009 16:59

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Hi Medium, 8-)

nun bin ich bei diesen Berechnungen nicht besonders stark. :oops:

Vielleicht kennst Du mir bisschen helfen? :wall:

Wenn ich also solche Zahl modulo 49 teilen möchte wie kann ich das machen?

Mich interessiert nur das Ergebnis mit mod 49


Muchacho

Muchacho 13. Dez 2009 17:00

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Zitat:

Zitat von mimi
Die Antwort ist doch schon hier im Thread drin:
Zitat:

Suche mal im Forum nach Suche in der Delphi-PRAXiSLarge Integer oder Suche in der Delphi-PRAXiSVery Big Int oder ähnlichem Wink

Was denkst Du habe ich letzte 2 Stunden gemacht?

mimi 13. Dez 2009 17:07

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Es gibt im LazarusForum ein Projekt, ich meine das kann auch mit Großen Zahlen umgehen:
http://www.promathika.de/
Op das jetzt auch unter Delphi läuft weiß ich nicht genau. Vielleicht hilft es dir ja, wenn du dort in den Soruce-Code schaust...
Ich habe hier auch schon ein Unit gesehen irgendwie mit den Namen BigInt oder so...
http://www.codeproject.com/KB/cs/BigInt.aspx
z.b. sieht da nach aus.
oder auch hier:
http://www.delphipraxis.net/internal...t.php?t=134429

alzaimar 13. Dez 2009 17:12

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Zitat:

Zitat von Muchacho
Zitat:

Zitat von mimi
Die Antwort ist doch schon hier im Thread drin:
Zitat:

Suche mal im Forum nach Suche in der Delphi-PRAXiSLarge Integer oder Suche in der Delphi-PRAXiSVery Big Int oder ähnlichem Wink

Was denkst Du habe ich letzte 2 Stunden gemacht?

Ach, und nix gefunden? :gruebel:

Muchacho 13. Dez 2009 17:19

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Hi Alzaimar :-D

Ich habe zuerst gedacht, dass dies eine leichte Angelegenheit ist.

Leider komme ich überhaupt nicht weiter (auch mit Links von Michael).

Bin erstaunt, da solche Zahlen werden auch z.B. bei IBAN Berechnungen erzeugt
und anschließend mit modulo 97 behandelt, also offensichtlich keine Zauberei.

Muchacho

himitsu 13. Dez 2009 17:30

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Warum kommst du da nicht weiter?

Der letzte Link vom Michael, ist doch voller Informationen und vieler Links zu dp-externen Big-Num-Libraries.
Dabei haben wir sogar mehrere Libs hier in der DP.

'ne "Einfache" hab sogar ich zu bieten
http://www.delphipraxis.net/internal...t.php?t=159592

Muchacho 13. Dez 2009 18:31

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Nun bin ich einem Link von Michael mit BigInt (Jahrgang 2003) gefolgt und implementiert (ohne Fehler).

Jetzt wollte ich mit dieser wunder Unit rechnen und siehe da: Exception ohne Ende.

Schade

Danke Himitsu, aber leider weiß ich mit Dateien *. 7z nichts anzufangen.

Können Deine Units überhaupt mein Problem lösen?

Habe auch Fragen in anderen Foren gesehen mit gleichem Ergebnis wie diese hier: Nichts

Falls irgendjemand etwas für mich hätte wäre ich sehr dankbar

Muchacho

mimi 13. Dez 2009 18:44

Re: 787454545454545645454544 ist kein gültiger integerwert
 
*.7z ist ein Packformat was mit dem 7zip Entpackt werden kann. Das ist ein Kostenlosen Tool was es für Windows und Linux gibt.
http://www.7-zip.org/

Poste doch mal den Code, wie du es gemacht hast....

Muchacho 13. Dez 2009 18:52

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Michael, :-D

danke für Dein Interesse.

Habe natürlich alles richtig gemacht. Die besagte Units ist bei einer interner Routine mit Zugriffsverletzung zusammengebrochen (habe im Source nachverfolgt).

Jetzt überlege ich die ganze Zeit wie kann ich solche Zahl (eher STRING) durch eine Zahl wie 49 dividieren (MOD).

Vielleicht lässt sich so was auf kleinere Schritte verteilen (z.B. String teilen).

Ich weiß noch nicht, aber irgendwie muss ich es schaffen.

Muchacho

mimi 13. Dez 2009 19:03

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Es wird höchstwahrscheinlich eine Funktion in der Unit dafür geben. Such mal nach Dividieren in der Unit vielleicht auch Div oder Divi oder sowas....

himitsu 13. Dez 2009 19:06

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Muchacho
Jetzt überlege ich die ganze Zeit wie kann ich solche Zahl (eher STRING) durch eine Zahl wie 49 dividieren (MOD).

Meine Lib rechnet nur mit "Strings" ... drum auch der Name.
(daduch ist sie zwar nicht die Schnellste im Rechnen, aber 0,0015 Sekunden sollte für dich wohl ausreichen)

Delphi-Quellcode:
Können Deine Units überhaupt mein Problem lösen?
Im Anhang ein Bild der Demo aus diesem Thread (diese hättest du auch ohne Bei Google suchen7ZipBei Google suchen7z testen können)

Muchacho 13. Dez 2009 19:10

Re: 787454545454545645454544 ist kein gültiger integerwert
 
hahaha

Danke Himitsu,

wolte gerade selbst was schreiben. :gruebel:

Ich probiere es aus und sage hier Bescheid

Muchacho

alzaimar 13. Dez 2009 19:14

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Zitat:

Zitat von Muchacho
Bin erstaunt, da solche Zahlen werden auch z.B. bei IBAN Berechnungen erzeugt
und anschließend mit modulo 97 behandelt, also offensichtlich keine Zauberei.

Zitat:

Zitat von Dax
(a + b) mod x = ((a mod x) + (b mod x)) mod x

Dann geht das ohne große Zahlen.
Delphi-Quellcode:
Function Modulo (VerdammtGrosseZahl : String; Modulo : Integer) : Integer;
Var
  Zahl : Integer;
  i : integer;

Begin
  Zahl := 0;
  for i:=1 to length (VerdammtGrosseZahl) do
    // Zahl := (Zahl*10 + Ord(VerdammtGrosseZahl[i]) - 10) mod Modulo;
    Zahl := (Zahl*10 + Ord(VerdammtGrosseZahl[i]) - Ord('0')) mod Modulo;
End;
[edit] Code verbessert [/edit]

Muchacho 13. Dez 2009 19:27

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Hi Alzaimar :-D



In Deiner Funktion ist noch etwas nicht in Ordnung:

'700901001234567890131400' mod 97 muss gleich 90 sein

Muchacho

himitsu 13. Dez 2009 19:33

Re: 787454545454545645454544 ist kein gültiger integerwert
 
@alzaimar: meinst du nicht -Ord('0') statt -10 ?


http://www.delphitricks.com/source-c...e_an_iban.html

Muchacho 13. Dez 2009 19:41

Re: 787454545454545645454544 ist kein gültiger integerwert
 
hahaha Alzaimar :-D

Du bist genial :-D

Wie Himitsu meint -Ord('0') ist richtig (DANKE Dir auch !!!)

Hurrrrrrrrrrrrrrrrrra :dancer:

Muchacho

alzaimar 13. Dez 2009 19:55

Re: 787454545454545645454544 ist kein gültiger integerwert
 
Zitat:

Zitat von himitsu
@alzaimar: meinst du nicht -Ord('0') statt -10 ?

:oops: Abtippverwechsler.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:36 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