AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Array in ShowMessage ausgeben?
Thema durchsuchen
Ansicht
Themen-Optionen

Array in ShowMessage ausgeben?

Ein Thema von AlexII · begonnen am 28. Jan 2014 · letzter Beitrag vom 14. Jan 2023
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

AW: Array in ShowMessage ausgeben?

  Alt 28. Jan 2014, 17:52
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 mehr berechnen. (Delete mit Low und Length)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (28. Jan 2014 um 17:57 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.196 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Array in ShowMessage ausgeben?

  Alt 28. Jan 2014, 18:01
Die GetEnumerator -Geschichte ist einer der spannenderen Sachen, die ich mir noch aufgehoben habe. Deshalb kann ich dazu nichts mehr sagen
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Array in ShowMessage ausgeben?

  Alt 28. Jan 2014, 18:15
Bei einigen Typen, wie eben den Arrays, wird der Enumerator direkt vom Compiler erzeugt.
Da wird dann einfach für array of T , array[x..x] 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 nun wohl auch endlich? )

Somit blieb, bei diesen Default-Enumeratoren für Arrays, nur der Weg über die Compiler-Magic.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.196 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Array in ShowMessage ausgeben?

  Alt 28. Jan 2014, 18:21
(an Interfaces geht dann nun wohl auch endlich?)
Als ob
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.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Array in ShowMessage ausgeben?

  Alt 29. Jan 2014, 12:58
Bei einigen Typen, wie eben den Arrays, wird der Enumerator direkt vom Compiler erzeugt.
Da wird dann einfach für array of T , array[x..x] of T , bzw. TArray<T> ein passender TEnumerable<T> erzeugt.
Hö? Ist das nicht nach wie vor Compiler Magic bei arrays?
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Array in ShowMessage ausgeben?

  Alt 29. Jan 2014, 14:07
Gute Frage

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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz