Hi,
Ich habe wieder mal ein Phänomen welches ich nicht verstehe:
Ich habe ein GUI indem ich eine Telfonliste darstelle:
Wenn man einen Namen aus der Liste schreibt, springt die Markirung zu dem EIntrag, was sehr gut und gewünscht ist, so kann mann zB. schnell einen Eintrag auffinden.
Was mir jetzt Problem bereitet ist, daß ich versuche einen Eintrag zu bearbeiten und dann wegzuschreiben.
Auch das gelingt prinzipiell, allerdings habe ich festgestellt, das ich immer einen "versatz" im Index habe.
Also wenn ich den dritten Eintag aus der Liste bearbeiten will, muß ich beim Arrayindex immer etwas abziehen um den richtigen Datensatz zu bekommen.
Allerdings ist die Differenz nie gleich
Woran liegt das ?
Hier nochmal das ganze Script:
#include <file.au3>
#include <Array.au3>
#include <GUIConstants.au3>
dim $aRecords, $x, $listview
$file = "C:\Adressbuch.csv"
GUICreate("Telefonlisten",530,300, 100,200,-1,$WS_EX_ACCEPTFILES)
$listview = GUICtrlCreateListView ("Name |Vorname |Telefon|Schnurlos|Handy ",10,10,500,230)
$bearbeiten = GUICtrlCreateButton("Bearbeiten",10,250,80,20)
$speichern = GUICtrlCreateButton("Datei speichern",100,250,80,20)
$anlegen = GUICtrlCreateButton("Datensatz anlegen",190,250,100,20)
GUISetState()
If Not _FileReadToArray($file, $aRecords) Then
MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
Exit
EndIf
For $x = 1 to $aRecords[0]
GUICtrlCreateListViewItem($aRecords[$x],$listview)
Next
func bearbeiten()
$markiert = GUICtrlRead($listview)
$nr = $markiert - 5
MsgBox(0,"","Name:" & $aRecords[$nr])
$input = InputBox("Bearbeiten","Datensatz kann jetzt bearbeitet werden",$aRecords[$nr])
_ArrayDelete( $aRecords,$nr)
_ArrayInsert( $aRecords,$nr,$input)
GUICtrlDelete($listview)
sleep(50)
$listview = GUICtrlCreateListView ("Name |Vorname |Telefon|Schnurlos|Handy ",10,10,500,230);,$LVS_SORTDESCENDING)
For $x = 1 to $aRecords[0]
GUICtrlCreateListViewItem($aRecords[$x],$listview)
Next
EndFunc
Func speichern()
FileOpen($file,2 )
For $x = 1 to $aRecords[0]
FileWriteLine($file,$aRecords[$x])
FileClose($file)
Next
EndFunc
While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
case $msg = $bearbeiten
bearbeiten()
case $msg = $speichern
speichern()
Case Else
;~ ;;;
EndSelect
WEnd
Alles anzeigen
Hier noch die Stuktur meiner Adressdatei:
Zitat
Pan|Peter|306||0160-00000001
Merkel|Angela|351||0160-1111111111
Lustig|Peter|125|493|0160-500600900
Engelke|Anke|105|271|0160-500600901
Stamm|Baum|215|169|