Autor Beitrag
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 09.05.17 13:31 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Di 09.05.17 14:42 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Der Wert 0 soll FALSE liefern, und das geht in Ordnung. Ebenso liefert ByteBool FALSE, wenn die Werte -256 oder +256 gecastet werden.


Nunja, sind nicht schon wegen des Integerüberlaufes Byte(-256) = -1 und Byte(255) = 1?

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
aber wenn ich nun -255 bis -1, oder 1 bis 255 nehme, kommt TRUE heraus, dabei lese ich aus der Typ-Definition einen anderen Bereich für den genannten ByteBool heraus.


Ich nicht, jedenfalls nicht zwangsläufig.

ausblenden Delphi-Quelltext
1:
ByteBool = False..Boolean(255)					


suggeriert doch vielmehr nur, daß es 255 (oder gar 256 wegen Boolaean(0)) Werte neben dem False gibt. Daß diese zu einem Wert - true - zusammengefaßt werden, wissen wir eben, auch Delphi, doch "ab wann", d.h., ab welchem x bei Boolean(x) das geschieht, ist Menschenwerk bzw. willkürlich, genauso schon die Zuordnung der Wahrheitswerte zu Integerzahlen.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 09.05.17 15:40 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Di 09.05.17 15:56 
Auch wenn sich das Thema erledigt hat...

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Mit folgender Methode kann ich nun auch weitere Bereiche testen, und siehe da:


Siehe was?

Die Ausgabe der Funktion sagt eigentlich nichts neues aus, eben nur das, was in dieser Diskussion vorher schon festgestellt wurde.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 09.05.17 16:02 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: Delphi-Laie
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Di 09.05.17 21:37 
Gut, zugegeben, erst jetzt verstehe ich Dein Ansinnen vollends.

Das ist eben ein Zugeständnis an C & Derivate.

Strenggenommen war es schon ein Fehler, das "interne Format" des booleans offenzulegen und erst recht, Typkonvertierungen zwischen boole'schen und integren Werten / Variablen zuzulassen. Wahr und Falsch haben zunächst einmal nicht das geringste mit (natürlichen oder sonstwelchen) Zahlen zu tun.

Wenn ich sehe, mit welcher Leichtfertigkeit in den C-Sprachen mit bools und integren Werten "jongliert" wird...es gibt praktisch kaum einen oder gar keinen Unterschied zwischen beiden. Klar, man ist so flexibler, aber die Fehlerquellen häufen sich immens, auch die Lesbarkeit ist - diplomatisch formuliert - eher eine Übungssache. Am ekelhaftesten finde ich allerdings diesen Zeigerfetischismus. Array und Zeiger gleichzubehandeln, erzeugt bei mir kaltes Grausen. Für mich haben Zeiger in einer Hochsprache kaum eine Existenzbereichtigung (ich fand bisher nur einen Fall, in dem sie wirklich plausibel auch auf Hochsprachenebene sind (auch wenn das natürlich kein Maßstab ist bzw. ich keiner bin)).

Tja, Pascal & Verwandte wurden eben von einem (sehr wahrscheinlich akribischen) Professor, einem Informatiker, einem Theoretiker, C & Co. stattdessen von Programmierern, von Praktikern, denen maximale Freiheit das wichtigste war, entwickelt (soweit mir bekannt). Das ist beiden Sprachfamilien deutlich anzumerken.
doublecross
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 149
Erhaltene Danke: 27

Windows 7
C#; Visual Studio 2015
BeitragVerfasst: Mi 10.05.17 14:04 
Hi,

user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Für mich haben Zeiger in einer Hochsprache kaum eine Existenzbereichtigung (ich fand bisher nur einen Fall, in dem sie wirklich plausibel auch auf Hochsprachenebene sind (auch wenn das natürlich kein Maßstab ist bzw. ich keiner bin)).


in ihrer Allgemeinheit muss ich dieser Aussage widersprechen. Du musst da auch bedenken das beide Sprachen, sowohl C als auch Pascal aus einer Zeit kommen als man noch sehr viel Direkter auf die Hardware zugegriffen hat. Damals wurde Wahrscheinlich häufiger eine Diode, welche über Adresse X anzusprechen ist, zum leuchten gebracht als ein Grafisches Objekt auf den Bildschirm gezeichnet. Auch war damals Speicher knapp und die Rechner langsam, beides Situationen bei denen unglaublich Flexible und Ratten schnelle Zeigeroperationen hilfreich sein können.
Zugegeben, heutzutage haben diese Dinge meist weniger Relevanz, ganz aufgeben würde ich sie nicht wollen. Vor ca. 2 Jahren, habe ich glaube ich das letzte Mal in Delphi eine Klasse zum schnellen zugriff auf komplexere Datenstrukturen geschrien, welche ihre Daten Intern per verschiedenster Zeiger Adressierte, weil alle Standard Klassen dabei zu unperformant waren. Sicher das war ein Sonderfall, aber ein solcher läuft einen alle paar Jahre mal über den Weg und dann sollte man als Programmierer auch die volle Bandbreite seiner Sprache ausschöpfen und entsprechend mit Zeigern arbeiten können. Ich bin in solchen Situationen jedenfalls immer froh, wenn die Jeweilige Sprache das Konzept noch kennt.

Ich gebe dir aber völlig recht damit, dass die C Jungs, es damit übertrieben haben und viele Datentypen dort einfach zu Low-Tec sind. Am schlimmsten äußert sich das meine Ansicht nach beim alsten C-String, bzw. dem char[] Array. Bei dem ich es unglaublich Umständlich finde, dass man jeder Funktion die ihn verändern soll noch einen Parameter mehr übergeben muss, damit bloß nicht mehr Speicher belegt wird als für diesen reserviert wurde. Aber wenn man ehrlich ist, dann war der ursprüngliche Pascal-String, mit seinen Maximal 255 Zeichen Länge auch nicht das Gelbe vom Ei.