Hallo jemabrauns, meine Kenntnisse in Pascal sind leider 35 Jahre alt, also nicht mehr ganz frisch. Seither bin ich in C unterwegs. Ich habe mal Dein Programm angeschaut. Soweit reichen meine Kenntnisse noch. Wenn Du es einfach gestalten willst musst Du halt das ganze Telefonbuch durchsuchen und den eingegebenen Namen mit den Namen aus der Datei vergleichen.
- Du lässt den Suchnamen eingeben. 2. Du gehst die Datei wie bei „zeigen“ durch und vergleichst den eigegebenen Suchnamen mit dem gespeicherten Namen. 3. Wenn Du den Namen gefunden hast gibst Du ihn mit der Elementnummer aus. 4. Gibt es mehrere Treffer gibst Du alle mit der Elementnummer aus und lässt am Ende das gewünschte Element auswählen. 5. Wenn Du den Namen nicht findest gibt es eine Fehlermeldung. Alles andere wird zu aufwändig. Du müsstest Dir zusätzlich zur Datendatei eine Indexdatei mit Namen und der Datensatznummer generieren. Diese sollte dann idealerweise sortiert sein damit man den Namen schnell finden kann. Stichwort B-Baum. Speziell bei Dingen wie Name hast Du dann auch noch das Problem, dass halb Deutschland Thomas Müller heißt. Ein Index muss aber eindeutig sein. Dann brauchst Du noch ein weiteres Kriterium um diese Eindeutigkeit herzustellen – also lieber bleiben lassen.
Sicher ist die Stringanalyse der interessanteste Teil der neuen Prozedur. Hier kann man sich richtig austoben und z.B. mit Wildcards wie ? oder * arbeiten. Was Pascal hier heutzutage in der Run Time Library als Unterstützung bietet weiß ich leider nicht. Du kannst das ja Stück für Stück verfeinern. Am besten schreibst Du für die Analyse des Namens eine eigene Funktion. Im ersten Schritt suchst Du exakte Treffer. Karl-Heinz ist nur Karl-Heinz und nicht Karlheinz. Dann erweiterst Du diese um „uppercase „ (heißt so in C). Dann ist Karl-Heinz auch karl-heinz. Wenn Du dann noch Lust hast kannst Du die Wildcards einbauen. Dann wäre karl* = Karl-Heinz, karl-heinz, karl, Karl, Karl-Heinrich…. Ich wünsche Dir viel Spaß beim Realisieren. Gruß jobe.
Sonstiger Berufsstatus, Punkte: 505