Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Variablentypen (https://www.delphipraxis.net/64367-variablentypen.html)

FrÄnK 2. Mär 2006 16:30


Variablentypen
 
hihi,

ich habe mal eine für mich sehr schwere frage, aber vieleicht weiß jemand rat...

bei einem mathematischen problem, brauche ich einen variblentypen der extrem groß ist, da die errechnete Zahl auch EXTREM groß wird. keiner der Typen die Delpi selber stellt sind dafür allerdings groß genug.

wie kann ich selber einen typen kreiern, der groß genug ist. es soll sich dabei um eine art integer handeln, sprich eine (positive) ganzahlige variable.

ein freund von mir war der meinung ich müsse direct auf dem arbeitspeicher platz reservieren und dass dann dort reinschreiben, aber ich habe absolut keinen plan wie das gehen soll, zumal ich dami ja noch rechnen muss.

bitte helft mir ich wäre euch sehr dankbar

konda 2. Mär 2006 16:37

Re: Variablentypen
 
Erstmal :party: WILLKOMMEN in DP :party:

Wie groß wird die Zahl den ungefähr? Vielleicht könntest du die Zahl zum String machen und dann den String aufteilen und einzeln abspeichern? :cyclops: Und ist ein Longinteger nicht groß genug?

gmc616 2. Mär 2006 16:40

Re: Variablentypen
 
Oder ein int64 (-2^63..2^63-1)?

FrÄnK 2. Mär 2006 16:43

Re: Variablentypen
 
nein...

ich möchte primzahlen berechen und zwar mersenne-primzahl...
d.h.
2^k-1 ist eine primzahl, dabei ist k auch eine primzahl

wenn ich für k sieben einsetze erhalte ich 127, setze ich das wioederum für k ein so ist die zahl schon zu groß um in jegliche typen zu passen.

in einen string kann ich es nicht packen da ich noch weiter rechnen will

Alexander Roth 2. Mär 2006 16:48

Re: Variablentypen
 
Also, man kann natürlich Int64 verwenden. Aber Int64 ist nur
Zitat:

(-2^63..2^63-1)
Das heißt es sind nur im Dezimalsystem nur so 19 Stellen.

Das ist für große Zahlen doch ziemlich wenig.

Das problem ist auch nicht die Speicherverwaltung bei Delphi sondern die Rechenbarkeit. Du müsstest alle Operationen selbst programmieren.

Glücklicherweise gab es schon jemanden der daran gedacht hat und eine super Biblothek geschrieben hat:
DEC von Hagen Reddmann hier auch bekannt als negaH.

Suche mal: Hier im Forum suchenDEC

Da kannst du drauf zugreifen und die perfekt optimierten Routinen für alles Mögliche verwenden.
Die Zahlen können so weit ich weis bis 2^4096 also 1233 Stellen groß werden. Vielleicht klappt es noch größer.

Darfst du nur bei Freeware-Programmen nicht bei komerziellen verwenden.

FrÄnK 2. Mär 2006 17:01

Re: Variablentypen
 
mmh....is ja wirklich nett, danke dafür...

aber ich glaube nicht dass das das ist was ich suche. ich möchte ja nur wissen wie ich einen eigenen variablentyp erstellen kann, damit ich es A) verstehe, was ich mache und B) individueller an das problem ran gehen kann

trotzdem danke

Flocke 2. Mär 2006 17:32

Re: Variablentypen
 
Wenn du dir einen eigenen Variablentypen dafür deklarierst, dann musst du auch *ALLE* Berechnungen 'von Hand' machen (bzw. dafür neu erfinden), da das dann die CPU nicht mehr für die übernimmt (wie bei den normalen Delphi-Datentypen).

Beispiel: wenn du mit BCD-Zahlen arbeitest passen 4 Milliarden Dezimalstellen in 2 GB Speicher, reicht dir das denn? :stupid:

FrÄnK 2. Mär 2006 17:35

Re: Variablentypen
 
was sind BCD-Zahlen?!

Luckie 2. Mär 2006 17:38

Re: Variablentypen
 
Binary Coded Decimal. Hätte man aber auch leicht über die Wikipedia oder Google selber rausfinden können.

jfheins 2. Mär 2006 17:38

Re: Variablentypen
 
Binary Coded Decimal - schau mal bei Wikipedia ;)

Der rote Kasten war zwar da, aber Luckies Post nicht ... :gruebel:

ausserdem hat mein post einen sichlichen Mehrwert :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr.
Seite 1 von 2  1 2      

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