Forum: Object-Pascal / Delphi-Language
by Rollo62,
26. Mai 2021
Schon klar,
aber ich brauche dann nur < Length() zu prüfen, was ich sowieso tun muss, und da schliesst sich der Kreis :stupid:
Zu dem Fail-first:
Es ist vieleicht die Frage was man als Fehler definiert, und was nicht.
Bei Div0 ist das ja klar.
Aber zum Beispiel könnte ein Ignorieren bei < 0 Teil der Funktion sein,
so dass man abhängig von einem Ergebnis eine Funktion auslösen kann.
...
Forum: Object-Pascal / Delphi-Language
by Rollo62,
26. Mai 2021
Ok, mir ging es eigentlich um cast vs. Guard, das wird jetzt eher philosophisch.
Aber gut:
1.) Wenn ALen = 0 dann macht die Routine mit 0-Elementen nichts : OK
2.) Wenn ALen < 0 dann kann die Routine mit < 0 Elementen auch nichts machen: So what ?
Bei 1.) ist es kein Parameterfehler, und ich sehe das bei 2.) sehr ähnlich.
Deshalb kommt ja der Gedanke Cardinal zu nutzen,...
Forum: Object-Pascal / Delphi-Language
by Rollo62,
26. Mai 2021
Ich verstehe Euch ja, und habe auch Integer an 1000 Stellen dafür genutzt.
Aber insbesondere bei Funktionsaufrufen würde ich mir gerne einen "Guard" ersparen,
deshalb der Cardinal
procedure CopyDing( const AArray : TBytes; const ALen : Integer )
begin
if ALen < 0 then
Exit; //<== DAS WÜRDE ICH SICHERHEITSHALBER EINBAUEN MÜSSEN, STATT CARDINAL ==
Forum: Object-Pascal / Delphi-Language
by Rollo62,
26. Mai 2021
Dankesehr, mir geht es um den Fall unten beschrieben, mit der blöden Meldung.
Forum: Object-Pascal / Delphi-Language
by Rollo62,
26. Mai 2021
Dankesehr für die Antworten.
Das war auch meine Vermutung.
Für alle Pos/Index ist das richtig, aber Length ?
Ich vermute Du meinst Pos/Length, oder wo hilft das bei Length Fehler zu Erkennen ?
Was daran blöd ist:
Forum: Object-Pascal / Delphi-Language
by Rollo62,
26. Mai 2021
Hallo zusammen,
ich hätte da mal die oben genannte, blöde Frage an die Sprachexperten.
Macht es aus irgendeinem Grund Sinn das System.Length ein Integer-Resultat zurückgibt für Arrays/Strings,
obwohl es dies logischerweise nie < 0 erreichen kann ?