CByteArray oder Struktur?



  • Hi,

    wie kann ich eine Datenreihe von unbekannter Länge (etwa 10.000 bis 30.000 Datensätze) am besten verwalten?

    enventuell so:
    CByteArray stunde;
    CByteArray minute;
    CByteArray sekunde;
    CByteArray millisekunde;
    CStringArray wert;

    Es gibt aber bestimmt elegantere Lösungen. Hat jemand einen Tip?



  • Ich würd es so machen :

    class CMyClass
    {
       protected:
          UINT m_uStunde;
          UINT m_uMinute;
          UINT m_uSekunde;
          UINT m_uMilleSekunde;
          CString m_sWert;
    public:
       UINT& Stunde(void);
       UINT& Minute/void);
       UINT& Sekunde(void);
       UINT& MilleSekunde(void);
       CString& Wert(void);
    }
    

    und dann in der Doc :
    z.B.

    vector<CMyClass> m_vMyVector;
    oder nach belieben
    vector<CMyClass*> m_vMyVector;



  • Im Prinzip ja, aber drei Dinge sind nicht schön:

    1. Die Namen der Methoden
    2. Daß Du Referenzen auf protected Elemente rausgibst - wozu machst Du dann die Elemente überhaupt protected? Dadurch hast Du sie gerade wieder public gemacht.
    3. Noch besser ist es übrigens, die Elemente gleich private zu machen, da dann auch abgeleitete Klassen nur über get/set einen Zugriff darauf bekommen.

    Schöner wäre z.B.:

    class CMyClass
    {
       private:
          UINT m_uStunde;
          UINT m_uMinute;
          UINT m_uSekunde;
          UINT m_uMilliSekunde;
          CString m_sWert;
    public:
       UINT getStunde() {return m_uStunde;}
       UINT getMinute() {return m_uMinute;}
       UINT getSekunde(); // usw.
       UINT getMilleSekunde();
       CString getWert();
       void setStunde(UINT stunde) {m_uStunde = stunde;}
       void setMinute(UINT minute) {m_uMinute = minute;}
       // usw.
    };
    

    [ Dieser Beitrag wurde am 07.09.2002 um 12:45 Uhr von Marc++us editiert. ]



  • Hi,

    eine Anmerkung:

    in der Zwischenzeit habe ich die "COleDateTime" gefunden.
    Ist das vielleicht angebrachter, wenn ich auch vor hatte mit der Zeit zu rechnen?

    Danke für Eure Beispiele, aber ich Anfänger muß darüber noch gut grübeln....

    Wie könnte dann die Methode lauten, wenn ich eine Zeit hinzufügen möchte, z.B. mit...

    CMyClass dt;
    dt.Add(stunde, minute, sekunde, mille, wert);

    oder

    dt.Get(&Ziel, nElement);

    Ich glaube der Teil fehlt noch: wie kann die Länge des Objekts intern verwaltet werden?

    Gibt es vielleicht auch einen Weg über "Benutzerdefinierte Auflistungsklassen"? Diesen Begriff habe ich irgenwo gelesen, aber ich habe noch keine Ahnung, wie das konkret aussehen könnte.

    Kann vielleicht jemand von den Profis einen Lösungsansatz aus dem Ärmel schütteln?

    Danke.



  • isch schabe die Schlösung gefunden!!

    1. Neue Klasse deklariert (juhu, es hat geklappt!!)
    2. in der Dialogklasse einfügen "#include <afxtempl.h>"
    3. benutzerdefinierte Liste "CArray <CDatentopf, CDatentopf> m_DatenArray;"
    4. Z.B. mit m_DatenArray.Add(Objektname) kann ich beliebig viele Objekte dazuaddieren.

    Das dürfte doch die Lösung gewesen sein. Irgendwelche Anmerkungen?

    Tja, wenn man lange genug grübelt, findet sich auch eine Lösung irgendwann.
    Tschau


Log in to reply