neuen eintrag alphabetisch in einer textdatei richtig einordnen

  • hi leute...
    ich schreibe mir gerade ein program und komme einfach nicht weiter. :(
    es wird zunächst eine textdatei ausgelesen, deren inhalt als array gespeichert wird. in der datei sind lauter namen, die sich schon alle in einer alphabetischen reihnfolge befinden. danach wird eine gui-fenster erstellt mit einem input-feld.in diesem input-feld soll nun ein name eingetragen werden. die namen haben alle, sowohl die in der textdatei, als auch die neuen im input-feld, das schema <nachname>.<vorname> *<geburtsdatum> wie zum beispiel Mustermann.Max *29.02.1990 ;)
    dieser name soll nun in der lister an der richtigen stelle eingetragen werden und hier weiß ich nicht mehr weiter :( kann mir jemand helfen? :)

    hier mal mein coder:

    [autoit]

    #include <File.au3>
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    ;~ #Include <Misc.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $array
    Global $file = "Z:\BackUps\AutoIt - Scripts\Liste.txt"
    If Not _FileReadToArray($file, $array) Then
    If @error = 1 Then $errortext = "Fehler beim Öffnen der angegebenen Datei!"
    If @error = 2 Then $errortext = "Unmöglich die Datei zu splitten!"
    MsgBox(48, "Error", $errortext)
    Exit
    EndIf

    [/autoit][autoit][/autoit][autoit]

    GUICreate("Neuer Eintrag", 200, 70)
    Global $neuereintrag_input = GUICtrlCreateInput("", 10, 10, 180, 20)
    Global $add_button = GUICtrlCreateButton("hinzufügen", 50, 40, 100, 20)
    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    While 1
    Switch GUIGetMsg()
    Case $add_button
    $neuereintrag = GUICtrlRead($neuereintrag_input)
    If $neuereintrag = "" Or $neuereintrag = " " Then ContinueLoop
    $stringlen = StringLen($neuereintrag)
    $nur_nachname = StringTrimRight($neuereintrag, $stringlen - StringInStr($neuereintrag, ",") + 1)
    $geburtstag_entfernen = $stringlen - StringInStr($neuereintrag, "*") + 3
    $nur_name = StringTrimRight($neuereintrag, $geburtstag_entfernen)
    $nur_vorname = StringTrimRight(StringTrimLeft($neuereintrag, StringLen($nur_nachname) + 2), $geburtstag_entfernen )
    $counter = 1
    For $i = 1 To $array[0]
    For $m = 1 To StringLen($nur_nachname)
    If StringLeft($array[$i], $counter) = StringLeft($nur_nachname, $counter) Then
    ConsoleWrite($i & " " & $array[$i] & @CRLF)
    ExitLoop
    EndIf
    Next
    Next

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ;~ GUICtrlSetData($neuereintrag_input, "")
    GUICtrlSetState($neuereintrag_input, $GUI_FOCUS)
    Case -3
    Exit
    EndSwitch
    WEnd

    [/autoit]

    das

    [autoit]

    ConsoleWrite($i & " " & $array[$i] & @CRLF)

    [/autoit]

    habe ich nur da stehen um die ausgabe zu überprüfen und zu wissen was genau passiert ;) später soll an der stelle natürlich der neue name in die liste eingetragen werden oder es soll die ganze textdatei neu geschrieben werden ;)

  • [autoit]

    _ArrayAdd() -> _ArraySort() -> _FileWriteFromArray()

    [/autoit]

    wozu zerlegst du eigentlich den String? Ich hab gedacht in der Datei ist die gleiche Syntax wie im Input...

    Zitat

    You just keep on trying 'till you run out of cake. ;)


    [STEAM] Source UDF

    Einmal editiert, zuletzt von K4z (26. Januar 2012 um 16:54)

  • Servous, du musst den Namen in das Array Hinzufügen und das Array dann mit ArraySort() Wieder Alphabetisch sortieren und fertig..

    Gruß Marvin