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

Beiträge von BugFix

  • Taschenrechner Embedded

    • BugFix
    • 20. Mai 2017 um 14:26
    Zitat von Oscar

    darf erst nach dem wechseln der Ansicht

    Oops, na klar. Das hatte ich glatt vergessen zu verschieben, weil ich in erster Version nur zwischen mit/ohne Menüleiste geswitcht hatte. Ich ändere mal im Startpost.

  • Taschenrechner Embedded

    • BugFix
    • 19. Mai 2017 um 21:38

    OK, ich nutze Windows 7. Möglicherweise kann Win10 nicht mit WinMenuSelectItem umgehen. Kannst du ja mal mit anderen Standard-Windowsanwendungen testen (Notepad etc.).

  • Taschenrechner Embedded

    • BugFix
    • 19. Mai 2017 um 18:17

    Ich habe Tools, die ich im Laufe der Zeit für meine Kollegen geschrieben habe, nun mal in einer GUI eingebunden. Da auch der Windows Taschenrechner Verwendung findet, habe ich diesen ebenfalls in die Oberfläche integriert - braucht er nicht mehr extra geöffnet werden.
    Falls ihr das brauchen könnt:

    EDIT: Fehler beim Abfragen der Clientgröße behoben - Danke Oscar.

    AutoIt
    ;==============================================================================================
    $iStartModus = 3         ; 1 - Standard, 2 - Wissenschaftlich, 3 - Programmierer, 4 - Statistik
    $bVersteckeMenu = True   ; True(Default), False
    ;==============================================================================================
    
    
    $hGUIEmbedded = GUICreate('Embedded Calculator', 600, 400, -1, -1, BitOr($GUI_SS_DEFAULT_GUI,$WS_CLIPCHILDREN))
    $aCalc = _StartCalcHideMnu($iStartModus, $bVersteckeMenu)
    _EmbedCalc($hGUIEmbedded, $aCalc)
    GUiSetState(@SW_SHOW, $hGUIEmbedded)
    
    
    WinSetState($aCalc[1], '', @SW_SHOW)
    WinActivate($aCalc[1])
    
    
    While 1
        $msg = GUIGetMsg()
        Switch $msg
            Case $GUI_EVENT_CLOSE
                ProcessClose($aCalc[0])
                Exit
        EndSwitch
    WEnd
    
    
    Func _EmbedCalc($hWndGui, $aCalc)
    	_WinAPI_SetParent($aCalc[1], $hWndGui)
    	_WinAPI_SetWindowLong($aCalc[1], $GWL_STYLE, $WS_CLIPSIBLINGS)
    	_WinAPI_SetWindowLong($aCalc[1], $GWL_HWNDPARENT, $hWndGui)
    	_WinAPI_SetWindowPos($aCalc[1], 0, 0, 0, $aCalc[2], $aCalc[3], $SWP_SHOWWINDOW)
    EndFunc
    
    
    ; requires: #include <GuiMenu.au3>
    Func _StartCalcHideMnu($iMode=1, $bHide=True)
    	; $iMode: 1 - Standard, 2 - Wissenschaftlich, 3 - Programmierer, 4 - Statistik
    	Local $aMode[5] = ['','&Standard','&Wissenschaftlich','&Programmierer','St&atistik']
    	Local $PID = Run(@SystemDir & '\calc.exe')
    	Local $hCalc = WinWaitActive('[CLASS:CalcFrame]', '', 10)
    	If Not IsHWnd($hCalc) Then Return SetError(1,0,0)
    	; gewählten Mode aktivieren
    	$iMode = $iMode < 1 ? 1 : ($iMode > 4 ? 4 : $iMode)
    	WinMenuSelectItem($hCalc, '', '&Ansicht', $aMode[$iMode])
    	Local $aSize = WinGetClientSize($hCalc)
    	Local $hMnu, $aItem0, $iHMnu
    	; Menü Höhe ermitteln
    	$hMnu = _GUICtrlMenu_GetMenu($hCalc)
    	$aItem0 = _GUICtrlMenu_GetItemRect($hCalc, $hMnu, 0)
    	$iHMnu = $aItem0[3] - $aItem0[1]
    	; Menü - Item entfernen
    	If $bHide Then
    		For $i = _GUICtrlMenu_GetItemCount($hMnu) -1 To 0 Step -1
    			_GUICtrlMenu_RemoveMenu($hMnu, $i)
    		Next
    		$iHMnu = 0
    	EndIf
    	Local $aRet[4] = [$PID,$hCalc,$aSize[0],$aSize[1]+$iHMnu]
    	Return $aRet
    EndFunc
    Alles anzeigen


    PS: Ich würde ja gerne die calc.exe versteckt starten - aber leider wird @SW_HIDE beim Aufruf ignoriert (deshalb jetzt auch nicht im Code). Falls ihr da eine Lösung kennt, lasst hören.

  • Dateinamen an Script übergeben

    • BugFix
    • 19. Mai 2017 um 15:06
    Zitat von Schmunzel57

    aber doch bei weitem nicht so elegant wie gewünscht. Oder ???

    Kommt drauf an, an welchen Kriterien du dein Skript bemisst. Soll es in Schönheit sterben oder solide funktionieren? :P
    Ich setze die Prämisse auf Funktionalität. Scripting sugar kann - muß aber nicht sein. ;)

  • Dateinamen an Script übergeben

    • BugFix
    • 18. Mai 2017 um 22:17
    Zitat von alpines

    Es ist nicht möglich mehrere Dateien an eine Datei zu schicken so wie es in dem Thread steht.

    Meiner Meinung nach hat der von dir benannte Thread nichts mit dem Problem des TE zu tun.

    Selbstverständlich lassen sich per Kontextmenü z.B. 3 markierte Dateien gemeinsam an eine Zielanwendung senden. Diese arbeitet die Dateien dann, wie vom TE gewünscht, nacheinander ab.
    Aufruf wäre dann so: "c:\tools\meine.exe 'c:\data\docs\doc1.txt' 'c:\data\docs\doc2.txt' 'c:\data\docs\doc3.txt'"
    "meine.exe" als Zielanwendung in der Registry eintragen - fertig.

    Edit:
    Die Erkennung der selektierten Dateien, muß natürlich selbst geskriptet werden, standardmäßig würde, wie schon richtig gesagt, für jede Datei eine Instanz der Anwendung aufgerufen werden.
    Vor etlichen Jahren hatte ich mal etwas Ähnliches geschrieben: Kontextmenüeintrag (Dateiexplorer) - Infos markierte Dateien in Zwischenablage kopieren

  • Teilstring einer Variable ab letztem Zeichen

    • BugFix
    • 17. Mai 2017 um 14:54

    Oder mit StringRegExpReplace

    AutoIt
    $url = 'domainurl.test.com'
    
    
    $sFirst = StringRegExpReplace($url, '([^.]+).+', '$1')
    ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & "   var: $sFirst --> " & $sFirst & @LF)
    
    
    $sLast = StringRegExpReplace($url, '.+\.([^.]+)$', '$1')
    ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & "   var: $sLast --> " & $sLast & @LF)
  • Ordner/Dateien verpacken mit Progressbar

    • BugFix
    • 15. Mai 2017 um 14:26
    Zitat von alpines

    Bei der Methode musst du aber auf das Working-Directory aufpassen, weil die out.txt Datei dort hingeschrieben wird.

    Das kannst du mit der Angabe eines fixen Pfades umgehen. Also z.B. ... >> c:\tempout\out.txt

  • EXCEL _Excel_RangeFind ist zu langsam

    • BugFix
    • 15. Mai 2017 um 14:22

    [OT]

    Zitat von tubsids

    Wo hackt es?

    :Face:
    Die Hacke ist ein Gartenwerkzeug, mit ihr wird gehackt!
    Wenn etwas hängt, dann hakt es!
    [/OT]

  • Frage zu include bei nicht kompilierung

    • BugFix
    • 12. Mai 2017 um 10:24
    Zitat von BLinz

    Dann müsste auf allen Rechnern der Benutzer auch Autoit installiert sein - sonst weiß deren rechner nicht was eine .au3 Datei ist.

    Werft mal einen Blick in die Hilfe. AutoIt -Dateien /-Codezeilen lassen sich unabhängig von einem installierten AutoIt ausführen. Es braucht dazu nur eine beliebige AutoItdatei, die zur *.exe kompiliert wurde. Diese lässt sich dann verwenden um *.au3 zu interpretieren. In diesem Falle müssten aber alle zu includierenden Dateien mitgeliefert werden

    Code
    Run a script using another compiled script:
    
    
    Compiled.exe [/ErrorStdOut] /AutoIt3ExecuteScript file [params ...]
                    Execute another AutoIt script file from a compiled AutoIt3 executable. 
    
    
    Compiled.exe [/ErrorStdOut] /AutoIt3ExecuteLine "command line"
                    Execute one line of code as with AutoIt3.exe above. 
    
    
    This means that there is no need to have a copy of AutoIt3.exe in addition to the compiled file - the interpreter stub of the compiled file will replace it.  So as long as there is at least one compiled script available, other AutoIt scripts can be run without the need to have AutoIt3.exe on the machine., either pre-installed or added via FileInstall.
    Alles anzeigen
  • RegEx Pattern kürzen?

    • BugFix
    • 1. Mai 2017 um 14:06

    Wenn der Auswertestring in einer Zeile vorliegt, geht das wesentlich einfacher:

    AutoIt
    $s = '<td>14,6;77;12,4;134,5;216;5</td>'
    $aNumbers = StringRegExp($s, '([\d,]+)', 3)
    
    
    For $i = 0 To UBound($aNumbers) -1
    	ConsoleWrite($aNumbers[$i] & @CRLF)
    Next
  • RegEx Pattern kürzen?

    • BugFix
    • 1. Mai 2017 um 11:36
    Zitat von Lesato

    Im oben aufgeführten String sind die benötigten Zahlen jeweils durch ein Komma getrennt.

    Wohl eher durch ein Semikolon? Oder möchtest du aus den Semikolon-getrennten Zahlen nur von den Zahlen mit Nachkommaanteil den Ganzzahlwert?

  • Excel - Formaterkennung für Daten

    • BugFix
    • 28. April 2017 um 19:38
    Zitat von Bitnugger

    Du sag mal, machst du das Lua-Script (OHK) mit den SciTE-Variablen noch irgendwann fertig? (eg. "props['SciteDirectoryHome']")

    Oh Shit - da war doch was. Bitte erinnere mich regelmäßig alle 6 Monate daran. :rofl:

  • Excel - Formaterkennung für Daten

    • BugFix
    • 28. April 2017 um 16:07

    Hi,
    vielleicht kennt ihr das - ihr habt Daten, die aus einer Textdatei/Datenbank in eine Exceltabelle übertragen werden sollen. Wenn in den Daten z.B. Postleitzahlen oder Telefonnummern enthalten sind, muß ich vor dem Übertragen der Daten die Tabelle formatieren, da sonst die Vornullen weg sind. Früher hatte ich das mit einem Skript für jeden Anwendungsbereich extra gelöst. Jetzt löse ich das, wie folgt:

    AutoIt
    #include <Excel.au3>
    
    
    ; Bsp: CSV-Datei
    #cs
    KDNR;NAME;VNAME;STRASSE_NR;PLZ;ORT;TEL;EMAIL;REGISTERDATUM
    10123;Mustermann;Max;Mustergasse 123;08150;Musterhausen;089123456789;max.mustermann@mustermann.de;18.01.2017
    #ce
    
    
    ; erste Datenzeile einlesen (simuliert: _FileReadToArray($sPathFile, $aFile))
    Local $aFile[] = [3, _
    "KDNR;NAME;VNAME;STRASSE_NR;PLZ;ORT;TEL;EMAIL;REGISTERDATUM", _
    "10123;Mustermann;Max;Mustergasse 123;08150;Musterhausen;089123456789;max.mustermann@mustermann.de;18.01.2017", _
    "10124;Musterfrau;Maria;Mustergässle 456;56789;Musterdorf;099987654321;maria.musterfrau@musterfrau.de;21.02.2017"]
    
    
    ; erste Datenzeile splitten
    Local $aLine = StringSplit($aFile[2], ';')
    
    
    ; Exceltabelle erstellen und vor Befüllen mit Daten die Spalten formatieren
    Local $oExcel = _Excel_Open()
    Local $oWorkbook = _Excel_BookNew($oExcel, 1)
    Local $oSheet = $oWorkbook.Worksheets(1)
    For $i = 1 To $aLine[0]
    	$oSheet.Columns($i).NumberFormat = _GetExcelFormatByData($aLine[$i])
    Next
    
    
    ; Exceltabelle füllen
    For $i = 1 To $aFile[0]
    	$aLine = StringSplit($aFile[$i], ';', 2)
    	For $j = 0 To UBound($aLine) -1
    		$oSheet.Range("A1").Offset($i-1, $j).Value = $aLine[$j]
    		ConsoleWrite('$i-1, $j: ' & $i-1 & ', ' & $j & @CRLF)
    	Next
    Next
    
    
    
    
    
    
    
    
    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _GetExcelFormatByData
    ; Description ...: Gets the (german) Excel format string for a given data
    ; Syntax ........: _GetExcelFormatByData($sData)
    ; Parameters ....: $sData         - Value for the detection of the format
    ; Return values .: The Excel format string
    ; Author ........: BugFix
    ; ===============================================================================================================================
    Func _GetExcelFormatByData($sData)
    	$sData = String($sData)
    	Local $sPattDateHMS = '^\d{1,2}\.\d{1,2}\.\d{4} \d{1,2}:\d{1,2}:\d{1,2}$'
    	Local $sPattDateHM = '^\d{1,2}\.\d{1,2}\.\d{4} \d{1,2}:\d{1,2}$'
    	Local $sPattDate = '^\d{1,2}\.\d{1,2}\.\d{4}$'
    	Local $sPattFloat = '^\d+,\d+$'
    	Local $sPattZero = '^0$' ; alleinstehende Null als Integer nicht als String, wie führende Null in PLZ od. TelefonNr
    	Local $sPattInteger = '^[1-9]\d*$'
    	Select
    		Case StringRegExp($sData, $sPattDateHMS)
    			Return 'TT.MM.JJJJ hh:mm:ss'
    		Case StringRegExp($sData, $sPattDateHM)
    			Return 'TT.MM.JJJJ hh:mm'
    		Case StringRegExp($sData, $sPattDate)
    			Return 'TT.MM.JJJJ'
    		Case StringRegExp($sData, $sPattFloat)
    			Return '#0,#'
    		Case StringRegExp($sData, $sPattZero) Or StringRegExp($sData, $sPattInteger)
    			Return '#'
    		Case Else
    			Return '@'
    	EndSelect
    EndFunc  ;==>_GetExcelFormatByData
    Alles anzeigen
  • Powershell Fehlermeldung

    • BugFix
    • 26. April 2017 um 09:32

    Habe es schon verschoben.

  • Autoit Windows Wipe Datei und/oder Ordner

    • BugFix
    • 26. April 2017 um 09:30
    Zitat von Musashi

    Bist Du sicher, dass man damit gezielt einzelne Dateien final löschen kann ? Soweit ich das verstanden habe, überschreibt Cipher nur den freien Speicherplatz. Dateien müssen vorher 'normal' gelöscht werden.

    Da hast du Recht, ich hatte das auch anders in Erinnerung. Daten müssen zuerst gelöscht werden.

  • und nochmals RunWait @ComSpec

    • BugFix
    • 25. April 2017 um 10:12
    Zitat von mauric

    Mit diesem Weg klappt es auch nicht.

    $c = RunWait(StringFormat('"%s" x "%s" "%s"',@ComSpec,@Systemdir, $7a, $x, $all, $de), '', @SW_SHOW)

    Wie auch. Du verwendest nur 3 Formatvariablen (%s) und hast im Befehl 6 Variablen!
    Und was bitte soll das @ComSpec im Aufruf? Das ist doch total überflüssig, da du den Pfad zur Ausführungsdatei angibst und keinen Befehl aus der CMD.exe.

  • [gelöst] SQL - Positionsabfrage von rechts?

    • BugFix
    • 24. April 2017 um 11:13

    Der Verweis auf Case war gut.
    Habe mir jetzt eine zweistufige dreistufige Lösung erstellt (also von 2 3 möglichen Leerzeichen wird beim letzten getrennt. Damit sollten 99% der Fälle abgedeckt sein (solange wir nicht als Kundin Pippilotta Viktualia Rollgardina Pfefferminz Efraimstochter Langstrumpf bekommen :rofl: ).

    SQL
    select 
      case
        when pos(" ",name1) > 0 
         and pos(" ", substrex(name1, pos(" ",name1)+1, 40)) > 0 
         and pos(" ", substrex(name1, pos(" ",name1)+pos(" ", substrex(name1, pos(" ",name1)+1, 40))+1, 40)) > 0 then
          substrex(name1, pos(" ",name1)+pos(" ", substrex(name1, pos(" ",name1)+1, 40))+pos(" ", substrex(name1, pos(" ",name1)+pos(" ", substrex(name1, pos(" ",name1)+1, 40))+1, 40))+1, 40)
        when pos(" ",name1) > 0 and pos(" ", substrex(name1, pos(" ",name1)+1, 40)) > 0 then 
          substrex(name1, pos(" ",name1)+pos(" ", substrex(name1, pos(" ",name1)+1, 40))+1, 40)
        when pos(" ",name1) > 0 then 
          substrex(name1, pos(" ",name1)+1, 40)  
        else name1
      end NAME,
      case
        when pos(" ",name1) > 0 
         and pos(" ", substrex(name1, pos(" ",name1)+1, 40)) > 0 
         and pos(" ", substrex(name1, pos(" ",name1)+pos(" ", substrex(name1, pos(" ",name1)+1, 40))+1, 40)) > 0 then
          substrex(name1, 1, pos(" ",name1)+pos(" ", substrex(name1, pos(" ",name1)+1, 40))+pos(" ", substrex(name1, pos(" ",name1)+pos(" ", substrex(name1, pos(" ",name1)+1, 40))+1, 40))) 
        when pos(" ",name1) > 0 and pos(" ", substrex(name1, pos(" ",name1)+1, 40)) > 0 then 
          substrex(name1, 1, pos(" ",name1)+pos(" ", substrex(name1, pos(" ",name1)+1, 40)))
        when pos(" ",name1) > 0 then 
          substrex(name1, 1, pos(" ",name1)-1)
        else ''
      end VORNAME
    from 
      kunden
    where 
      kundennr = ::KDNR
    ;
    Alles anzeigen
  • _Excel_BookSaveAs immer mit Fehler

    • BugFix
    • 23. April 2017 um 21:24

    Unser Firmennetz ist ausschliesslich Intranet, insofern können wir da ganz entspannt sein. Es gibt zwei Einzel-PC mit Internetanschluß für Mailverkehr.

  • _Excel_BookSaveAs immer mit Fehler

    • BugFix
    • 23. April 2017 um 15:06

    Wir machen in der Firma heute dasselbe, wie im Jahr 2000. Insofern wäre es unsinnig Geld für Software auszugeben, wenn die vorhandene allen Anforderungen gerecht wird. Office 2000 wird hier also bestimmt noch 15 Jahre laufen. ;)

  • _Excel_BookSaveAs immer mit Fehler

    • BugFix
    • 23. April 2017 um 14:07

    Das ändert nichts.
    Ich bleibe dann lieber bei den nativen Objektfunktionen, aber vielleicht läßt sich das ja in die Funktion _Excel_BookSaveAs auch integrieren:

    $oExcel.ActiveWorkBook.SaveAs(@ScriptDir & '\test.xls') -- funktioniert fehlerfrei

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™