1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Superdau

Beiträge von Superdau

  • IniReadSectionNames Grenze

    • Superdau
    • 22. November 2019 um 08:59

    Wahnsinn Jungs/Mädels,

    Vielen Dank für die Mühe. Werd die Infos und Funktionen mal alle verarbeiten und dann entscheiden, welchen Weg ich weiter gehe.

  • IniReadSectionNames Grenze

    • Superdau
    • 20. November 2019 um 11:13

    Derzeit sehen die Einträge folgendermaßen aus:

    Code
    [evo100_ff20186725_messerhalter_schritt_1.pdf___projekt_F27389042601]
    laufzeit=21
    stueckzahl=1
    Quellpfad=\\ffnas01.xxxxx.com\tebis\Bauteile\FF2018\FF20186725\
    cad=\\ffnas01.xxxxx.com\tebis\Bauteile\FF2018\FF20186725\ff20186725_messerhalter.cad
    freigabedatum=2019-10-22 13:18:17
    freigegeben_von=xxxx
    status=100
    blockiert=xxxx
    fertig=2019/11/14 14:24:22
    fertigsteller=xxxx
    extra=
    Alles anzeigen

    Momentan befinden sich ungefähr 430 solche Einträge in der Datenbank(ini)

  • IniReadSectionNames Grenze

    • Superdau
    • 20. November 2019 um 09:39
    Zitat von BugFix

    Dafür verwende ich normale Textdateien als Config-Dateien (*.cfg).

    Struktur je Zeile:

    sektion;Schlüssel=Wert;Schlüssel=Wert;Schlüssel=Wert;Schlüssel=Wert

    Ist easy mit FileReadLine, FileWriteLine, StringSplit zu handeln.

    An diese Möglichkeit hab ich auch schon gedacht.

    Ist halt nur n großer Umbau

    Spoiler anzeigen
    C
    #cs ----------------------------------------------------------------------------
    
     AutoIt Version: 3.3.6.1
     Script Version: 2.2.2
     Author:         XXXX
    
     Script Function:
        Script verwaltet NC-Daten
        Änderungen:
        Baugruppen wurden entfernt.
        verschiedene Konfigurationsdateien wurde eingebunden.
        Verwendung eines gesonderten Arbeitsverzeichnisses möglich
        Tnc-Remo wird über eine extra Konfigurations-Datei gesteuert.
        Freigabe wurde eingebunden
        Shellexecute wird über die Prozess-ID wieder geschlossen.
        Globaler Programmstop über Konfigdatei eingebracht.
        automatisches Ausführen eines Updates möglich.
        Für Tebis wird der unc-Pfad in einen Laufwerksbuchstaben übersetzt.
        Unterstütz Bauteilefreigabe für meherere Projekte
        User-Stati und Adminfunktionen eingebracht (1 normaler User, 7 Poweruser, 77 Admin)
        Letzte Freigabeprojektnummer wird unter eigene Dokumente gespeichert und vorgeschlagen.
        0-Bug entfert.
        Leere Datenbank führt nicht mehr zum Absturz
        Datenbanksicherung eingebaut.
        Fensterpositionen werden in der Userconf gespeichert.
        Status 25% und 75% eingebracht
        Traymenü eingebaut.
        NCDM unterstützt jetzt DragnDrop
        Breite auf 1010 geändert
        Ablauf beschleunigt (zB. wird "Projekt" nicht mehr extra in die Freigabe geschrieben)
        Geschwindigkeit beim Aktualisieren wird mitgelogt (userconf).
        Bei der Freigabe wird nun im Hauptfenster der Projektfilter auf das Freigabeproj. gesetzt.
        Positionsfehler beim Schließen in der Taskleiste behoben
        Bei Freigabe wird nun eine Liste der letzten 10 Projekte zur Auswahl angeboten.
        Zusätzliche Bauteile können angegeben werden.
        CAD-Datei kann verknüpft werden.
        Beim Aufruf der Benutzerkonfig wird jetzt das Hauptprogramm beendet.
    
    #ce ----------------------------------------------------------------------------
    
    #include <GUIListBox.au3>
    #include <GuiConstantsEx.au3>
    #include <array.au3>
    #Include <File.au3>
    #Include <Date.au3>
    #include <EditConstants.au3>
    #Include <GuiListView.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <WinAPI.au3>
    
    
    
    
    
    
    Global $version="NC-Daten-Manager 2018     (c) XXXX"
    
    global $conf=@ScriptDir&"\ncdm.conf"
    if not FileExists($conf) Then
        IniWrite($conf,"main","workdir",@ScriptDir&"\Workdir")
        IniWrite($conf,"main","status","1")
        IniWrite($conf,"main","wartung","Der NC-Daten-Manager ist wegen Wartungsarbeiten kurzzeitig nicht verfügbar.")
        IniWrite($conf,"main","DB-Sicherung",@ScriptDir&"\Workdir\")
        IniWrite($conf,"extra","pfad","0")
        IniWrite($conf,"extra","status","0")
        IniWrite($conf,"Tebiskonvert","\\ffnas01\tebis","T:")
        IniWrite($conf,@username,"status","7")
    EndIf
    
    global $userstatus=IniRead($conf,@UserName,"status","1")
    global $workdir=IniRead($conf,"main","workdir",@scriptdir)
    global $db=$workdir&"\ncdm.db"
    global $log=$workdir&"\ncdm.log"
    global $tempdir=$workdir&"\nc_temp"
    global $userconf=@MyDocumentsDir&"\ncdmuser.txt"
    
    Global $dbsicherung=IniRead($conf,"main","db-sicherung",@ScriptDir&"\Workdir\")&"ncdm_"&@YEAR&"-"&@MON&"-"&@MDAY&".db"
    Global $pro="*"
    if not FileExists($tempdir) then DirCreate($tempdir)
    
    FileCopy($db,$dbsicherung,8)
    
    if not FileExists($db) then
       If Not _FileCreate($db) Then
           MsgBox($MB_SYSTEMMODAL, "Error",$db&" konnte nicht erstellt werden.")
           _exit("Datenbankfehler")
        EndIf
     EndIf
    
    
    _wartung()
    if $cmdline[0]>0 then _freigabe ($cmdline)
    
    If WinExists($version) Then
        WinActivate($version)
        Exit
    EndIf
    
    global $remoconf=$workdir&"\tncremo.txt"
    if not FileExists($remoconf) Then
        IniWrite($remoconf,@ComputerName,"Pfad","C:\Program Files (x86)\HEIDENHAIN\TNCremo\TNCremo.exe")
    EndIf
    
    _FileWriteLog($log,"ncdm gestartet "&@ComputerName&"/"&@username,1)
    _wartung ()
    _extra ()
    
    
    ;~ erstellen des Traymenüs -------------------------------------------
    $remobtn=TrayCreateItem("TNC-Remo-Pfad-ändern")
    $userconfbtn=TrayCreateItem("Benutzerkonfiguration")
    TrayCreateItem("")
    $confbtn=TrayCreateItem("Hauptkonfiguration")
    $dbbtn=TrayCreateItem("Datenbank")
    $logbtn=TrayCreateItem("Verlauf")
    TrayCreateItem("")
    $exit = TrayCreateItem("Exit")
    if $userstatus<77 then
        TrayItemSetState($confbtn, 128)
        TrayItemSetState($dbbtn, 128)
        TrayItemSetState($logbtn, 128)
    endif
    Opt("TrayMenuMode",1)
    
    
    
    ;~ erstellen der Gui ----------------------------------------------------------------
    
    $xpos=iniread($userconf,$version,"xpos",100)
    $ypos=iniread($userconf,$version,"ypos",100)
    
    $main=GUICreate($version,1010,600,$xpos,$ypos, -1, $WS_EX_ACCEPTFILES )
    GUISetStyle(BitOR($WS_MAXIMIZEBOX,$WS_MINIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_OVERLAPPEDWINDOW,$WS_TILEDWINDOW,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_TABSTOP,$WS_BORDER,$WS_CLIPSIBLINGS))
    
    GUICtrlCreateLabel("Projekt",250,10,100,20)
    GUICtrlCreateLabel("Zeichnungsnummer/Maschine",10,10,200,20)
    
    GUICtrlCreateLabel("Objekte:",850,10,100,20)
    GUICtrlCreateLabel("(Stunden:)",850,35,100,20)
    
    global $zeichnung_input=GUICtrlCreateInput("*",10,35,200,20)
    global $Projekt_input=GUICtrlCreateInput($pro,250,35,200,20)
    
    global $laufzeit_input=GUICtrlCreateInput("0",940,35,50,20,$ES_READONLY)
    global $objekt_input=GUICtrlCreateInput("0",940,10,50,20,$ES_READONLY)
    
    $akt=GUICtrlCreateButton("aktualisieren",580,35,150,20)
    $ausbl=GUICtrlCreateCheckbox(" fertige ausblenden",580,10,120,20)
    GUICtrlSetState($ausbl,$GUI_CHECKED )
    
    GUICtrlSetState(-1, 1)
    
    
    
    $listview = GUICtrlCreateListView("", 10, 70, 980, 515)
    
    
    _GUICtrlListView_AddColumn($ListView, "Dokumentationen", 350)
    _GUICtrlListView_AddColumn($ListView, "Status", 60)
    _GUICtrlListView_AddColumn($ListView, "Fertigsteller", 100)
    _GUICtrlListView_AddColumn($ListView, "Projekt", 100)
    _GUICtrlListView_AddColumn($ListView, "Anzahl", 50)
    _GUICtrlListView_AddColumn($ListView, "Minuten", 60)
    _GUICtrlListView_AddColumn($ListView, "Freigegeben", 120)
    _GUICtrlListView_AddColumn($ListView, "Bereitsteller", 90)
    _GUICtrlListView_RegisterSortCallBack($ListView)
    
    _bereinigung()
    
    
    $Context = GUICtrlCreateContextMenu($listview)
    $docopen = GUICtrlCreateMenuItem("Dokumentation öffnen", $Context)
    $progsend = GUICtrlCreateMenuItem("Programme übertragen", $Context)
    GUICtrlCreateMenuItem("", $Context)
    $status = GUICtrlCreateMenu("Fertigungsstatus", $Context)
    $0p = GUICtrlCreateMenuItem("0%", $status)
    $10p = GUICtrlCreateMenuItem("10%", $status)
    $20p = GUICtrlCreateMenuItem("20%", $status)
    $25p = GUICtrlCreateMenuItem("25%", $status)
    $30p = GUICtrlCreateMenuItem("30%", $status)
    $40p = GUICtrlCreateMenuItem("40%", $status)
    $50p = GUICtrlCreateMenuItem("50%", $status)
    $60p = GUICtrlCreateMenuItem("60%", $status)
    $70p = GUICtrlCreateMenuItem("70%", $status)
    $75p = GUICtrlCreateMenuItem("75%", $status)
    $80p = GUICtrlCreateMenuItem("80%", $status)
    $90p = GUICtrlCreateMenuItem("90%", $status)
    $100p = GUICtrlCreateMenuItem("100%   (fertig)", $status)
    GUICtrlCreateMenuItem("", $Context)
    $fdir = GUICtrlCreateMenuItem("Verzeichnis öffnen", $Context)
    $fcad = GUICtrlCreateMenuItem("CAD öffnen", $Context)
    GUICtrlCreateMenuItem("", $Context)
    $fchange = GUICtrlCreateMenuItem("Freigabe ändern", $Context)
    $fdelete = GUICtrlCreateMenuItem("Freigabe löschen", $Context)
    
    if $userstatus<2 then
    GUICtrlSetState($fdir,128)
    EndIf
    if $userstatus<7 then
    GUICtrlSetState($fchange,128)
    GUICtrlSetState($fdelete,128)
    EndIf
    GUICtrlSetData($projekt_input,$pro)
    GUICtrlSetState($listview, $GUI_DROPACCEPTED)
    
    GUISetState(@SW_SHOW)
    _list()
    ;~ --------------------------------------------------------------------------------------
    
    HotKeySet("^!d","_delete")
    HotKeySet("^!a","_aenderung")
    
    
    
    $stat_chkbox=GUICtrlRead($ausbl)
    Global $starttime = TimerInit()
    Local $projekt, $zeichnung
    
    while 1 ;~ Hauptschleife
       if $Projekt <> GUICtrlRead($Projekt_input) then _list()
       if $zeichnung <> GUICtrlRead($zeichnung_input) then _list()
       $msg = GUIGetMsg()
       Select
          Case $msg = $GUI_EVENT_CLOSE
             _possave($main,$version)
             _exit ("Standard-Exit")
          Case $msg = $GUI_EVENT_DROPPED
             if @GUI_DropId = $listview Then _freigabe(@GUI_DragFile)
             _list()
          Case $msg = $docopen
             _open()
          Case $msg = $progsend
             _programme()
          Case $msg = $akt
             $tt=TimerInit()
             _list ()
             IniWrite($userconf,@username,"Prozessdauer",TimerDiff($tt))
          Case $msg=$listview
             _list ()
             _GUICtrlListView_SortItems($ListView, GUICtrlGetState($ListView))
          Case $msg = $fdir
             _open_ex ()
          Case $msg = $fcad
             _opencad ()
          Case $msg = $fchange
             _aenderung ()
          Case $msg = $fdelete
             _delete()
          Case $msg = $0p
             _erledigt (0)
          Case $msg = $10p
             _erledigt (10)
          Case $msg = $20p
             _erledigt (20)
          Case $msg = $25p
             _erledigt (25)
          Case $msg = $30p
             _erledigt (30)
          Case $msg = $40p
             _erledigt (40)
          Case $msg = $50p
             _erledigt (50)
          Case $msg = $60p
             _erledigt (60)
          Case $msg = $70p
             _erledigt (70)
          Case $msg = $75p
             _erledigt (75)
          Case $msg = $80p
             _erledigt (80)
          Case $msg = $90p
             _erledigt (90)
          Case $msg = $100p
             _erledigt (100)
       EndSelect
    
       $msg = TrayGetMsg ()
       Select
          Case $msg = $remobtn
             _remo ()
          Case $msg = $confbtn
             ShellExecute($conf)
          Case $msg = $logbtn
             ShellExecute($log)
          Case $msg = $dbbtn
             ShellExecute($db)
          Case $msg = $userconfbtn
             ShellExecute($userconf)
             _exit ("Benutzerkonfig geöffnet")
          Case $msg = $exit
             _exit ("Tray-Exit")
       EndSelect
    
       if TimerDiff($starttime) >10000 Then
          _wartung ()
          _extra ()
          Global $starttime = TimerInit()
       EndIf
    
       if GUICtrlRead($ausbl)<>$stat_chkbox Then
          _list ()
          $stat_chkbox=GUICtrlRead($ausbl)
       EndIf
    
       sleep(2)
    WEnd
    
    _GUICtrlListView_UnRegisterSortCallBack($ListView)
    
    _exit ("Standard-Exit")
    
    
    ;~ Funktionen --------------------------------------------------------------------------------------------------
    
    func _list()  ; Funktion listet die relevanten Daten
    
        _GUICtrlListView_DeleteAllItems($listview)
        $sektionen=IniReadSectionNames($db)
        if @error>0 then return
        Global $Projekt=GUICtrlRead($Projekt_input)
        global $zeichnung=GUICtrlRead($zeichnung_input)
        Local $bauteile[1]
        $gesamtzeit=0
        $gesamtzahl=0
        $fact=1
    
        for $x=1 to $sektionen[0]
            $fname=StringSplit($sektionen[$x],"___projekt_",1)
            $dbz=$fname[1]
            $dbp=$fname[2]
            $fertig=IniRead($db,$sektionen[$x],"status","0")
            $dbx=IniRead($db,$sektionen[$x],"extra","")
    
            if StringInStr($dbp&"*",$projekt) and StringInStr($dbz&$dbx&"*",$zeichnung) Then
                if $fertig<100 or GUICtrlRead($ausbl)=4 then
                   $rx=1-$fertig/100
                   $stueckzahl=IniRead($db,$sektionen[$x],"stueckzahl","1")
                   $gesamtzeit+=IniRead($db,$sektionen[$x],"laufzeit","")*$stueckzahl*$rx
                   $gesamtzahl+=1
                   $fertigmelder=IniRead($db,$sektionen[$x],"fertigsteller","")
                   $dateiname=$fname[1]
                   GUICtrlCreateListViewItem($dateiname&"|"&$fertig&"%|"&$fertigmelder&"|"&$dbp&"|"&$stueckzahl&"|"&round(IniRead($db,$sektionen[$x],"laufzeit",""))&"|"&IniRead($db,$sektionen[$x],"freigabedatum","")&"|"&IniRead($db,$sektionen[$x],"freigegeben_von",""),$listview )
                endif
            EndIf
        next
        GUICtrlSetData($objekt_input,$gesamtzahl)
        GUICtrlSetData($laufzeit_input,round($gesamtzeit/60))
    
    EndFunc
    
    func _open()  ; öffnet das markierte Dokument
        $fname=GUICtrlRead(GUICtrlRead($listview))
        if not $fname then Return
        $fname=StringSplit($fname,"|",1)
        $freigabe=$fname[1]&"___projekt_"&$fname[4]
        $quellpfad=IniRead($db,$freigabe,"Quellpfad","gaudi")
        $datei=$quellpfad&$fname[1]
        global $kopie=$tempdir&"\"&$fname[1]
        $blocker=IniRead($db,$freigabe,"blockiert","anderem Nutzer")
        $f=0
        if FileExists($datei) then
            if not FileExists($kopie) then FileCopy($datei,$kopie)
            if FileGetTime($datei,0,1)>FileGetTime($kopie,0,1) Then $f=1
            if FileGetTime($datei,1,1)>FileGetTime($kopie,0,1) Then $f=1
            if FileGetTime($datei,1,1)>FileGetTime($kopie,1,1) Then $f=1
    
            if $f=1 Then
                if FileCopy($datei,$kopie,1)<1 Then
                      MsgBox(16,$version&"      Fehler!","Datei wird von "&$blocker&" blockiert")
                else
                    MsgBox(64,$version&"      Wichtig!","Dokumentation wurde aktualisiert. Programme müssen neu eingespielt werden!!!")
                    IniWrite($db,$freigabe,"blockiert",@username)
                    ShellExecute($kopie)
                    _programme ()
                endif
             else
                IniWrite($db,$freigabe,"blockiert",@username)
                ShellExecute($kopie)
            endif
        else
            MsgBox(48,$version,"Verknüpfung zu   "&$datei&"   ist nicht vorhanden.",5)
        EndIf
     EndFunc
    
     func _opencad()  ; öffnet die entsprechende CAD-Datei
       $fname=GUICtrlRead(GUICtrlRead($listview))
       if not $fname then Return
       $fname=StringSplit($fname,"|",1)
       $freigabe=$fname[1]&"___projekt_"&$fname[4]
       $datei=IniRead($db,$freigabe,"cad","")
       if FileExists($datei) then
          dim $alias
          $alias=IniReadSection($conf,"tebiskonvert")
          for $x=1 to $alias[0][0]
             $datei=StringReplace($datei,$alias[$x][0],$alias[$x][1])
          next
          ShellExecute($datei)
       else
          MsgBox(16,$version&"      Fehler!","keine Datei verknüpft")
       EndIf
    
    EndFunc
    
    
    Func _programme () ; ermögllicht das Kopieren der NC-Programme
        $fname=GUICtrlRead(GUICtrlRead($listview))
        if not $fname then Return
        $fname=StringSplit($fname,"|",1)
        $freigabe=$fname[1]&"___projekt_"&$fname[4]
        $quellpfad=IniRead($db,$freigabe,"Quellpfad","")
        if $quellpfad="" then
          MsgBox(16,$version&"      Fehler!","Verknüpfung zu   "&$fname[1]&"   ist nicht vorhanden.",30)
        else
          $tncremo=iniread($remoconf,@computername,"pfad","")
          if FileExists($tncremo) then
             $befehl=$tncremo&" "&Chr(34)&"-W"&$quellpfad&Chr(34)
             run($befehl)
          Else
             MsgBox(16,$version&"      Fehler!","TncRemo wurde nicht gefunden")
             FileOpenDialog("Programme",$quellpfad,"Programme (*.h;*.nc)",5)
          endif
        endif
    EndFunc
    
    
    Func _erledigt ($s) ; meldet Bearbeitungen fertig
        $fname=GUICtrlRead(GUICtrlRead($listview))
        if not $fname then Return
           $fname=StringSplit($fname,"|",1)
        $freigabe=$fname[1]&"___projekt_"&$fname[4]
        IniWrite($db,$freigabe,"status",$s)
        if $s=100 then
            IniWrite($db,$freigabe,"fertig",@YEAR&"/"&@MON&"/"&@MDAY&" "&@HOUR&":"&@MIN&":"&@SEC)
            IniWrite($db,$freigabe,"fertigsteller",@username)
        Else
            IniWrite($db,$freigabe,"fertig","")
            IniWrite($db,$freigabe,"fertigsteller",@username)
        EndIf
        _FileWriteLog($log,$freigabe&"    Status auf "&$s&"% gesetzt durch   "&@ComputerName&"/"&@username,1)
        if FileExists(@ScriptDir&"\exceltab.exe") then run(@ScriptDir&"\exceltab.exe")
        _list ()
    EndFunc
    
    
    func _bereinigung ()  ; bereinigt alte erledigte Freigaben
        $sektionen=IniReadSectionNames($db)
        if @error>0 then return
        for $x=1 to $sektionen[0]
        $diff=_DateDiff( 'w',IniRead($db,$sektionen[$x],"fertig","0"),_NowCalc())
        $status=IniRead($db,$sektionen[$x],"status","0")
        if $diff>1 and $status=100 and IniRead($db,$sektionen[$x],"schreibschutz","0")=0 Then
            IniDelete($db,$sektionen[$x])
             FileDelete($tempdir&"\"&$sektionen[$x])   ;    ----------------------------- Optional
          _FileWriteLog($log,$sektionen[$x]&"    gelöscht durch   System",1)
        EndIf
        next
    EndFunc
    
    func _open_ex()  ; öffnet das Arbeitsverzeichnis
       $fname=GUICtrlRead(GUICtrlRead($listview))
       if not $fname then Return
       $fname=StringSplit($fname,"|",1)
       $freigabe=$fname[1]&"___projekt_"&$fname[4]
    
       $quellpfad=IniRead($db,$freigabe,"Quellpfad","")
       $datei=$quellpfad&$fname[1]
    
       if FileExists($quellpfad) then
          $alias=IniReadSection($conf,"tebiskonvert")
          for $x=1 to $alias[0][0]
             $quellpfad=StringReplace($quellpfad,$alias[$x][0],$alias[$x][1])
          next
          Run("explorer "&$quellpfad)
       else
            MsgBox(16,$version&"      Fehler!","Verknüpfung zu   "&$datei&"   ist nicht vorhanden.",5)
       EndIf
    EndFunc
    
    
    
    Func _delete () ; löscht Einträge
        $fname=GUICtrlRead(GUICtrlRead($listview))
        if not $fname then Return
        if $userstatus<7 then Return
        $fname=StringSplit($fname,"|",1)
        $freigabe=$fname[1]&"___projekt_"&$fname[4]
        if MsgBox(36,@ScriptName,"Wollen sie den Eintrag "&$fname[1]&" wirklich entfernen?")=6 then
          inidelete($db,$freigabe)
               if IniRead($db,$freigabe,"projekt","err")<>"err" then
               MsgBox(16,"Fehler",$fname[1]&" konnte nicht gelöscht werden!",5)
               Return
             EndIf
            FileDelete($tempdir&"\"&$fname[1])
            _FileWriteLog($log,$freigabe&"    gelöscht durch   "&@ComputerName&"/"&@username,1)
            if FileExists(@ScriptDir&"\exceltab.exe") then run(@ScriptDir&"\exceltab.exe")
            _list ()
        EndIf
    EndFunc
    
    
    func _wartung ()
        if IniRead($conf,"main","status","1")=0 Then
          $wartungstext=IniRead($conf,"main","wartung","0")
          if $wartungstext <>"" then MsgBox(16,$version,$wartungstext,3)
          Exit(0)
       EndIf
    EndFunc
    
    func _extra ()
       if IniRead($conf,"extra","status","0")=1 Then
          $extra=IniRead($conf,"extra","pfad","0")
          if FileExists($extra) Then
             Local $sDrive = "", $sDir = "", $sFilename = "", $sExtension = ""
             Local $aPathSplit = _PathSplit($extra, $sDrive, $sDir, $sFilename, $sExtension)
             Global $extrapn=$sFilename&$sExtension
             if not ProcessExists($extrapn) then
                run($extra)
             endif
          EndIf
       EndIf
    EndFunc
    
    ;~ Func _open_userconf ()
    ;~    ShellExecute($userconf)
    ;~ EndFunc
    
    
    
    Func _freigabe ($input)
       if $userstatus<7 then Return
       if not IsArray($input) then
          local $eingang[2]=["1",$input]
       Else
          $Eingang=$input
       endif
    ;~       _arraydisplay($eingang)
       for $x=1 to $eingang[0]
          Dim $upfad, $szDrive, $szDir, $szFName, $szExt, $string, $cadfiles
          $upfad=_PathSplit($eingang[$x], $szDrive, $szDir, $szFName, $szExt)
          $dateiname=$upfad[3]&$upfad[4]
          $stueck = 2
          $laufzeit = 0
          $projekt = ""
          $extra=""
          $cad="--- bitte auswählen ---"
    
          if DriveMapGet($upfad[1])="" then
             $quellpfad=$upfad[1]&$upfad[2]
          else
             $quellpfad=DriveMapGet($upfad[1])&$upfad[2]
          EndIf
          $status="Freigabe"
    ;~       MsgBox(0,"","dateiname= "&$dateiname&@crlf&"Projekt= "&$projekt&@crlf&"Stückzahl= "&$stueck&@crlf&"Laufzeit= "&$laufzeit&@crlf&"Pfad= "&$quellpfad)
    
          $cadfiles=_FileListToArray($quellpfad,"*.cad")
          if $cadfiles[0]=1 then $cad=$quellpfad&$cadfiles[1]
    
    
          _dbaenderung ($status,$dateiname,$quellpfad,$projekt,$stueck,$laufzeit,$extra,$cad)
       Next
       ControlSetText($version, "", "Edit2", $pro)
    ;~    if WinExists($version) then _list()
    EndFunc
    
    
    
    Func _aenderung ()
       if $userstatus<7 then Return
       $fname=GUICtrlRead(GUICtrlRead($listview))
       if not $fname then Return
       $fname=StringSplit($fname,"|",1)
       $freigabe=$fname[1]&"___projekt_"&$fname[4]
       $dateiname=$fname[1]
       $stueck = IniRead($db,$freigabe,"stueckzahl","0")
       $laufzeit = IniRead($db,$freigabe,"laufzeit","0")
       $projekt = $fname[4]
       $quellpfad=IniRead($db,$freigabe,"quellpfad","")
       $extra=IniRead($db,$freigabe,"extra","")
       $cad=IniRead($db,$freigabe,"cad","")
    ;~    MsgBox(0,"","dateiname= "&$dateiname&@crlf&"Projekt= "&$projekt&@crlf&"Stückzahl= "&$stueck&@crlf&"Laufzeit= "&$laufzeit&@crlf&"Pfad= "&$quellpfad)
       _dbaenderung("Aenderung",$dateiname,$quellpfad,$Projekt,$stueck,$laufzeit,$extra,$cad)
       _list ()
    EndFunc
    
    
    Func _dbaenderung ($status,$dateiname,$quellpfad,$projekt,$stueck,$laufzeit,$extra,$cad)
    ;~    ConsoleWrite($status)
       $pid=ShellExecute($quellpfad&$dateiname)
       $xpos=iniread($userconf,$status,"xpos",@DesktopWidth/2-150)
       $ypos=iniread($userconf,$status,"ypos",@DesktopHeight/2-150)
    ;~       MsgBox(0,"","Status= "&$status&@crlf&"dateiname= "&$dateiname&@crlf&"Projekt= "&$projekt&@crlf&"Stückzahl= "&$stueck&@crlf&"Laufzeit= "&$laufzeit&@crlf&"Pfad= "&$quellpfad)
       $dialog = GUICreate($Status, 315, 230, $xpos,$ypos, -1, BitOR($WS_EX_TOPMOST,$WS_EX_WINDOWEDGE))
       $lbl1 = GUICtrlCreateLabel($dateiname, 15, 15, 285, 20)
       $lbl2 = GUICtrlCreateLabel("Projektnummer", 15, 40, 100, 20)
       $lbl4 = GUICtrlCreateLabel("Stückzahl", 15, 90, 100, 20)
       $lbl5 = GUICtrlCreateLabel("Laufzeit in Minuten", 15, 65, 100, 20)
       $lbl6 = GUICtrlCreateLabel("Zus. Bauteile", 15, 115, 100, 20)
    
       global $i_laufzeit = GUICtrlCreateInput($laufzeit, 150,65, 150, 20, BitOR($ES_AUTOHSCROLL,$ES_NUMBER))
       global $i_stueckzahl = GUICtrlCreateInput($stueck, 150, 90, 150, 20, BitOR($ES_AUTOHSCROLL,$ES_NUMBER))
       global $i_cad = GUICtrlCreateInput($cad, 100, 140, 200, 20)
       global $i_pfad = GUICtrlCreateInput($quellpfad, 15, 175, 285, 20)
       global $i_extra = GUICtrlCreateInput($extra, 150, 115, 150, 20)
       global $i_projekt = GUICtrlCreateCombo("", 150, 40, 150, 20)
    
       $lprojekt=IniRead($userconf,@username,"projekt","")
       if StringInStr($lprojekt,$projekt) Then
          GUICtrlSetData($i_projekt, $lprojekt, $projekt)
       Else
          GUICtrlSetData($i_projekt, $projekt&"|"&$lprojekt, $projekt)
       EndIf
    
       $fileb = GUICtrlCreateButton("CAD-Auswahl", 15, 140, 80, 20, $WS_GROUP)
       $OK = GUICtrlCreateButton("bestätigen", 15, 205, 120, 20, $WS_GROUP)
       $Abbrechen = GUICtrlCreateButton("abbrechen", 180, 205, 120, 20, $WS_GROUP)
       GUISetState(@SW_SHOW)
    
    
       While 1
           $Freigabe=$dateiname&"___projekt_"&GUICtrlRead($i_projekt)
           $nMsg = GUIGetMsg()
            Switch $nMsg
    
                Case $GUI_EVENT_CLOSE
                    ExitLoop
                 Case $fileb
                      ConsoleWrite("XXX"&@crlf)
                      $cadfile=FileOpenDialog("CAD-File auswählen",$quellpfad,"CAD-files(*.cad)")
                      GUICtrlSetData($i_cad,$cadfile,"")
                Case $OK
                   if GUICtrlRead($i_projekt)="" Then
                      MsgBox(16,@scriptname,"Projektnummer fehlt!",3)
                   else
                      $Freigabe=$dateiname&"___projekt_"&GUICtrlRead($i_projekt)
                      $pro=GUICtrlRead($i_projekt)
                      if IniRead($db,$Freigabe,"quellpfad","") <>"" then
                            if MsgBox(36,@scriptname,$dateiname&" wurde bereits freigegeben!"&@CRLF& "Wollen sie die Freigabe aktualisieren?") <> 6 Then ExitLoop
                      endif
                      if $projekt<>GUICtrlRead($i_projekt) Then IniRenameSection($db,$dateiname&"___projekt_"&$projekt,$Freigabe)
                      $aktionen=5
                      $err=IniWrite($db,$Freigabe,"laufzeit",GUICtrlRead($i_laufzeit))
                      $err+=IniWrite($db,$Freigabe,"stueckzahl",GUICtrlRead($i_stueckzahl))
                      $err+=IniWrite($db,$Freigabe,"Quellpfad",GUICtrlRead($i_pfad))
                      $err+=IniWrite($db,$Freigabe,"extra",GUICtrlRead($i_extra))
                      $err+=IniWrite($db,$Freigabe,"cad",GUICtrlRead($i_cad))
                      if $status="Freigabe" then
                         $err+=IniWrite($db,$Freigabe,"freigabedatum",@YEAR&"-"&@MON&"-"&@MDAY&" "&@HOUR&":"&@MIN&":"&@SEC)
                         $err+=IniWrite($db,$Freigabe,"freigegeben_von",@UserName)
                         $err+=IniWrite($db,$Freigabe,"status","0")
                         $aktionen=7
                         Global $pro=GUICtrlRead($i_projekt)
                      EndIf
    ;~                MsgBox(16,@scriptname&" test","Ziel erreicht")
    
                      if $err<$aktionen then
                           MsgBox(16,@scriptname&" Fehler","kein Zugriff auf Datenbank!")
                           ExitLoop
                        EndIf
                      if StringInStr($lprojekt,GUICtrlRead($i_projekt)) Then
                         $lprojekt=StringReplace($lprojekt,"|"&GUICtrlRead($i_projekt),"")
                      endif
                      $lprojekt=StringLeft ($lprojekt, 130)
                      IniWrite($userconf,@username,"projekt",GUICtrlRead($i_projekt)&"|"&$lprojekt)
    
                      if $status="Freigabe" then
                         _FileWriteLog($log,$freigabe&"    Freigegeben durch   "&@ComputerName&"/"&@username,1)
                      Else
                         _FileWriteLog($log,$freigabe&"    Freigabe geändert durch   "&@ComputerName&"/"&@username,1)
                      EndIf
                      ExitLoop
                   Endif
    
                Case $Abbrechen
                    ExitLoop
    
            EndSwitch
       WEnd
       ProcessClose($pid)
       _possave($dialog,$status)
       GUIDelete($dialog)
     EndFunc
    
     Func _remo ()
        $pfad_alt=IniRead($remoconf,@computername,"pfad","")
        Local $pfad_neu = FileOpenDialog("NC-REMO-Exe auswählen", @ProgramFilesDir & "\", "Anwendung (*.exe)", $FD_FILEMUSTEXIST,"TNCremo")
       if @error=0 then
           IniWrite($remoconf,@computername,"pfad",$pfad_neu)
          _FileWriteLog($log,"TNC-Remo-Pfad auf "&$pfad_neu&" geändert durch   "&@ComputerName&"/"&@username,1)
       EndIf
    EndFunc
    
    
    Func _exit ($fehler)
       _FileWriteLog($log,"ncdm beendet "&@ComputerName&"/"&@username&"   "&$fehler,1)
       Exit(0)
    EndFunc
    
    
    Func _possave ($winh,$win)
       $tRET = _WinAPI_GetWindowPlacement($winh)
       IniWrite($userconf,$win,"xpos",DllStructGetData($tRET, "rcNormalPosition", 1))
       IniWrite($userconf,$win,"ypos",DllStructGetData($tRET, "rcNormalPosition", 2))
    EndFunc
    Alles anzeigen
  • IniReadSectionNames Grenze

    • Superdau
    • 20. November 2019 um 09:22

    Das würde mein Script aber ganz schön verkomplizieren

  • IniReadSectionNames Grenze

    • Superdau
    • 20. November 2019 um 08:34

    Vielen Dank Jungs,

    Ich glaube, das erklärt meinen Bug.

    Meine Ini ist 151kb groß, funktioniert aber noch.

    Doch mit ein paar Daten mehr ists vorbei. Dann werden die Letzten nicht mehr gelesen.

    Jetzt darf ich mir was zur Datenreduzierung ausdenken müssen, oder ein anderes Konzept verwenden.

  • IniReadSectionNames Grenze

    • Superdau
    • 19. November 2019 um 14:15

    Gibt es bei der o.g. Funktion eine Begrenzung der Anzahl gefundener Sektionen

  • Fensterpostition beim Minimieren speichern.

    • Superdau
    • 6. April 2018 um 11:12
    Zitat von Bitnugger

    Ermitteln mit _WinAPI_GetWindowPlacement bzw. setzen mit _WinAPI_SetWindowPlacement

    Vielen Dank, das ist noch eleganter.

    Gelöst

    Code
    Func _possave ($winh,$win)
       $tRET = _WinAPI_GetWindowPlacement($winh)
       IniWrite($userconf,$win,"xpos",DllStructGetData($tRET, "rcNormalPosition", 1))
       IniWrite($userconf,$win,"ypos",DllStructGetData($tRET, "rcNormalPosition", 2))
    EndFunc
  • Fensterpostition beim Minimieren speichern.

    • Superdau
    • 6. April 2018 um 09:46

    Super Lösung danke!

    Zitat von autoiter

    Hallo Superdau

    Das liegt daran, dass du die Fensterposition erst ausliest, wenn das Fenster bereits minimiert ist. Ich weiß nicht, wie man da die letzte Postion zuvor auslesen kann. Daher würde ich die Position immer speichern, wenn sich die Position verändert. In die Ini brauchst du das ja nur speichern, wenn das Fenster geschlossen wird. Am besten nutzt du WM_MOVE.

    C
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    
    Global $hGUI = GUICreate("Test")
    
    
    GUISetState()
    
    GUIRegisterMsg($WM_MOVE, "_WM_MOVE")
    
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                Exit
        EndSwitch
    WEnd
    
    
    Func _WM_MOVE($hWnd, $iMsg, $wParam, $lParam)
        $aPos = WinGetPos($hGUI)
    
        If IsArray($aPos) Then
            If $aPos[0] <> -32000 Then
                ConsoleWrite($aPos[0] & " " & $aPos[1] & @CRLF)
            EndIf
        EndIf
        Return $GUI_RUNDEFMSG
    EndFunc   ;==>_WM_MOVE
    Alles anzeigen
  • Fensterpostition beim Minimieren speichern.

    • Superdau
    • 6. April 2018 um 07:55

    Habe folgendes Problem: beim schließen meines Fensters funktioniert das Positionsspeichern, doch beim Minimieren nicht!

    Ich komm nicht drauf warum:cursing:

    Hat jemand eine Idee?

    AutoIt
    Select
          Case $msg = $GUI_EVENT_CLOSE
             _possave($version)
             _exit ("Standard-Exit")
          Case $msg = $GUI_EVENT_MINIMIZE
             _possave ($version)
    .
    .
    .
    Func _possave ($win)
       $pos=WinGetPos($win)
          if $pos[0]>0 then
             IniWrite($userconf,$win,"xpos",$pos[0])
             IniWrite($userconf,$win,"ypos",$pos[1])
          EndIf
    EndFunc
    Alles anzeigen
  • _GUICtrlListView_SortItems

    • Superdau
    • 18. Dezember 2014 um 13:27

    hab mir grad die neueste stabile Autoitversion installiert, und siehe da, es funzt

  • _GUICtrlListView_SortItems

    • Superdau
    • 18. Dezember 2014 um 11:21

    Servus zusammen,

    mich quält der folgende code:


    Spoiler anzeigen
    C
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    
    
    
    
        GUICreate("test", 800, 400)
        $hListView = GUICtrlCreateListView("", 10, 30, 780, 300,-1 )
    
       _GUICtrlListView_InsertColumn($hListView, 0, "Zahlen", 100)
    
       _GUICtrlListView_AddItem($hListView, "1", 0)
       _GUICtrlListView_AddItem($hListView, "2", 1)
       _GUICtrlListView_AddItem($hListView, "3", 2)
    
        GUISetState()
    
    
        _GUICtrlListView_RegisterSortCallBack($hListView)
    	While 1
            Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE
                    ExitLoop
                Case $hListView
                    _GUICtrlListView_SortItems($hListView, GUICtrlGetState($hListView))
    			EndSwitch
        WEnd
        _GUICtrlListView_UnRegisterSortCallBack($hListView)
        GUIDelete()
    
    
    Exit 0
    Alles anzeigen

    ich krieg die Sortierung einfach nicht zum laufen.
    hat jemand vielleicht einen kleinen Tip für mich, wo ich den bösen Hund begraben haben könnte?
    wär euch sehr dankbar.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™