Vektor sortieren



  • Ich glaube, du hast meinen Post nicht verstanden. Guck dir doch mal an, was dein Code macht und spiel ein paar Szenarios in deinem Kopf durch. Gibt es Fälle, in denen dein Code Probleme hat, und können diese Fälle auftreten?
    Deine ImportData gibt übrigens nur dann false zurück, wenn der letzte Datensatz nicht geparst werden konnte, weil du den Status mit jedem SplitString aktualisierst.

    Im Detail:
    In Zeile 9 setzt du die Vektorgröße auf die Anzahl der erwarteten Datensätze.

    In Zeile 14 wird die Textzeile geparst um deren Daten zu bestimmen
    Du gibst zwar einen Status zurück, wertest ihn aber nicht aus. Es wird also unabhängig davon, ob eine Datenzeile erfolgreich geparst werden konnte, ein Datensatz in den Vektor eingefügt. Hm... ob das so gewollt ist? Wenn in der nächsten Datenzeile gültige Daten stehen wird Status auf true gesetzt und der aufrufende Code weiß nichtmal, dass mindestens ein Datensatz Müll ist.

    In Zeile 22 und 23 greifst du ohne zu prüfen auf front() zweier Vektoren zu. Kann auch schon mal in die Hose gehen, wenn einer der beiden Vektoren keine Elemente besitzt.

    Noch was zur SplitString Methode:
    Warum übergibst du den String per value und den TDateTime und double als Zeiger. Alle Parameter sind doch für den Methodenaufruf zwingend erforderlich, das kann man besser durch (const) Referenzen lösen.

    bool CDataset::SplitString( const AnsiString& Line, TDateTime& Timestamp, double& Value )
    {
       ...
    }
    

Anmelden zum Antworten