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
Seite 2 von 2     12   
Der schöne Günther

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

AW: Array in ShowMessage ausgeben?

  Alt 28. Jan 2014, 19: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.184 Beiträge
 
Delphi 12 Athens
 
#12

AW: Array in ShowMessage ausgeben?

  Alt 28. Jan 2014, 19: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.
$2B or not $2B
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Array in ShowMessage ausgeben?

  Alt 28. Jan 2014, 19: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
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#14

AW: Array in ShowMessage ausgeben?

  Alt 29. Jan 2014, 10:00
Mach dir eine Hilfsvariable, so z.B.:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
   a : Array[1..8] of Integer;
   i : Integer;
   s : String;

begin
   s := '';
   for i:=1 to 8 do
   begin
     a[i]:= Random(9);
     s := s + IntToStr(a[i]);
   end;
   ShowMessage(S);
end;

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;
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Array in ShowMessage ausgeben?

  Alt 29. Jan 2014, 10:10
Hm... hier braucht man doch auch kein Array... wozu? Geht doch auch ohne!
Stimmt, man braucht das Array nicht, aber deine Frage war "Array in ShowMessage ausgeben?", hätte ich wohl nicht wörtlich nehmen dürfen, mein Fehler.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#16

AW: Array in ShowMessage ausgeben?

  Alt 29. Jan 2014, 10:16
Hm... hier braucht man doch auch kein Array... wozu? Geht doch auch ohne!
Stimmt, man braucht das Array nicht, aber deine Frage war "Array in ShowMessage ausgeben?", hätte ich wohl nicht wörtlich nehmen dürfen, mein Fehler.
Ne ne... ist gut so, deine Antwort ist auch richtig, danke!
ich habe nur weiter überlegt und sah das mein Ansatz mit Array überflüssig ist.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Array in ShowMessage ausgeben?

  Alt 29. Jan 2014, 13: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.184 Beiträge
 
Delphi 12 Athens
 
#18

AW: Array in ShowMessage ausgeben?

  Alt 29. Jan 2014, 15: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.
$2B or not $2B
  Mit Zitat antworten Zitat
waterboy

Registriert seit: 9. Jan 2023
4 Beiträge
 
#19

AW: Array in ShowMessage ausgeben?

  Alt 10. Jan 2023, 23:27
So?
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  a : Array[1..8] of Integer;
  i : Integer;
  s: string;
begin
  s := '';
  for i:=1 to 8 do
    begin
      a[i]:= Random(9);
      s := s + IntToStr(a[i]);
    end;
  ShowMessage(s);
end;
Oder als eigene Funktion:
Delphi-Quellcode:
function IntArrayToStr(const Ints: array of integer): string;
var
  i: integer;
begin
  Result := '';
  for i := Low(Ints) to High(Ints) do
    Result := Result + IntToStr(Ints[i]);
end;

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
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
488 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: Array in ShowMessage ausgeben?

  Alt 14. Jan 2023, 18:08
Wieso nicht einfach mit String.Join(...) ?

ShowMessage(String.Join(String.Empty, MyStringArray)) Alternativ kannst du natürlich hier auch einen anderen Separator wie zB. sLineBreak oder ',' verwenden.

Hö? Ist das nicht nach wie vor Compiler Magic bei arrays?
Ja. Wenn du dir den CPU-Stack anzeigen lässt, dann wirst du sehen, dass hier bei dynamischen Arrays nur eine Indexvariable benutzt wird. Es gäbe für den Compiler ja auch keinen Grund, hier irgendeine Klasse zu erzeugen.
Dennis

Geändert von Dennis07 (14. Jan 2023 um 18:11 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 02:47 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