Bitte Hilfe mit Ini-Problem

  • Hallo liebe Scripter :D
    hab ein problem. Undzwar baue ich gerade eine datenbank für ein Internetcafe dass Wasserpfeifen verkauft. Alles funzt perfekt nur dass eine nicht.. Wenn ich im Kontextmenü auf Artikel Verkaufen klicke soll die Anzahl umgeändert werden :D
    Also zb in der Ini steht Hallo=Hallo|12 dan soll die 12 in 11 umgewandelt werden...

    Kann mir jemand helfen ??

    Mfg

    Inhalt der Sperrung.Ini

    Spoiler anzeigen

    [Sperrung]
    10001=Al Waha|Tabak|13 €|13
    10002=Nakhala|Tabak|12 €|10
    10003=Orient "Groß"|Tabak|11,80 €|3
    10004=Orient "Klein"|Tabak|3,90 €|10
    [edit]
    10000=
    [Numbers]
    last=10005

    Spoiler anzeigen
    [autoit]

    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ListViewConstants.au3>
    #include <StructureConstants.au3>

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

    ;Global Const $LVFI_PARAM = 0x0001
    ;Global Const $LVIF_TEXT = 0x0001
    ;Global Const $LVM_FIRST = 0x1000
    Global Const $LVM_GETITEM = $LVM_FIRST + 5
    ;Global Const $LVM_FINDITEM = $LVM_FIRST + 13
    ;Global Const $LVM_SETSELECTEDCOLUMN= $LVM_FIRST + 140

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

    Dim $nCurCol = -1
    Dim $nSortDir = 1
    Dim $bSet = 0
    Dim $nCol = -1
    Dim $nr, $aSperrungdaten

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

    $Form1 = GUICreate('Otmar Call-Shop', 500, 600, -1,-1)
    GUISetBkColor(0xFFFFFF)
    $Input4 = GUICtrlCreateInput("", 320, 12, 50, 21)
    Guictrlcreatelabel("Artikel-Bezeichnung",10,10)
    $Input1 = GUICtrlCreateInput("", 110, 12, 200, 21)
    Guictrlcreatelabel("Artikel-Kategorie",10,35)
    $Input2 = GUICtrlCreateCombo("Wasserpfeifen", 110, 35, 200, 21,0x0003)
    GuiCTRLSETDATA(-1,"Tabak|Kohle|Sonstiges")
    Guictrlcreatelabel("Artikel-Verkaufspreis",10,55)
    $Input3 = GUICtrlCreateInput("€", 110, 57, 200, 21)
    $Buttondel = GUICtrlCreateButton("Entfernen", 410, 7, 75, 35, 0)
    $Button = GUICtrlCreateButton("Registrieren", 410, 42, 75, 35, 0)
    $Listview1 = GUICtrlCreateListView("Artikelnummer|Artikel | Kategorie| Verkaufspreis | Anzahl", 10, 80, 480, 500)
    GUICtrlSetFont($Listview1, 8, 400, 0, "MS Sans Serif")
    $mnu = GUICtrlCreateContextMenu($Listview1)
    $mnu_edit = GUICtrlCreateMenuItem('Artikel Verkaufen', $mnu)
    $mnu_del = GUICtrlCreateMenuItem('Artikel Löschen', $mnu)
    GUISetState(@SW_SHOW)

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

    Local $SperrungINI = @ScriptDir & "\Sperrung.ini"

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

    Global $aSperrung = IniReadSection($SperrungINI, "Sperrung")
    Local $lastNum = IniRead($SperrungINI, "Numbers", "last", 9999)

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

    _FillListView()
    GUISetState(@SW_SHOW, $Form1)
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[1]
    Case $Form1
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Buttondel
    _Filedelete()
    Case $Button
    $lastNum += 1
    $Input = GUICtrlRead($Input1)
    $Input100=Guictrlread($Input2)
    $Input200=GUICTRLREAD($Input3 )
    $Input300=Guictrlread($Input4 )
    IniWrite($SperrungINI, "Numbers", "last", $lastNum)
    IniWrite($SperrungINI, "Sperrung", $lastNum, $Input & "|" & $Input100 & "|" & $Input200 & "|" & $Input300)
    IniWrite($SperrungINI, "edit", $lastNum, "")
    $aSperrung = IniReadSection($SperrungINI, "Sperrung")
    Guictrlsetdata($Input1,"")
    Guictrlsetdata($Input3,"€")
    Guictrlsetdata($Input4,"")
    _FillListView()
    Case $mnu_del
    _Filedelete()
    Case $Listview1
    $bSet = 0
    $nCurCol = $nCol
    GUICtrlSendMsg($Listview1, $LVM_SETSELECTEDCOLUMN, GUICtrlGetState($Listview1), 0)
    DllCall("user32.dll", "int", "InvalidateRect", "hwnd", GUICtrlGetHandle($Listview1), "int", 0, "int", 1)
    EndSwitch
    EndSwitch
    WEnd
    Func _Filedelete()
    $index = _GUICtrlListView_GetSelectedIndices($Listview1)
    $del_Key = _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listview1), $index, 0)
    IniDelete($SperrungINI, "Sperrung", $del_Key)
    $aSperrung = IniReadSection($SperrungINI, "Sperrung")
    _GUICtrlListView_DeleteItemsSelected($Listview1)
    EndFunc

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

    Func _FillListView()
    _GUICtrlListView_DeleteAllItems($Listview1)
    If $lastNum = 9999 Then Return
    For $i = 1 To UBound($aSperrung) - 1
    GUICtrlCreateListViewItem($aSperrung[$i][0] & '|' & $aSperrung[$i][1], $Listview1)
    Next
    EndFunc
    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
    $hWndListView = $Listview1
    If Not IsHWnd($Listview1) Then $hWndListView = GUICtrlGetHandle($Listview1)

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $NM_RCLICK
    Return $GUI_RUNDEFMSG
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc

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

    Func LVSort($hWnd, $nItem1, $nItem2, $nColumn)
    Local $nSort
    If $nColumn = $nCurCol Then
    If Not $bSet Then
    $nSortDir = $nSortDir * - 1
    $bSet = 1
    EndIf
    Else
    $nSortDir = 1
    EndIf
    $nCol = $nColumn
    $val1 = GetSubItemText($Listview1, $nItem1, $nColumn)
    $val2 = GetSubItemText($Listview1, $nItem2, $nColumn)
    If $nColumn = 2 Then
    $val1 = StringRight($val1, 4) & StringMid($val1, 4, 2) & StringLeft($val1, 2)
    $val2 = StringRight($val2, 4) & StringMid($val2, 4, 2) & StringLeft($val2, 2)
    EndIf
    $nResult = 0
    If $val1 < $val2 Then
    $nResult = -1
    ElseIf $val1 > $val2 Then
    $nResult = 1
    EndIf
    $nResult = $nResult * $nSortDir
    Return $nResult
    EndFunc
    Func GetSubItemText($nCtrlID, $nItemID, $nColumn)
    Local $stLvfi = DllStructCreate("uint;ptr;int;int[2];int")
    DllStructSetData($stLvfi, 1, $LVFI_PARAM)
    DllStructSetData($stLvfi, 3, $nItemID)

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

    Local $stBuffer = DllStructCreate("char[260]")

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

    $nIndex = GUICtrlSendMsg($nCtrlID, $LVM_FINDITEM, -1, DllStructGetPtr($stLvfi));

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

    Local $stLvi = DllStructCreate("uint;int;int;uint;uint;ptr;int;int;int;int")

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

    DllStructSetData($stLvi, 1, $LVIF_TEXT)
    DllStructSetData($stLvi, 2, $nIndex)
    DllStructSetData($stLvi, 3, $nColumn)
    DllStructSetData($stLvi, 6, DllStructGetPtr($stBuffer))
    DllStructSetData($stLvi, 7, 260)

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

    GUICtrlSendMsg($nCtrlID, $LVM_GETITEM, 0, DllStructGetPtr($stLvi));

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

    $sItemText = DllStructGetData($stBuffer, 1)

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

    $stLvi = 0
    $stLvfi = 0
    $stBuffer = 0

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

    Return $sItemText
    EndFunc

    [/autoit]
  • [autoit]

    Func _mazosIniVerringerer($nummer);$nummer=z.B.10004
    $vorher=IniRead("Sperrung.ini","Sperrung",$nummer,"0")
    $pos=StringInStr($vorher,"|",Default,-1)
    $vorne=StringLeft($vorher,$pos)
    $hinten=StringTrimLeft($vorher,$pos)
    $neu=$vorne & ($hinten-1)
    IniWrite("Sperrung.ini","Sperrung",$nummer,$neu)
    EndFunc

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Ich möchte aber dass der die $nummer aus der listview ausliest. also das gerade ausgewählte item soll gleich die $nummer sein kannste des fertig in mein script rein bauen. Quellcode siehe oben


    mfg

  • Funktioniert eigentlich jetzt einwandfrei hab noch eine frage Kann ich die änderung nicht gleich in die Listview übertragen ??