Forum: Programmieren allgemein
Delphi
by himitsu,
29. Jan 2014
Gute Frage :gruebel:
Kann natürlich sein, daß die das immernoch als Compilermagic implementiert haben.
Obwohl, vom optimalen code her, wäre es wahrscheinlich, daß es immernoch wie eine While-Schleife ist.
Sagen wir es einfach mal so: Für uns sieht es wie ein Enumerator aus (so isses verständlicher) und was intern gemacht wird, ignorieren wir.
Forum: Programmieren allgemein
Delphi
by himitsu,
28. Jan 2014
Bei einigen Typen, wie eben den Arrays, wird der Enumerator direkt vom Compiler erzeugt.
Da wird dann einfach für array of T, array of T, bzw. TArray<T> ein passender TEnumerable<T> erzeugt.
Bis vor Kurzem konnte man auch noch keine Record-Helper an einfache Typen (wie z.B. Arrays, Integer, String) hängen.
Nur Record-Helper für Records und Class-Helper für Klassen. (an Interfaces geht dann...
Forum: Programmieren allgemein
Delphi
by himitsu,
28. Jan 2014
Die sind intern versteckt.
z.B. viele Standard-Enumeratoren werden automatisch über einen generischen Basistyp erzeugt und das Default(Typ) ist auch von da.
Für Arrays wird intern ein Enumator generisch erzeugt, sobald man das Array mit For-In verwendet.
Als Char war der halt "einfacher", borallem beim letzen Beispiel.
Aber da den Seperator an den String-Anfang und man muß auch nichts...
Forum: Programmieren allgemein
Delphi
by himitsu,
28. Jan 2014
Du kannst auch gern die Generics etwas ausnutzen.
function TIntegerArrayHelper.ToString: String;
var
Element: Integer;
begin
Result := Default(String);
for Element in Self do
Result := Result + Element.ToString;
end;