Forum: Algorithmen, Datenstrukturen und Klassendesign
by jaenicke,
4. Jun 2012
Letztlich bringt es nix darüber groß zu diskutieren, jeder muss mit der Entscheidung leben. Mag er sie schlecht finden wie ich oder gut wie andere.
Insofern belasse ich das mal dabei, meine Meinung dazu habe ich ja genau genug erklärt.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by jaenicke,
4. Jun 2012
Nein, kenne ich nicht, das habe ich mir nicht angeschaut, da ich auch dort stets konkrete Typen benutze.
Ist es denn dort auch so, dass es einen generischen Integertypen gibt, der von 16-Bit auf 32-Bit gewachsen ist, aber von 32-Bit auf 64-Bit nicht? Bei C# wüsste nicht welcher das sein sollte, int war schließlich immer 32-Bit und ist auch kein generischer Typ.
C++ kenne ich nicht gut genug um...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by jaenicke,
4. Jun 2012
Ich sprach ja von demselben Code, dass man das verhältnismäßig einfach lösen kann, ist klar.
Nun muss man aber jeden Code durchforsten, bei dem man von der eigentlichen Selbstverständlichkeit, dass Integer nach dem Schritt zu 32-Bit auch bei dem zu 64-Bit mitwächst, ausgegangen ist.
Ich habe z.B. genau aus diesem Grund schon seit Jahren Integer an solchen Stellen benutzt und LongInt usw. bei...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by jaenicke,
3. Jun 2012
Das ist aber manchmal der einzige Weg gewesen. NativeInt gab es ja früher noch nicht.
Die Entscheidung Integer bei 32-Bit zu belassen bedeutet gleichzeitig, dass man an manchen Stellen keinerlei Möglichkeit hat, denselben Code für alte und neue Delphiversionen zu benutzen.
Hätte man ihn auf 64-Bit mitwachsen lassen, hätte ausschließlich fehlerhafter Code nicht mehr funktioniert. Genau so wie...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by jaenicke,
3. Jun 2012
Ja, gibt es und auch {$REALCOMPATIBILITY ON} funktioniert dort genauso (Real --> Real48).
Forum: Algorithmen, Datenstrukturen und Klassendesign
by jaenicke,
3. Jun 2012
Nein, ein generischer Datentyp. Man kann zwar ziemlich sicher davon ausgehen, dass es in Zukunft immer Double sein wird, aber festgeschrieben ist das nicht.
Und wenn irgendwo mit {$REALCOMPATIBILITY ON} die Kompatibilität eingeschaltet wird, ist es z.B. kein Double mehr, sondern Real48.
Fazit:
Am besten nie Real benutzen, es sei denn der Datentyp ist wirklich absolut egal.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by jaenicke,
3. Jun 2012
Real ist äußerst ungeeignet, da er keinem bestimmten Typ entspricht, sondern ein generischer Typ ist. Überspitzt gesagt sagst du damit dem Compiler: "Nimm irgendeinen Typ mit Nachkommastellen, welcher ist mir egal."
Insbesondere für Schnittstellen sollte man daher grundsätzlich konkret Single (4 Byte), Double (8 Byte) usw. benutzen, da es dort sehr wichtig ist, dass ein konkreter Typ benutzt...