Forum: Object-Pascal / Delphi-Language
by himitsu,
15. Aug 2018
Es fehlt ein END, das vom CASE, wenn ich das letzte END der Funktion zuschreibe.
Und ich würde wenigstens eine Meldung beim ersten Result := '' erwartet. (wurde zugewiesen aber nicht verwendet)
Ansonsten ist hier der String (gemanagte Typ) ein Problem, der per se immer initialisiert ist, entgegen einem Integer-Result.
Nur ist der eben extern initialisiert und das kann probleme geben,...
Forum: Object-Pascal / Delphi-Language
by himitsu,
15. Aug 2018
Global nur für sowas wie den C++-Schrott,
aber das Andere immer nur lokal, um die entsprechende Stelle.
Forum: Object-Pascal / Delphi-Language
by himitsu,
15. Aug 2018
und die C++-Warnungen vonwegen Create ohne Parameter, überladene Property usw. was der CppBuilder nicht kann.
Forum: Object-Pascal / Delphi-Language
by himitsu,
15. Aug 2018
Wobei man diese Hints/Warnings "nur" an der entsprechenden Stelle dann auch deaktivieren kann.
Forum: Object-Pascal / Delphi-Language
by himitsu,
15. Aug 2018
OK, hier stimmt es zufällig, aber irdenwann könnte mal wer auf die Idee kommen und eine der IF-Bedingungen ändern.
Und was spricht nun dagegen sich die 2 Sekunden zu nehmen und ein else i := 0; oder gantz oben einfach ein i := 0 einzufügen?
Forum: Object-Pascal / Delphi-Language
by himitsu,
15. Aug 2018
Ich hatte gestern bei uns eine Funktion gefunden, da stand ganz am Ende etwas wie das
if xxx > 0 then
zzz.FieldByName('fff').AsInsteger := xxx;
Früher war mal oben dem xxx was zugewiesen, aber das wurde gelöscht.
Dieses lokale xxx ist nicht initialisiert und kann potentiell jeden beliebigen Wert enthalten.
Zufällig war es zum glück lange Zeit 0 und es passierte nichts.
Tja, aber...
Forum: Object-Pascal / Delphi-Language
by himitsu,
15. Aug 2018
Egal ob "geht garnicht" oder "geht eventuell nicht",
das Verhalten ist so nicht vorgegeben, also kann/darf man sich nicht auf sowas verlassen.
Außer in Ausnahmefällen, kann darf sowas niemals "immer" in Produktivcode verwendet werden.
Forum: Object-Pascal / Delphi-Language
by himitsu,
14. Aug 2018
Was ich ja bereits gesagt hatte:
Außerhalb der Schleife ist die Schleifenvariable undefiniert, also es wird nicht "garantiert", dass sie dort einen bestimmten wert hat.
Dass sie es doch mal haben kann, ist eine andere Sache, auf die man sich aber niemals verlassen kann.
Die Variable kann/darf man außerhalb auch gern wiederverwenden, für eine andere Schleife oder für sonstwas, aber dort hat...
Forum: Object-Pascal / Delphi-Language
by himitsu,
14. Aug 2018
...
50
Halbzeit
52
...
sieht nicht ganz richtig aus.
Forum: Object-Pascal / Delphi-Language
by himitsu,
12. Aug 2018
Auf was Result wohl steht, wenn das Array leer ist? :roll:
Und per Definition sind Array-Variablen außerhalb der Schleife ungültig/undefiniert, unabhänbgig davon ob das manchmal/oftmals nicht so ist.