Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#577

AW: Was nervt euch so, wärend der Programmierung oder so allgemein

  Alt 3. Nov 2011, 22:14
Mir ist grade die krankeste Idee gekommen, für einen Code:
Delphi-Quellcode:
for i in(function:TArray<Integer>var i:Integer;begin SetLength(Result,5);for i:=0to 4do Result[i]:=i*10;end)()do
  ShowMessage(Variant(i));
Eigentlich sollte es doch nervig sein, wenn wunderschöner Delphi-Code urplötzlich wie eine C-Krankheit aussieht, oder etwa nicht?

PS: Das ist die Kurzfassung einer for i := 0 to 40 step 10 do -Schleife ... falls man es, aus welchen Gründen auch immer, tatsächlich nicht erkennen sollt.



Delphi-Quellcode:
var
  i2: integer;


for i2 in (function: TArray<Integer>
           var
             i: Integer;
           begin
             SetLength(Result, 5);
             for i := 0 to 4 do
               Result[i] := i * 10;
           end)() do
  ShowMessage(IntToStr(i2));
Ich geb's zu, am Ende hab ich es dann doch noch so gelöst.
Delphi-Quellcode:
var
  i, i2: integer;

for i := 0 to 4 do begin
  i2 := i * 10;
  ShowMessage(IntToStr(i2));
end;
Oder wenigstens so
Delphi-Quellcode:
for i in TArray<Integer>.Create(0, 10, 20, 30, 40) do
  ShowMessage(IntToStr(i));
Ich hoffe jetzt wendet niemand genervt dem Delphi den Rücken zu und wanders zu QBasic ab.


Aber wirklich nervig ist eigentlich, daß TArray<Integer> und array of Integer nicht kompatibel sind, obwohl TArray<T> auch nur ein array of T ist

Delphi-Quellcode:
var
  G: TArray<Integer>;
  D: array of Integer;

D := G; // [DCC Fehler] U.pas(56): E2010 Inkompatible Typen: 'TArray<System.Integer>' und 'Dynamic array'
Aber OK, man soll sich ja nicht so aufregen ... an der sonst so kranken Vererbungsreihe der Generics liegt es dieses Mal nicht direkt.
Delphi-Quellcode:
var
  X: array of Integer;
  D: array of Integer;

X := D; // [DCC Fehler] U.pas(56): E2008 Inkompatible Typen
Denn der Witz ist, daß das sonst so typsichere/strenge Delphi durch die Generics "scheinbar" total verweichlicht wird.
Delphi-Quellcode:
var
  X: TArray<Integer>;
  D: TArray<Integer>;

X := D; // denn das geht zumindestens ^_^
$2B or not $2B

Geändert von himitsu ( 3. Nov 2011 um 22:44 Uhr)