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. Moombas

Beiträge von Moombas

  • CSV Merge - zwei Dateien zusammenfügen

    • Moombas
    • 13. März 2023 um 15:30

    Naja, um die Zeilenumbrüche zu korrigieren, würde ich an deiner Stelle von hinten das Array durchgehen und folgendes in jeder Zeile machen:

    1. Prüfen ob Stringsplit mit dem Delimiter ; die erwartete Anzahl zurück gibt
      1. wenn nicht: Diese Zeile an die vorherige incl. einem @CRLF (grade unsicher ob das geht, sonst Leerzeichen verwenden) davor hinzufügen. Danach diese Zeile löschen
      2. wenn ja: nächste Zeile
    2. Am Ende wieder prüfen ob das Array nun passt

    Edit: Also quasi so (ungeprüft) :

    Edit2: Den Trenner mal mit eingebaut, das er übergeben werden muss, um flexibler zu sein.

    AutoIt
    Opt('MustDeclareVars', 1)
    #include <File.au3>
    #include <Array.au3>
    
    $csv_array_0 = Rework_Array($csv_array_0, '";"', 27, $STR_ENTIRESPLIT) ;27 sind die Anzahl an ";" die du erwarten würdest, bitte korrigieren falls ich mich verzählt habe
    _ArrayDisplay($csv_array_0)
    $csv_array_1 = Rework_Array($csv_array_1, '";"', 27, $STR_ENTIRESPLIT)
    _ArrayDisplay($csv_array_1)
    
    
    Func Rework_Array($aArray, $Delimiter, $DelimiterCount, $Flag)
        For $Row = $aArray[0] to 1 Step -1
            If StringSplit($aArray[$Row], $Delimiter, $Flag)[0] <> ($DelimiterCount + 1) Then
                $aArray[$Row - 1] &= $aArray[$Row]
                _ArrayDelete($aArray, $Row)
            EndIf
        Next
        $aArray[0] = Ubound($aArray) - 1
        Return $aArray
    EndFunc
    Alles anzeigen
  • Wie informiert Ihr Eure User in einer Domain am PC-Arbeitsplatz über umgehend wichtige und zu beachtende Dinge?

    • Moombas
    • 9. März 2023 um 10:20

    water Ich überlasse das gerne dir, denn da sind Vorschläge bei etc., da werde ich nicht helfen können. Mir ging es rein darum, das bazii nur ein Gefühl dafür bekommt in welche Richtung es gehen könnte (Client seitig). Und ja, das der Code gar nicht genommen oder komplett zerpflückt wird, dessen sollte man sich bewusst sein.

  • Wie informiert Ihr Eure User in einer Domain am PC-Arbeitsplatz über umgehend wichtige und zu beachtende Dinge?

    • Moombas
    • 9. März 2023 um 10:10

    Danke fürs Lob.

    Ich bin eher ein Praktiker. Sprich: Erst mal mit einem Entwurf starten und diesen dann step-by-step ausarbeiten/ändern bis das finale Konstrukt steht.

    Und manchmal hilft sowas bei der gegenseitigen Verständigung/Kommunikation.

  • Wie informiert Ihr Eure User in einer Domain am PC-Arbeitsplatz über umgehend wichtige und zu beachtende Dinge?

    • Moombas
    • 9. März 2023 um 08:15

    Nur mal um eine Grobe Idee des lokalen Programms in den Raum zu schmeoßen, würe ich es grob so machen (ich habe verucht mich an water s "Vorgaben" zu bleiben und ist nur ein erster minimaler Entwurf):

    AutoIt
    Opt('MustDeclareVars', 1)
    #cs ----------------------------------------------------------------------------
        AutoIt Version: 3.3.16.0
        Author:         
        Script Function:
    #ce ----------------------------------------------------------------------------
    #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
    
    #include <Date.au3>
    #include <File.au3>
    #include <FileConstants.au3>
    #include <MsgBoxConstants.au3>
    
    Global Const $sNetworkDrive = @ScriptDir                                 ;change this to your network drive
    Global Const $sMainIni      = $sNetworkDrive & '\DM_Config_Global.ini'   ;$sMessages, $sArchive, $iEntryLifetime
    Global Const $sLocalIni     = @ScriptDir     & '\DM_Config_Local.ini'    ;$iInterval
    
    ;Default Ini Parameters defined here to have this centrally and no need to search thru the code
    Global $sMessages           = $sNetworkDrive & '\Messages\'
    Global $sArchive            = $sNetworkDrive & '\Messages\Archive\'
    Global $iInterval           = 60                                        ;Seconds between checks if new message exists
    Global $iEntryLifetime      = 14                                        ;Days Until Entry about read messages are deleted (only on startup currently)
    
    If not FileExists($sLocalIni) then    
        _CreateLocalIni()                                                    ;If Local Ini does not exist, create a new one with default parameters
    Else
        _CleanupLocalIni()                                                   ;If it does Exist, clean entrys up
    EndIf
    If     FileExists($sMainIni)  then _ReadMainIni()                        ;Read main Ini file, otherwise use default values (Exit could be also possible because if Main-Ini can't be read, no messages can be found (no access to the network drive).
    
    _Main()
    
    Func _Main()
    Local $sFiles
        $iInterval = Number(IniRead($sLocalIni, 'Main', 'Interval', $iInterval)) * 1000
        While True
            $sFiles = _FileListToArray($sMessages, '*.msg', $FLTA_FILES, False)
            If IsArray($sFiles) then
                For $Row = 1 to $sFiles[0]
                    If IniRead($sLocalIni, 'Messages', $sFiles[$Row], 'Unread') = 'Unread' Then
    
                        _ShowMessage($sFiles[$Row])
    
                        IniWrite($sLocalIni, 'Messages', $sFiles[$Row], _NowDate())
                    EndIf
                Next
            EndIf
            Sleep($iInterval)
        WEnd
    EndFunc
    
    Func _ShowMessage($sFilename); Very simple to show this as a Messagebox, Something own could be build by GUI or SplashTextOn
    Local $sText, $bUrgent = $MB_ICONINFORMATION
    Local Const $aFile = FileReadToArray($sMessages & $sFilename)
    
        For $Line = 0 to Ubound($aFile)-1
            $sText &= $aFile[$Line] & @CRLF
        Next
    
        If StringInStr($sFilename, 'urgent') then $bUrgent = $MB_ICONWARNING + $MB_TOPMOST
    
        MsgBox($bUrgent, StringTrimRight($sFilename, 4), $sText)
    EndFunc
    
    Func _CreateLocalIni()
        FileOpen($sLocalIni, 1)
        FileClose($sLocalIni)
    
        IniWrite($sLocalIni, 'Main', 'Interval', $iInterval)
    EndFunc
    
    Func _ReadMainIni()
        $sMessages         = IniRead($sMainIni, 'Main', 'MessageFolder', $sMessages)
        $sArchive          = IniRead($sMainIni, 'Main', 'ArchiveFolder', $sArchive)
        $iEntryLifetime = Number(IniRead($sMainIni, 'Main', 'EntryLifetime', 1))
    EndFunc
    
    Func _CleanupLocalIni()
    Local $aIni = IniReadSection($sLocalIni, 'Messages')
        If IsArray($aIni) then
            For $Row = $aIni[0][0] to 1 Step -1
                If _DateDiff('D', _NowDate(), $aIni[$Row][1]) >= $iEntryLifetime then _ArrayDelete($aIni, $Row)
            Next
            $aIni[0][0] = UBound($aIni) - 1
            IniWriteSection($sLocalIni, 'Messages', $aIni, 1)
        EndIf
    EndFunc
    Alles anzeigen
  • _regex_split - StringSplit aber mit regulärem Ausdruck als Trenner

    • Moombas
    • 9. März 2023 um 07:56

    Es war ja auch nur ein Q&D Beispiel und da habe ich mir persönlich keine Gedanken über Script breaking change gemacht. AAber dein Einwand Andy macht absolut Sinn.

    SOLVE-SMART für mich ist es die gleiche Aufgabe: "das Zerteilen eines Strings" Ob das nun per RegEx oder einfachem Delimiter passiert, ist doch egal. Die Aufgabe/das Ziel ist das Gleiche. Aber evtl. denken wir hier etwas unterschiedlich.

  • Wie informiert Ihr Eure User in einer Domain am PC-Arbeitsplatz über umgehend wichtige und zu beachtende Dinge?

    • Moombas
    • 8. März 2023 um 13:47
    Zitat von Peter S. Taler

    was bitte hat das ganze mit Datenschutz zu tun? Und mit dem Betriebsrat?


    Die Firma instaliert auf jedem Rechner ein Programm - wie das geht keinen etwas an!

    Das ist so nicht ganz richtig. Das "wie" nicht, aber das was die Software macht schon.

    Für die IT scheint es unproblematisch aber dennoch kann es Regelungen geben (Betriebliche Vereinbarungen), das bevor neue Software auf den PC's installiert wird, diese erst vom BR abgesegnet sein muss, was wiederum vom BR bezügl. Datenschutz etc. bewertet werden muss.

    Nicht jede Software ist rechtens! Sonst könntest du einfach unbemerkt "Spionage Software" auf jedem der Clients installieren (lassen) und so deine Mitarbeiter überwachen. Um soetwas zu verhindern gibt es das (Das das nicht immer 100%ig funktioniert sei mal dahin gestellt).

  • Wie informiert Ihr Eure User in einer Domain am PC-Arbeitsplatz über umgehend wichtige und zu beachtende Dinge?

    • Moombas
    • 8. März 2023 um 13:32

    Nur kurz dazu:

    Zitat von bazii

    Eine Priorisierung für "hoch" halte ich für sinnvoll, wenn z. B. eine Sofortnachricht z. B. beim Enduser generiert werden soll. Normal priorisiert könnten z. B. Nachrichten dann werden, wenn nach einer Neu-Anmeldung eines Users eine priorisierte Nachricht erscheinen soll.

    Wenn die Anzahl der zu prüfenden Dateien/Nachrichten beim Schleifendurchlauf gering ist (z.B. durch die angesprochene Archivierung in einem anderen Ordner), kann jede Nachricht "sofort" angezeigt werden (um bei water 's Beispiel zu bleiben: nach 60 Sekunden). Da braucht es im Programm dafür keine Trennung, lediglich für die Anzeigeform wäre es dann ggf. noch interessant (StayOnTop, Rot,... bei hoher Prio etc.).

  • Wie informiert Ihr Eure User in einer Domain am PC-Arbeitsplatz über umgehend wichtige und zu beachtende Dinge?

    • Moombas
    • 8. März 2023 um 10:28

    Wenn man meinen Vorschlag berücksichtigt, wären diese Meldungen bereits im Archiv oder ganz gelöscht und würden somit nicht mehr zur Anzeige kommen (je nachdem was dann in der Ini für ein "Ablaufzeitraum" gewählt wurde). Da es ja um dringende Meldungen geht, gehe ich davon aus, das diese 3 Wochen später nicht mehr wichtig sind, eher Tag-Aktuell, denn sonst wäre das Intranet ja die Wahl für die Meldung.

  • Wie informiert Ihr Eure User in einer Domain am PC-Arbeitsplatz über umgehend wichtige und zu beachtende Dinge?

    • Moombas
    • 8. März 2023 um 08:05

    water Bin mir nicht sicher ob ich das beim Überfliegen übersehen habe (ihr wart ganz schön fleißig), also nicht hauen :P

    Brauchst du die Priorisierung überhaupt (außer evtl. für die Anzeigeform)?

    Wenn man sagt, das Meldungen, die älter als z.B. 7 Tage (definierbar in der Ini) autom. in einen Archiv-Ordner gepackt werden (eventuell noch ein Wert für in die Ini packen, wie lange dort Meldungen gehalten werden und ggf. löschen), sollte sich die Abfragendauer in Grenzen halten (weil wenig Dateien), egal ob es eine Meldungen mit hoher Priorität ist oder mit normaler.

    Ich wäre geschockt, wenn die GL im Unternehmen von bazii mehr als 2 solcher Meldungen am Tag verschickt.

    Ausführen lassen würde ich das von der DM_Startup.exe, dann braucht es weiterhin kein Programm auf dem Server dafür.

  • Wie informiert Ihr Eure User in einer Domain am PC-Arbeitsplatz über umgehend wichtige und zu beachtende Dinge?

    • Moombas
    • 7. März 2023 um 13:58

    Ich empfehle zusätzlich, das Nachrichten auch nachträglich angeschaut werden können oder das eine Nachricht ggf. doppelt bestätigt werden muss, damit versehentliches "wegdrücken" (weil man gerade in der Textbearbeitung etc. war und just gerade auf Enter gedrückt hat) zu vermeiden.

  • Programm schreiben, das überprüfen soll ob .exe im Hintergrund läuft

    • Moombas
    • 7. März 2023 um 13:50
    Zitat von water

    Tut es aber, da es kein Exit aus der While-Schleife gibt. Sleep verhindern, dass die Schleife ungebremst läuft und so die gesamte CPU-Leistung auffrisst.

    Richtig, für einen Exit müsste man was gesondertes einbauen, sofern das überhaupt gewünscht ist.

  • Programm schreiben, das überprüfen soll ob .exe im Hintergrund läuft

    • Moombas
    • 7. März 2023 um 12:42

    Ganz einfach:

    AutoIt
    While 1
        If Not ProcessExists('AnyDesk.exe') Then    
            Run('C:\Program Files (x86)\AnyDesk\AnyDesk.exe')
        EndIf
        Sleep(250)
    WEnd
  • Wie informiert Ihr Eure User in einer Domain am PC-Arbeitsplatz über umgehend wichtige und zu beachtende Dinge?

    • Moombas
    • 7. März 2023 um 12:06

    Peter S. Taler : Wenn ich water richtig verstanden habe: Messages auf einem (für alle zugänglichen) Netzlaufwerk, Programm: bei allen lokal.

  • externe Exe im Hintergrund

    • Moombas
    • 7. März 2023 um 10:34

    Velted macht es wirklich Sinn sich darüber noch Gedanken zu machen? Es wurde ja geklärt, das auf Grund dessen, das hier Software eingesetzt wird, die nicht (mehr) zu den Bedürfnissen des Unternehmens passt, seitens der Mitarbeiter die vorhandenen Felder missbraucht werden und somit diese "Fehleingaben" entstehen, die wiederum das andere Programm zum Absturz bringen. (Soweit mein Verständnis, bitte korrigieren falls falsch)

    Das wiederum kann, da die Software lt. Windi schon sehr alt ist und damit sicherlich nicht weiter entwickelt wird, nur darin enden, dass man sich neue Software zulegt, die zu den Bedürfnissen des Unternehmens passt (und in diesem Fall von der Weinkontrolle abgesegnet wurde).

    Ja, ich Stimme dir zu, das ich auch nicht weiß, warum das "abschießen" per Taskmanager nicht klappen sollte aber aus meiner Sicht macht es wenig Sinn auf Grund der oben genannten Gründe dies weiter zu verfolgen und Energie in etwas zu stecken, das so oder so abgelöst wird.

  • _regex_split - StringSplit aber mit regulärem Ausdruck als Trenner

    • Moombas
    • 7. März 2023 um 09:26

    Also ich finde gerade so etwas eine sinnvolle "Erweiterung" der vorhandenen Funktionen.

    Es wäre natürlich noch schöner das in einer zu kombinieren. Sprich sowas wie:

    AutoIt
    _SringSplit($String, $Method, $Delimiter, $flag) 
    ;String = der zu trennende String
    ;Method = True für RegEx, False für default Stringsplit
    ;Delimiter = Delimiter für Stringsplit bzw. Pattern für RegEx
    ;flag = Flags fürs Stringsplit
  • Wie informiert Ihr Eure User in einer Domain am PC-Arbeitsplatz über umgehend wichtige und zu beachtende Dinge?

    • Moombas
    • 7. März 2023 um 09:18
    Zitat von Peter S. Taler

    Hmmm,

    ganz verstehe ich das nicht! Moombas schreibt spontane Meldungen max 1 Tag vorher... ist das technisch begründet oder ist das eine Regel im Haus? Frei nach dem Motto spontaner ist nicht erlaubt.

    Es ist keine fest geschriebene Regel aber für unkritische Arbeiten, trifft dies zu, das rechtzeitig zu planen und bekannt zu geben.

    Bei systemkritischen Arbeiten geht dies in der Regel, wie bereits erwähnt, über Slack & Intranet (wenn das Intranet betroffen ist ggf. auch per Mail). Bisher konnte man aber den Großteil der kritischen Arbeiten außerhalb der regulären Arbeitszeit packen, so das solch ein Meldesystem (Meldung als "Popup" direkt auf dem Bildschirm) nicht notwendig ist.

    Aber ich kenne natürlich nicht die Meldungen und deren Hintergrund in bazii 's Fall, mir würde keine einfallen, die von der Geschäftsleitung kommen könnte, die so dringend ist, das sie nicht 1 Tag warten kann.

  • Wie informiert Ihr Eure User in einer Domain am PC-Arbeitsplatz über umgehend wichtige und zu beachtende Dinge?

    • Moombas
    • 7. März 2023 um 08:03
    Zitat von bazii

    unplanbare Nachrichten (es geht immer um spontane Meldungen der Geschäftsleitung)

    Autsch, das hört sich für einen außenstehenden erst mal strange an.

    Bei uns geht alles per Intranet, wobei spontane Meldungen max. 1 Tag vorher bedeutet.

    Alles andere geht über Slack, wo alle Personen im entsprechenden Kanal sind, die es interessieren könnte.

  • externe Exe im Hintergrund

    • Moombas
    • 6. März 2023 um 11:09
    Zitat von Windi

    Du weißt doch in unserem schönen Land ist alles geregelt.

    In einigen Fällen macht es ja Sinn aber bei so etwas ist es mal wieder überregelt.

    Ich meine, wenn dies simple Empfehlungen wären, da diese Software von der Weinkontrolle geprüft wurde, ok. Aber das zu verpflichten... :Face: Naja egal, das ist OT.

  • externe Exe im Hintergrund

    • Moombas
    • 6. März 2023 um 10:42

    Ok, bekloppt (weil dies ja keine Auswirkungen auf die Ware selber hat) aber wenn es so ist, kommst du da nicht drum herum.

    So kann man den Wettbewerb auch künstlich verkleinern.

  • externe Exe im Hintergrund

    • Moombas
    • 6. März 2023 um 10:15

    Windi Du bist ja nicht nur auf Wein-Software gebunden. Du brauchst ja eine vernünftige Kundendatenbank (mit GUI) und Artikeldatenbank. Davon gibt es, wie Peter bereits schrieb, zu Hauf. Man muss es halt ggf. anpassen (lassen), wenn nichts 100%iges dabei ist oder (wenn möglich) etwas eigenes schreiben.

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™