Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - String und Datum sortieren


malibu85 - So 14.09.08 09:36
Titel: String und Datum sortieren
Hallo Freunde!
Ich habe eine Aufgabe bekommen im Fach Datenstrukturen undAlgorithmen. Wir haben angefangen uns mit Sortieralgorithmen zu beschäftigen. In einer Aufgabe heißt es, dass ein Datensatz auf verschiedenster weise sortiert werden soll. Zum einen nach dem "key" (integer kein Schwierigkeiten mit insertionsort) dann nach dem Namen eines Kunden und nach dem Datum. Bei den letzten beiden habe ich schwierigkeiten. Ich weiß nicht mit welchem verfahren man Strings lexikographisch sortiert oder wie man datumsangaben sortiert. Kann mir jemand einen Hinweis geben. Bin auch für nützlichen Quellen im Netz dankbar.
MFG Malibu


alzaimar - So 14.09.08 10:17

Es gibt die Möglichkeit, eine Funktion zu schreiben, die zwei Strings so miteinander vergleicht, wie Du es willst. Wenn im Sortieralgorithmus dann auf '<','>' oder '=' geprüft wird, rufst Du einfach deine Funktion auf.

Die Funktion könnte -1 für '<' liefern,0 für '=' und 1 für '>' liefern.

Eine Funktion, die zwei Strings vergleicht, die ein Datum repräsentieren, könnte so aussehen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Function CompareDate (Const aDateString1, aDateString2 : String) : Shortint;
Var
  date1,date2 : TDateTime;

Begin
  date1 := StrToDateDef(aDateString1,0);
  date2 := StrToDateDef(aDateString2,0);
  if date1 < date2 then Result := -1
  else if date1>date2 then Result := +1
  else Result := 0
End;


malibu85 - So 14.09.08 10:28

danke das ist ein guter ansatz. Ich war auf der suche nach einem Datentyp der ein Datum darstellt und den habe ich ja nun. Eins bleibt mir aber noch unklar. Und zwar das lexikografische Sortieren von Strings. In manchen Sprachen ist es möglich char für char eines Strings durch zu gehen aber ich weiß nicht ob das bei delphi geht. Gibt es für so etwas auch lösungen?


alzaimar - So 14.09.08 10:59

Du solltest dir einen 'Crashkurs Delphi' besorgen, einfach mal danach googeln.

Da Delphi im Gegensatz zu C eine freundliche Sprache ist, reicht es If StringA<StringB Then zu schreiben.