AW: Array in ShowMessage ausgeben?
Die
Delphi-Quellcode:
-Geschichte ist einer der spannenderen Sachen, die ich mir noch aufgehoben habe. Deshalb kann ich dazu nichts mehr sagen :oops:
GetEnumerator
Das interessante ist ja, dass etwas überhaupt kein IEnumerable<T>-Interface unterstützen muss, um mit for..in drüberrutschen zu können. Was ist hier los? Duck-Typing? Irgendwann schaue ich da mal unter die Haube. Aber wir schweifen ab 8-) |
AW: Array in ShowMessage ausgeben?
Bei einigen Typen, wie eben den Arrays, wird der Enumerator direkt vom Compiler erzeugt.
Da wird dann einfach für
Delphi-Quellcode:
,
array of T
Delphi-Quellcode:
, bzw.
array[x..x] of T
Delphi-Quellcode:
ein passender
TArray<T>
Delphi-Quellcode:
erzeugt.
TEnumerable<T>
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 nun wohl auch endlich? ) Somit blieb, bei diesen Default-Enumeratoren für Arrays, nur der Weg über die Compiler-Magic. |
AW: Array in ShowMessage ausgeben?
Zitat:
Kann aber sein dass es gute Gründe dafür gibt, nie darüber nachgedacht. XE3 hat meine ich die Möglichkeit für Record Helper für eingebaute Typen wie Integer eingeführt, XE4 dann auch Standard-Implementationen vorgegeben. |
AW: Array in ShowMessage ausgeben?
Zitat:
Hm... hier braucht man doch auch kein Array... wozu? Geht doch auch ohne!
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var i : Integer; s : String; begin s := ''; for i:=1 to 8 do begin s := s + IntToStr(Random(9)); end; ShowMessage(S); end; |
AW: Array in ShowMessage ausgeben?
Zitat:
|
AW: Array in ShowMessage ausgeben?
Zitat:
ich habe nur weiter überlegt und sah das mein Ansatz mit Array überflüssig ist. |
AW: Array in ShowMessage ausgeben?
Zitat:
|
AW: Array in ShowMessage ausgeben?
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. |
AW: Array in ShowMessage ausgeben?
Zitat:
Das ist wirklich genial und genau nach sowas habe ich gesucht. Vielen Dank. in VBA und Python kann man die Arrays direkt ausgeben. Das fehlt mir in Delphi. Viele Grüße rainer |
AW: Array in ShowMessage ausgeben?
Wieso nicht einfach mit
Delphi-Quellcode:
?
String.Join(...)
Delphi-Quellcode:
Alternativ kannst du natürlich hier auch einen anderen Separator wie zB.
ShowMessage(String.Join(String.Empty, MyStringArray))
Delphi-Quellcode:
oder
sLineBreak
Delphi-Quellcode:
verwenden.
','
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz