Re: 2-dimensinales Array - perllol - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 16.März.2001, 20:07.
    Re: 2-dimensinales Array - perllol


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Andreas (396 Beiträge) am Donnerstag, 15.März.2001, 23:42.
    2-dimensinales Array

      Mein Perl-Wissen beruht ausschließlich auf SelfHTML.

      Auf der Seite http://www.teamone.de/selfhtml/tgcb.htm#a2 ist angegeben, daß man durch speichern von Listen als Listenelemente ein 2-dimensionales Array bekommt.

      Bei ausprobieren, hat's aber nicht funktioniert.

      Hier ein Beispielcode:

      @Daten1 = (1,2,3);
      @Daten2 = (4,5,6);
      @Daten3 = (7,8,9);
      out "D1:\>", $Daten1[1],"\<<p>";
      @Daten = ((1,2,3),(4,5,6),(7,8,9));
      out "D2:\>", $Daten[2][1],"\< ";
      for(@Daten)
      { out $_; } out "<p>";
      @DatenX = (@Daten1,@Daten2,@Daten3);
      out "D3:\>", $DatenX[2][1],"\< ";
      for(@DatenX)
      { out $_; } out "<p>";
      out "D4:\>", $DatenX[2,1],"\<<p>";
      out "D5:\>", $DatenX[2],"\<<p>";
      

      Ausgabe D1 liefert mir das 2. Element # ist ganz klar
      Ausgabe D2 liefert keine Ausgabe
      Ausgabe D3 liefert keine Ausgabe
      Ausgabe D4 liefert das 2. Element
      Ausgabe D5 liefert das 3. Element

      In allen Fällen bekomme ich für $Daten und $DatenX nur eine einfache Liste.

      Hat jemand mit viel mehr Perl-Wissen als ich eine Ahnung, wo der Fehler liegt (SelfHTML, Perl-Interpreter oder hab ich was falsch verstanden)?

      Herzliche Grüße von Andreas Jurenda :-})

     Antworten

    Beitrag von Andreas (396 Beiträge) am Freitag, 16.März.2001, 00:41.
    Re: 2-dimensinales Array

      Die Geschichte wir interessant:

      Ich habe nun bei http://www.perl.de vorbeigeschaut und eine Info gefunden mit $Daten[1][3]=6; und damit funktionierts auch. Trotzdem hab ich da noch etwas genauer hingeschaut und hate auf einmal einen Speicherdump am Bildschirm. Da ist irgend etwas nicht ganz sicher!

      Folgendes Testprogramm habe ich benutzt:

      <perl>
      @Daten1 = (1,2,3);
      @Daten2 = (4,5,6);
      @Daten3 = (7,8,9);
      out "D1:\>", $Daten1[1],"\<<p>";
      @Daten = ((1,2,3),(4,5,6),(7,8,9));
      out "D2:\>", $Daten[2][1],"\< ";
      for(@Daten)
      { out $_; } out "<p>";
      @DatenX = (@Daten1,@Daten2,@Daten3);
      out "D3:\>", $DatenX[2][1],"\< ";
      for(@DatenX)
      { out $_; } out "<p>";
      out "D4:\>", $DatenX[2,1],"\<<p>";
      out "D5:\>", $DatenX[2],"\<<p>";
      $DatenY[0][0]=1;$DatenY[0][1]=2;$DatenY[0][2]=3;
      $DatenY[1][0]=4;$DatenY[1][1]=5;$DatenY[1][2]=6;
      $DatenY[2][0]=7;$DatenY[2][1]=8;$DatenY[2][2]=9;
      out "D6:\>", $DatenY[2][1],"\< ";
      for(@DatenY)
      { out $_," "; } out "<p>";
      for(@DatenY)
      { for(@_)
      { out $_," "; }} out "<p>";
      </perl>
      

      Dabei habe ich folgende Ausgabe erhalten:

      D1:>2<

      D2:>< 123456789

      D3:>< 123456789

      D4:>2<

      D5:>3<

      D6:>8< ARRAY(0x8cddef4) ARRAY(0x8cde1c4) ARRAY(0x8cde828)

      Safe::Root63 ÜIčN|˙˙˙˙˙˙‡?˙?ü˙˙˙ CODE(0x8cec7a4) Safe::Root63 ÜIčN|˙˙˙˙˙˙‡?˙?ü˙˙˙ CODE(0x8cec7a4) Safe::Root63 ÜIčN|˙˙˙˙˙˙‡?˙?ü˙˙˙ CODE(0x8cec7a4)

      Herzliche Grüße von Andreas Jurenda :-})

     Antworten

    Beitrag von Winkiller (175 Beiträge) am Freitag, 16.März.2001, 19:41.
    Re: 2-dimensinales Array

      @Daten = ([1,2,3],[4,5,6],[7,8,9]);
      

      So muss das sein!
      Arrays können tatsächlich nur Skalare speichern. Aber Skalare können verweise, Referenzen auf alles sein. Und auch auf Arrays. Mit [] kannst du ein anonymes Array eräugen. Diese formulierung liefert eine referenz zurück, die im Array @Daten gespeichert wird. Ein solches Array, das mit [] generiert wurde, kann nicht über einen Namen aufgerufen werden, es ist anonym. Aber es kann durch eine Referenz aufgeruffen werden.

      $Daten[0][0]
      

      Diese Formulierung liest das nullte Element des anonymen Arrays aus, aug das die Referenz $Daten[0] zeigt.

      Kompliziert nicht wahr?

      Das funktioniert zwar anscheinend, aber mit dieser Theorie kann dien Problem gelöst werden.

      Wir dürfen jetzt keinen Fehler machen.

      Probier mal das in der For-Schleife:
      for(@DatenY)
      { out $$_," "; }
      

      vielleicht musst du sogar
      for(@DatenY)
      { out $$$_," "; }
      
      schreiben.


      Die andere For-Schleife:
      for(@DatenY)
      { for(@$_)
      { out $$$_," "; }}
      

      hehe, weiss nicht ob das funktioniert. Du musst einfach ausprobieren.

      viel Glück

     Antworten

    Beitrag von Winkiller (175 Beiträge) am Freitag, 16.März.2001, 19:45.
    Re: 2-dimensinales Array - nachtrag

      for(@DatenY)
      { for(@$$_)
      { out $$_," "; }}
      

      könnte auch funktionieren ...

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 16.März.2001, 20:07.
    Re: 2-dimensinales Array - perllol

     Antworten

    Beitrag von Andreas (396 Beiträge) am Freitag, 16.März.2001, 23:48.
    Re: 2-dimensinales Array - perllol

      Danke, danke, danke

      Hat nun funktioniert, aber auf die Idee ([],[],[]) wäre ich selber nie gekommen.

      Der englische Artikel beschreibt die ganze Geschichte sogar fast zu genau. Pointer auf Pointer und Typkonvertierung war einmal vor Jahren zu Zeiten von Turbo Pascal 7.0 ganz gut, aber nun ist's mir zu mühselig.

      Zum Glück brauch ichs für meine Geschichte nicht.

      Die funktioniert übrigens.

      Herzliche Grüße von Andreas Jurenda :-})

     Antworten


     
 Liste der Einträge von 64200 bis 64350:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.08s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!