Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
21. Jul 2008
Hm, du hast recht, ich habe mich getäuscht. Aber eines fällt noch auf: Einmal extrahierst du die ID, indem du mit Pos nach dem Delimiter suchst; sonst nimmst du an, dass die Länge der ID konstant ist. Entweder du machst diese Annahme gar nicht oder immer!
Und dem Vorschlag, die List nach der ID zu sortieren, kann ich mich nur anschließen. Du erreichst damit eine Laufzeit O(n log n) statt O(n²)....
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
21. Jul 2008
Natürlich speicherst du Zahlen als Strings. Deshalb brauchst du ja eine StrToInt-Funktion. ;-)
Und diese rufst du für die PZN-Strings mehrfach auf. Also ist es effektiver, wenn du aus deinem String einmal die Daten extrahierst und sie in einem Record speicherst.
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
21. Jul 2008
Falls das Array vor der Schleife die Länge 0 hat, hat es danach höchstens so lang wie die Stringliste vor der Schleife. Also kannst du die Länge vor der Schleife auf diese obere Schranke setzen, in der Schleife dann mit einer Variablen mitzählen und nachher dann anpassen. Das sind dann nur noch zwei SetLength-Aufrufe.
Des Weiteren würde ich empfehlen, getrennte Daten getrennt zu speichern...
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
21. Jul 2008
Zieh das SetLength vor die Schleife. Das bewirkt Wunder.