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

  • automatisierter Programmstart

    • BugFix
    • 13. September 2022 um 12:10

    Die Verwendung von Class/Instance ist auch immer der ID vorzuziehen, da diese bei vielen Programmen dynamisch generiert wird und dadurch bei jedem Programmstart differiert.

  • mit AutoIt HTML Quellcodeseiten (.htm) modifizieren

    • BugFix
    • 11. September 2022 um 13:09
    Zitat von gert_nrw_71

    Laut Doku ist FileSetPos auch nur mit einem filehandle einsetzbar ?

    Das ist korrekt.

    Aber warum zum Teufel willst du die Datei UNBEDINGT zum Lesen UND Schreiben öffnen?!

    Dazu besteht doch keine Notwendigkeit, so wie du das umsetzt.

    Also

    1. sRead = FileRead(Dateipfad)

    2. sRead manipulieren

    3. hwnd = FileOpen(Dateipfad, Overwrite)

    4. FileWrite(hwnd , manipulierte sRead)

    5. FileClose(hwnd)

  • Suche Hilfe - unzulässige Zeichen bei Dateinamen ersetzen - mit "StringRegExp" für ANFÄNGER!

    • BugFix
    • 11. September 2022 um 13:00

    Backslash, Asterisk, Fragezeichen, Größer, Kleiner sind alles "Magic Charakters" und deshalb im Pattern mit einem Backslash zu maskieren.

  • mit AutoIt HTML Quellcodeseiten (.htm) modifizieren

    • BugFix
    • 10. September 2022 um 23:15

    Da du nur einen Lese- und einen Schreibvorgang hast, spar dir FileOpen und verwende einfach den Dateipfad für Read/Write. Dann hast auch keine Probleme mit den Flags.

    Edit:

    Das dein Text gelöscht wird, liegt daran, dass du im gemeinsamen Read/Write anders vorgehen musst.

    Zitat

    When reading and writing via the same file handle, the FileSetPos() function must be used to update the current file position.

  • mit AutoIt HTML Quellcodeseiten (.htm) modifizieren

    • BugFix
    • 10. September 2022 um 22:12
    Zitat von gert_nrw_71

    wie kann ich denn den geänderten HTML Code wieder abspeichern, das kriege ich irgendwie nicht hin ?

    In deinem Kommentar steht zwar: Öffnen zum Lesen und Schreiben - Aber du tust es nicht. Du musst schon das Flag setzen.

  • Microsoft Word: Suche und ersetze Text in den Inhalten der VBA-Progammierung (gelöst)

    • BugFix
    • 7. September 2022 um 12:38
    Zitat von water

    Daher ist es für die "normale" Word find & replace nicht erreichbar.

    Das ist schon klar. Mit "Suchen & Ersetzen" meinte ich schon eine auf das VBA Objekt bezogene, zu implementierende Funktion, die das übernimmt.

    Ich wollte nur klarmachen:

    Wenn ich sowieso ersetze, dann doch lieber mit Variablen statt Fixwerten.

  • Microsoft Word: Suche und ersetze Text in den Inhalten der VBA-Progammierung (gelöst)

    • BugFix
    • 7. September 2022 um 07:36
    Zitat von bazii

    Den Aufwand zu betreiben, die teilweise sehr aufwendigen Vorlagen neu aufzusetzen kann ich derzeit nicht leisten.

    Aber wo ist der Unterschied, ob du per Suchen & Ersetzen einfügst:

    Suche "Meier" Ersetze "Müller"

    oder

    Suche "Meier" Ersetze "INIRead(Inipfad, Chef)" - mit entsprechender VBA Umsetzung

    Danach hast du alle Vorlagen dynamisch aktualisiert.

  • mit AUtoit Excel öffnen, ohne das Excel angezeigt wird

    • BugFix
    • 6. September 2022 um 21:26
    Zitat von gert_nrw_71

    Excel-Instanz offen bleibt oder nicht ?

    Mit ProcessExists auf eine Excelinstanz prüfen. Das Blöde ist aber, dass sich unbegrenzt Excel-Instanzen öffnen lassen.

    Aber zum Test: Öffne vor dem Ausführen deines Skripts den Taskmanager. Findest du dort eine/mehrere Excel-Instanzen: Abschießen.

    Und nun starte dein Skript in der jetzt Excel-freien Umgebung. Wenn es dann noch nicht klappt: PC aus Fenster werfen. :whistling:

  • Microsoft Word: Suche und ersetze Text in den Inhalten der VBA-Progammierung (gelöst)

    • BugFix
    • 5. September 2022 um 22:09

    Zum Suchen & Ersetzen kann ich im Moment nichts sagen.

    Aber ein Tipp: Verwende für sich evtl. ändernde Daten Variablen, die du z. B. aus einer INI oder Datenbank liest. Geht mit VBA ebenso einfach, wie in AutoIt.

  • mit AUtoit Excel öffnen, ohne das Excel angezeigt wird

    • BugFix
    • 4. September 2022 um 16:06
    Zitat von gert_nrw_71

    Jedoch bekomme ich immer noch die Speichermeldungen,

    EDIT: Ich vermute, das ist nicht die Speichermeldung, sondern die ScreenUpdate-Meldung ("..Datei wurde verändert, soll die Datei neu geladen werden" - oder so ähnlich). Das musst du natürlich auch abfangen, siehst du in meiner Close-Funktion. Obwohl das in der normalen _Excel_Open-Funktion, die du kpl. mit False für alle Parameter setzt, ja auch deaktiviert sein sollte. :/

    Ich verwende bei mir eine eigene Open und Close - Funktion, die jeweils Excel-Objekt erstellen und Workbook öffnen, sowie Workbook speichern und Objekt schließen in einem Rutsch erledigt. Da poppt keine Dialogbox auf.

    Vielleicht kannst du es verwenden:

    AutoIt
    Func _ExcelBookOpen($_sFilePath, $_bVisible=1, $_bReadOnly=False)
        Local $_oExcel = ObjCreate("Excel.Application")
        If NOT IsObj($_oExcel) Then Return SetError(1, 0, 0)
        If NOT FileExists($_sFilePath) Then Return SetError(2, 0, 0)
        If $_bVisible > 1 Then $_bVisible = 1
        If $_bVisible < 0 Then $_bVisible = 0
        With $_oExcel
            .Visible = $_bVisible
            .WorkBooks.Open($_sFilePath, Default, $_bReadOnly)
            .ActiveWorkbook.Sheets(1).Select()
        EndWith
        Return $_oExcel
    EndFunc ;==>_ExcelBookOpen
    
    Func _ExcelBookClose($_oExcel, $_bSave = 1, $_bAlerts = 0)
        If NOT IsObj($_oExcel) Then Return SetError(1, 0, 0)
        If $_bSave > 1 Then $_bSave = 1
        If $_bSave < 0 Then $_bSave = 0
        If $_bAlerts > 1 Then $_bAlerts = 1
        If $_bAlerts < 0 Then $_bAlerts = 0
        $_oExcel.Application.DisplayAlerts = $_bAlerts
        $_oExcel.Application.ScreenUpdating = $_bAlerts
        If $_bSave Then
            $_oExcel.ActiveWorkBook.Save
        EndIf
        $_oExcel.Application.DisplayAlerts = True
        $_oExcel.Application.ScreenUpdating = True
        $_oExcel.Quit
        Return 1
    EndFunc ;==>_ExcelBookClose
    Alles anzeigen
  • mit AUtoit Excel öffnen, ohne das Excel angezeigt wird

    • BugFix
    • 4. September 2022 um 09:52
    Zitat von water

    dann findest Du die Werte hier:

    Alternativ kann man auch den VBA-Editor nutzen (Excel öffnen, <Alt+F11>) und dort im Objektkatalog (Symbol wie ein Karton) anzeigen lassen.

  • mit AUtoit Excel öffnen, ohne das Excel angezeigt wird

    • BugFix
    • 3. September 2022 um 10:36
    Zitat von water

    Ist aber sehr hypothetisch

    Irgendwie musste ich ja meinen Kopf aus der Schlinge ziehen. :rofl:

  • mit AUtoit Excel öffnen, ohne das Excel angezeigt wird

    • BugFix
    • 2. September 2022 um 22:55
    Zitat von water

    Das ist aber schon durch Parameter 2 von _Excel_Open erledigt.

    Grundsätzlich ja, aber wenn z.B. das Objekt mit _Attach von einem Excel im Hintergrund "gekapert" wird, kann das durchaus anders sein.

    Aber du hast recht - ohne Skript.... :Glaskugel:

  • mit AUtoit Excel öffnen, ohne das Excel angezeigt wird

    • BugFix
    • 2. September 2022 um 22:43
    Zitat von gert_nrw_71

    Aber leider habe ich nichts gefunden, wie man das Speichern Fenster abschalten kann, das wird immer wieder angezeigt ?

    Vor dem Aufruf von ..Save:

    $oExcel.DisplayAlerts = False

  • mit AUtoit Excel öffnen, ohne das Excel angezeigt wird

    • BugFix
    • 2. September 2022 um 22:11

    Schau dir in der Hilfe die Excel UDF an, alle Funktionen, die mit _Excel... beginnen.

  • Graph - bei sich verändernden Werten Skalierung anpassen

    • BugFix
    • 2. September 2022 um 18:09
    Zitat von Oscar

    Aber als FileCopy-UDF wird das wohl sehr heftig werden, wenn es überhaupt irgendwie geht.

    Ich überlege gerade, das mit wChart in Nim zu schreiben und auch dort den async Prozess zu nutzen. Zur Kommunikation mit SciTE hatte ich das schon genutzt (async).

    wChart nutzt auch GDIplus, aber halt wesentlich performanter.

    Aber das hat keine Eile, werde ich mal immer so nebenbei weiter verfolgen.

  • Graph - bei sich verändernden Werten Skalierung anpassen

    • BugFix
    • 2. September 2022 um 17:50
    Zitat von Oscar

    Auch, wenn Du die Aktualisierung nur z.B. jede Sekunde vornimmst?

    Weniger als 0.1 s ist nicht sinnvoll, da dann zu wenig Werte generiert werden und kein an- u. absteigender Graph, sondern eine kurze wilde Zick- Zacklinie entsteht.

    Ich mach mir mal Gedanken, wie ich das in einen externen Prozess/anderen Kern auslagern kann.

  • Graph - bei sich verändernden Werten Skalierung anpassen

    • BugFix
    • 2. September 2022 um 16:46

    OK, leider ist das Einbinden des Graphen ncht sinnvoll. Dadurch wird die Geschwindigkeit total ausgebremst, von 86 MB/s bis runter auf 12 MB/s.

    Schade.

  • Graph - bei sich verändernden Werten Skalierung anpassen

    • BugFix
    • 2. September 2022 um 15:22
    Zitat von Oscar

    Ich würde sowas vorschlagen:

    :thumbup: Hey, das gefällt mir. Danke für die Lösung.

  • Graph - bei sich verändernden Werten Skalierung anpassen

    • BugFix
    • 2. September 2022 um 12:52

    Ich wollte jetzt zu meiner Copy-Funktion auch eine Graph-Anzeige einbauen.

    Soweit auch unproblematisch. Ich hatte vor Jahren, um mir den Umgang mit GDI zu vereinfachen, ja mal eine UDF dafür erstellt. Ist sicher für diese Anwendung overdressed, aber läuft.

    Mein Problem liegt hier:

    Beim Kopieren ist die Kopiergeschwindigkeit ja im Bereich von 0 bis ... MB/s.

    Die zu zeichnenden Punkte sind immer als Prozentwerte anzugeben, max. Zeichenbereich = 100%. Nur auf welchen Wert soll ich die 100% referieren? Kopieren auf der Festplatte ist meist um die 80 MB/s, wenn ich da 150MB/s = 100% setze ist das übersichtlich. Auch wenn der Speed auf 10 MB/s absackt. Kopieren auf externe Datenträger kann aber deutlich langsamer sein, im KB-Bereich. Das würde dann gar nicht mehr angezeigt werden.

    Ich würde jetzt den Speed auswerten und beim Erreichen von Schwellwerten eine neue Grenze für die 100% setzen.

    Oder habt ihr andere Ideen?

    Hier mal eine lauffähige Simulation. Die erforderliche "LivingGraph.au3" ist angehängt.

    BTW: Random() ist schon sehr seltsam. Spätestens nach 3 Minuten sind die simulierten Werte nur noch am Maximum und bleiben dort hängen.

    EDIT: Ich hab schon zu lang nicht mehr damit gearbeitet. Es sieht so aus, als ob 0 oben ist?! Was hab ich denn da vergurkt? GDI+ ist nicht wirklich meine Kernkompoetenz. :D

    Prozentwerte war Quatsch, Pixelposition wie üblich, nach unten größer werdend. - OK, das ist dann nur ein Umrechnungsproblem.

    EDIT 2: Also die _RandomTransferSpeed() ist so nicht sehr sinnvoll, muss ich nochmal überdenken. - Ist aber nicht das Kernproblem.

    EDIT 3: Die Funktion _RandomTransferSpeed() ist jetzt angepasst, aber läuft nach einiger Zeit gegen 0. Seltsam.

    AutoIt
    #include <ProgressConstants.au3>
    #include <GuiStatusBar.au3>
    #include <StaticConstants.au3>
    #include 'LivingGraph.au3'
    
    Global $hGui, $lbPercent, $lbSpeed, $lbFile, $lbRestFiles, $lbRestSize, $lbRestTime, $hStatus, $idProgress
    Global $idGraph
    
    
    _CreateCopyGui()
    GUISetState(@SW_SHOW, $hGui)
    
    Do
        _GraphCtrl_Draw($idGraph, _RandomTransferSpeed(95))
    Until GUIGetMsg() = -3
    
    
    Func _RandomTransferSpeed($_iMax)
        Local Static $100Percent = 85 ; Höhe Graph
        Local $1MBperSec = $_iMax / $100Percent
    
        Local Static $iMBPerSec = 50
        $iMBPerSec += (Random(-1,1,1) * Random(1,3,1) * ($iMBPerSec / 100))
        If $iMBPerSec >= $_iMax Then $iMBPerSec -= (3*($iMBPerSec / 100))
        If $iMBPerSec < 1 Then $iMBPerSec = 1
    
        Local $iShowPx = $100Percent - ($iMBPerSec / $1MBperSec)
        GUICtrlSetData($lbSpeed, Round($iMBPerSec) & ' MB')
        Return $iShowPx
    EndFunc
    
    
    Func _CreateCopyGui()
        $hGui = GUICreate('Copy with Progress', 400, 260)
        GUISetBkColor(0xF0F8FF)
        GUISetFont(10, 400, Default, 'Courier New')
    
        ; Prozent
        GUICtrlCreateLabel('Fortschritt:', 10, 10, 115, 17)
        $lbPercent = GUICtrlCreateLabel('0', 320, 10, 60, 17, BitOR($GUI_SS_DEFAULT_LABEL, $SS_RIGHT))
        GUICtrlSetColor(-1, 0x000080)
        GUICtrlCreateLabel('%', 380, 10, 10, 17, BitOR($GUI_SS_DEFAULT_LABEL, $SS_RIGHT))
        GUICtrlSetColor(-1, 0x000080)
    
        ; Speed
        GUICtrlCreateLabel('Geschwindigkeit:', 10, 32, 125, 17)
        $lbSpeed = GUICtrlCreateLabel('0 MB', 300, 32, 70, 17, BitOR($GUI_SS_DEFAULT_LABEL, $SS_RIGHT))
        GUICtrlSetColor(-1, 0x000080)
        GUICtrlCreateLabel('/s', 370, 32, 20, 17, BitOR($GUI_SS_DEFAULT_LABEL, $SS_RIGHT))
        GUICtrlSetColor(-1, 0x000080)
    
        ; akt. Datei
        GUICtrlCreateLabel('Name:', 10, 54, 40, 17)
        $lbFile = GUICtrlCreateLabel('', 55, 54, 335, 17, BitOR($GUI_SS_DEFAULT_LABEL, $SS_RIGHT))
        GUICtrlSetColor(-1, 0x000080)
    
        ; verbleibende Elemente
        GUICtrlCreateLabel('Verbleibende Elemente:', 10, 76, 180, 17)
        $lbRestFiles = GUICtrlCreateLabel('', 330, 76, 60, 17, BitOR($GUI_SS_DEFAULT_LABEL, $SS_RIGHT))
        GUICtrlSetColor(-1, 0x000080)
    
        ; verbleibende Größe
        GUICtrlCreateLabel('Verbleibende Größe:', 10, 98, 180, 17)
        $lbRestSize = GUICtrlCreateLabel('', 280, 98, 110, 17, BitOR($GUI_SS_DEFAULT_LABEL, $SS_RIGHT))
        GUICtrlSetColor(-1, 0x000080)
    
        ; verbleibende Zeit
        GUICtrlCreateLabel('Restdauer ungefähr:', 10, 120, 180, 17)
        $lbRestTime = GUICtrlCreateLabel('', 250, 120, 140, 17, BitOR($GUI_SS_DEFAULT_LABEL, $SS_RIGHT))
        GUICtrlSetColor(-1, 0x000080)
    
        ; Graph hellgrün: 0xF0F0F0, dunkelgrün: 0x05B024
        $idGraph = _GraphCtrl_Create($hGui, 10, 142, 380, 85, 20)
        _GraphCtrl_SetHelpline($idGraph, -1, '30,60')
    
        ; Statusbar
        $hStatus = _GUICtrlStatusBar_Create($hGui)
        _GUICtrlStatusBar_SetMinHeight($hStatus, 20)
        $idProgress = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_SMOOTH)
        GUICtrlSetColor(-1, 0x008B00) ; grün
        _GUICtrlStatusBar_EmbedControl($hStatus, 0, GUICtrlGetHandle($idProgress))
    EndFunc
    Alles anzeigen

    Dateien

    LivingGraph.au3 23,62 kB – 188 Downloads

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™