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 dannfalse
zurück, wenn der letzte Datensatz nicht geparst werden konnte, weil du den Status mit jedemSplitString
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 wirdStatus
auftrue
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 denTDateTime
unddouble
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 ) { ... }