Bereich in dynamischem Array füllen

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • Bereich in dynamischem Array füllen

      Kann mir jemand sagen was ich falsch mache?

      Quellcode

      1. cls
      2. declare m#[]
      3. struct Test=a&,b$(12),n#(12)
      4. Dim m#[],Test
      5. SetSize m#[],16
      6. Long m#[10].n#,0=123456
      7. Print Str$(Long(m#[10].n#,0))
      8. waitinput
      Im Prinzip will ich nur eine Zahl in den Bereich schreiben und wieder auslesen.
      EDIT: Nach langem Suchen habe ich herausgefunden, dass der Bereich n# in m# wie ein String behandelt wird. Also scheint es keine echten Bereichen in Bereichsarrays zu geben. Schade.

      Aber wieso geht

      Quellcode

      1. bereich#[1]=New(Klasse)
      aber nicht

      Quellcode

      1. Dim bereich#[1],128
      ?
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      TerraMaster F4-420 mit 16TB
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      OnePlus 6 8GB/256GB
      jacdelad.bplaced.net

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Jac de Lad ()

    • ...allerdings kann ich auch nicht

      Quellcode

      1. Class TM=p1&,p2&
      2. declare m#[]
      3. SetSize m#[],16
      4. m#[1]=New(TM)
      5. Long m#[1],0=123456'geht nicht

      Ich brauche ein dynamisches Array mit einer variablen Anzahl von Bereichen auf die ich beliebig zugreifen kann und die ich an eine API schicken kann.
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      TerraMaster F4-420 mit 16TB
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      OnePlus 6 8GB/256GB
      jacdelad.bplaced.net
    • p. specht schrieb:

      Vielleicht verstehe ich´s falsch, aber hilft da nicht "Variant Union" aus der Hilfe?
      Oder meinst Du das Kapitel über "Dynamische Arrays mit Strukturen"?
      Heiliger Bimbam, das muss ich erstmal verdauen. Ist neu für mich. Vielleicht funktionierts ja auch in dynamischen Arrays.

      Nebenbei: Das Hin und Her mit der Bereichsvariable klappt zwar in Profan, die API nimmt den Bereich dann aber irgendwie nicht an...
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      TerraMaster F4-420 mit 16TB
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      OnePlus 6 8GB/256GB
      jacdelad.bplaced.net

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Jac de Lad ()

    • Ich habs jetzt ohne Union gelöst. Ist Union ein richtiges Schlüsselword?
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      TerraMaster F4-420 mit 16TB
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      OnePlus 6 8GB/256GB
      jacdelad.bplaced.net
    • Nö, aber mancher API-Aufruf verlangt eben je nach Auftrag unterschiedliche Varianten von (Teil-)Strukturen in einem allen Aufrufen gemeinsamen (union) Speicherbereich. Und: Ja, das funktioniert auch in dynamischen Arrays.

      Eine definierte und gedim-te Struktur wird einfach umgelenkt, und sozusagen als Maske über den jeweiligen Record des Speicherbereichs gelegt. Und der ist ohne Datenverlust erweiterbar. Wohlgemerkt: Die Anzahl der Records (Pascal-speak) ist dynamisch, nicht der Record selbst - alle Records müssen die gleiche Länge haben, sonst kommt die Rechnerei durcheinander. Verwendet mann unterschiedliche Struktur"masken", dann sollten die auch die gleiche Länge haben.