Dreidimentionales Array dynamisch erstellen ? vielleicht geht das ganze aber auch ganz anders ... ?



  • hi,

    ich möchte eine SQL Abfrage direkt in ein Array speichern und dieses später auswerten.
    vielleicht gibt es aber auch eine bessere lösung für das was ich vorhabe, ich schreibe es einfach:

    ich führe eine sql abfrage durch bei der man eine person mit adresse anlegen, ändern und löschen soll.
    das anlegen ist soweit ok, damit habe ich auch keine probleme aber bei ändern und löschen steh ich echt auf dem schlauch.
    ich muss ja vor dem ändern erstmal eine sql durchführe, diese soll in eine combobox alle personen zur auswahl bereitstellen sprich Vorname - Nachname anzeigen. wenn ich nun auf einen der namen zugreife muss ich haber die pid wissen und ich weis leider nicht wie ich diese verstecken soll ? ich dachte mir ein array anzulegen das die daten gespeichert hat und bei zugriff denn selben index wie im combobox besitzt. geht das ganze nicht auch anders ?

    ich brauche eben pid, aber nur vorname und nachname sollen angezeigt werden.
    wie stell ich das denn am besten an ???
    bin ich da mit meinem array zeugs auf dem richtigen weg ?

    wenn nein würde ich dennoch ganz gerne wissen wie ich ein solches array anlege ...

    danke

    gruß
    binary



  • ich kann dir nicht sagen ob dein problem einfacher zu lösen geht, aber hier eine methode mit einem dyn. array:

    struct TDaten { String Name,
                           Vorname;
                    int PID;
                  };
    
    DynamicArray<TDaten> Daten;
    

    wenn du das Array vergrößern willst, dann kannst du das über die Eigenschaft Length machen
    der zugriff auf die Daten erfolgt wie bei einem normalen array

    Daten.Length++;
    Daten[0].Name = "Name";
    Daten[0].Vorname = "Vorname";
    Daten[0].PID = 1234;
    

    anhand von Length kannst du dann auch feststellen, wieviele daten in dem array gespeichert sind

    ich hoffe das hilft weiter



  • super!
    danke für die schnelle antwort!

    aber eins versteh ich leider nicht:
    was bedeutet denn

    DynamicArray<TDaten> Daten;
    

    ???

    und was genau bedeutet denn

    struct
    

    ?

    danke



  • eine struktur ist nix anderes, ale eine zusammenfassung von mehreren variablen (mit evtl. unterschiedlichen Datentypen)
    diese Struktur wird zu einem neuen Datentyp zusammengefasst. in diesem fall TDaten

    bei einer variable mit diesem neuen Typ kann man dann mit hilfe der Punktnotation auf die einzelnen elemente der struktur zugreifen

    DynamicArray sagt eigentlich alles aus. damit kann man ein dynamisches array anlegen
    das schöne daran ist, dass man mit hilfe der "Length"-Eigenschaft sehr einfach die größe des arrays bestimmen kann



  • aha also mit strukt kann ich mehrere datentypen zusammenfassen.

    Aber ich habe damit dennoch Probleme, hier mein Code:

    struct TDaten {
                            int PID;
                            String Name,
                            Vorname;
                          };
    
           DynamicArray<TDaten> Daten;
    
         int x = 0;
         while(x < 10)
         {
           Daten.Length++;
           Daten[x].PID = x;
           Daten[x].Name = "Name" + IntToStr(x);
           Daten[x].Vorname = "Vorname" + IntToStr(x);
    
          x++;
         }
    

    Fehlermeldung:
    [C++ Fehler] Unit1.cpp(26): E2397 Template-Argument darf keine static oder local Einbindungsangabe haben
    [C++ Fehler] Unit1.cpp(26): E2379 In Anweisung fehlt ;
    [C++ Fehler] Unit1.cpp(33): E2451 Undefiniertes Symbol 'Daten'



  • das ist schon alles ganz richtig nur schreib mal die deklaration der Struktur ausserhalb deiner Funktion
    also so:

    struct TDaten { int PID; 
                    String Name, 
                    Vorname; 
                  }; 
    
    DynamicArray<TDaten> Daten; 
    
    .
    .
    .
    
    void Funktion()
    {    int x = 0; 
         while(x < 10) 
         { 
           Daten.Length++; 
           Daten[x].PID = x; 
           Daten[x].Name = "Name" + IntToStr(x); 
           Daten[x].Vorname = "Vorname" + IntToStr(x); 
    
          x++; 
         }
    }
    

Anmelden zum Antworten