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

Beiträge von DerPensionist

  • UDF EXCEL: Formeln in weitere Zeilen erweitern? "AutoFill"-Funktion ist ja nicht implementiert?

    • DerPensionist
    • 7. Oktober 2019 um 13:00

    Sorry für die späte Reaktion.

    Danke, der Hinweis half mir, kam auf eine Ähnliche Lösung

    nach Update von "$adrINDX" Adresse des Bereiches "HTML_ndx"

    Code
       _Excel_RangeCopyPaste($oHTML, _                ; Tabelle "HTML"
             StringLeft($adrINDX,stringinstr($adrINDX,":")-1), _   ; 1. Zelle von Bereich "HTML_ndx"
             $adrINDX, _                              ; neuer Bereich "HTML_ndx"
             Default, _                               ;
             $xlPasteFormulas)                        ; Formeln kopieren
    
      if @error <> 0 Then ERR(802, "Bereich HTML_ndx update Fehler:" & @error & "[" & @extended & "]")                     
  • UDF EXCEL: Formeln in weitere Zeilen erweitern? "AutoFill"-Funktion ist ja nicht implementiert?

    • DerPensionist
    • 6. Oktober 2019 um 14:02

    In Zeile "H2" ist eine Formel die auf Zellen (z.b.: "J2") beziehen. Spalten "I.M" wurden erweitert.

    Nun möchte ich die Formeln in die neu belegten Zeilen erweitern.

    $oRng=$oActSht.Range("H2")

    $oRng.select

    $oRng.AutoFill;("H2:H111",0)

    ;$oActSht.Range("H2").AutoFill Destination:=Range("H2:H111"), Type:=xlFillDefault ; [0]

    --> Antwort:

    "C:\Users\..............." (68) : ==> The requested action with this object has failed.:

    $oActSht.AutoFill

    Diese Frage gab es bereits: am 7. April 2014 unter "Übersetzung" VBA in AutoIt - Funktion AutoFill, blieb aber unbeantwortet.

    Eine Idee dieses Problem zu lösem? (ausser natürlich mit Schleife Zeile für Zeile)

  • CSV Datei umwandeln und Zeilen vergleichen

    • DerPensionist
    • 29. Juli 2013 um 16:55

    Falls ich es richtig verstanden habe:

    [autoit]

    #include <array.au3>
    #include <GUIConstantsEx.au3>
    #include <File.au3>
    Dim $aFilInp,$aFld
    Dim $hFilInp
    dim $sFilInp,$i,$j

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

    $sFilInp = FileOpenDialog("Bitte wählen Sie eine Datei aus.", @ScriptDir , "CSV-Datei (*.csv)", 1 )
    if @error then ; oder was auch immer
    $sFilInp = @ScriptDir & "\test_Input.csv"
    consolewrite(@crlf&@ScriptDir & "\test_Input.csv")
    EndIf

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

    If Not _FileReadToArray($sFilInp, $aFilInp) Then
    MsgBox(16, "Error", "Datei konnte nicht gelesen werden!")
    ;Return $aFilInp
    EndIf
    Dim $aFilOut [$aFilInp[0]] =[0] ;Ausgabe maximal = eingabezeilen

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

    For $i = 2 To $aFilInp[0]
    $aFld = StringSplit($aFilInp[$i], ";")
    $j = _ArraySearch($aFilOut,";"&$aFld[5]&";",1,0,0,1) ; Casesensitiv,Partial compare
    if @error then ; Auftragsnummer neu
    $aFilOut[0] += 1 ; Neues Elementweiterzählen
    $aFilOut[$aFilOut[0]] = $aFilInp[$i] ; ganze zeile
    else
    $aFilOut[$j] &= ";"& $aFld[6] &";"& $aFld[7] ; nur arttikelnr & Preis anhängen
    endif
    next
    Redim $aFilOut [$aFilOut[0]+1] ; auf aktuelle Zeilenanzahl reduzieren
    _arraydisplay($aFilOut)
    _FileWriteFromArray(@ScriptDir & '\Test_Ausgabe.csv',$aFilOut,1,$aFilOut[0],";")
    MsgBox(64, "Info", "Die Datei hat " & $aFilOut[0] & " Position(en).")

    [/autoit]


    Eingabe:

    Spoiler anzeigen

    Name; Straße; PLZ; Ort; Auftragsnummer; Artikelnr.; VKPreis
    Mustermann; Musterstr. 15; 12345; Musterstadt; 0001; 01; 6,99
    Mustermann; Musterstr. 15; 12345; Musterstadt; 0001; 50; 9,50
    Mustermann; Musterstr. 15; 12345; Musterstadt; 0001; 15; 19,99
    Meier; Hauptstr. 1; 09845; Testhausen; 0002; 60; 1,99
    Schmitz; Teststraße 1; 79884; Hauptstadt; 0003; 05; 4,99
    Schmitz; Teststraße 1; 79884; Hauptstadt; 0003; 10; 6,99


    Ausgabe:

    Spoiler anzeigen


    Mustermann; Musterstr. 15; 12345; Musterstadt; 0001; 01; 6,99; 50; 9,50; 15; 19,99
    Meier; Hauptstr. 1; 09845; Testhausen; 0002; 60; 1,99
    Schmitz; Teststraße 1; 79884; Hauptstadt; 0003; 05; 4,99; 10; 6,99


    mfG
    DerPensionist

  • _FFClick ab FireFox 22.0

    • DerPensionist
    • 29. Juli 2013 um 14:08

    Hallo,
    ab FireFox 22.0 scheint _FFClick nicht mehr zu funktionieren.
    Hat jemand eine Idee/Lösung?

    Habe mein Script auf Minimalversion reduziert.

    • Aufruf der Seite
    • entsprechendes Feld mit Artikelnummer beschicken (_FFObj )
    • und der Versuch es abzuschicken (_FFClick) auf Button "Suchen"


    Leider passiert bei FireFox 22.0 nichts, mit FireFox 19.0.2 als auch FireFox 21.0 gab es keine Probleme!
    "Die Umgebung:
    __FFStartProcess: ""C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -new-window "http://www.HSE24.at" "-repl 4242 "
    _FFConnect: OS: WIN_7 WIN32_NT 7601 Service Pack 1
    _FFConnect: AutoIt: 3.3.8.1
    _FFConnect: FF.au3: 0.6.0.1b-8 (aus engl.sprachigem Forum) aber auch mit 0.6.0.1b-3 und 0.6.0.1b-7 getestet
    _FFConnect: IP: 127.0.0.1
    _FFConnect: Port: 4242
    _FFConnect: Browser: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0 bzw. 21.0 und 19.0.2
    "
    Mein Testscript (mit HTMLCode des Buttons als Komentar):

    [autoit]


    #Tidy_Parameters=/pr=1 /tc=4 /uv=3 /reel /sci=9 /gds /gd=1
    #include <FF_0.6.0.1b-8.au3>
    AutoItSetOption("MustDeclareVars", 1)
    AutoItSetOption("WinTitleMatchMode", 2)
    Global $_FF_COM_TRACE = True ; Trace communication to console (debugging)
    dim $sArtNr = "999999"
    Dim $URL = "http://www.HSE24.at"
    Dim $rc , $i ; work fields

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

    If Not _FFStart($URL) Then Err(998, "FF-Start: failed.")
    consolewrite(@crlf&"---------------------- FF Started ok---------------------------------"&@crlf)

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

    $rc = _FFObj(_FFXPath("id('header:searchfied')", "", 9), "value", $sArtNr) ; set ArtNr ?
    consolewrite(@crlf&"---------------------- enter ArtNr ins field ok -------------------"&@crlf)

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

    $rc = _FFClick("header:search_submit_button","id") ; works including FireFox 19.0.1sleep(1000)
    ;------------------------------------------------ ; but no effect sonce FireFox 22.0.0
    ;sleep(1000)
    consolewrite(@crlf&"---------------------- nothing hapens/ no error -------------------"&@crlf)
    ;sleep (5000)
    ;send("{Enter}") ; has also no effect

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

    exit
    #cs ;-------------------------------------- HTML-code of Button ----------------------------------------
    <div class="searchfield-wrapper">
    <input id="header:searchfied" class="text" type="text" autocomplete="off" name="SearchParameter" value="Begriff oder Bestellnr."></input>
    <input id="header:search_submit_button" class="box-btn-search" type="submit" style="position:absolute;" alt="Abschicken" title="Suchen" value="Suchen" name="search_submit_button"></input>
    <br class="clear-block"></br>
    <div id="searchfield-layer" class="searchfield-layer"> …
    </div>
    </div>

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

    #ce
    Func Err($FehlerNR, $Txt1, $Txt2 = "") ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    If MsgBox((5 + 32) * (StringRight($FehlerNR, 1) = "R") + (16 + 4096) * (StringRight($FehlerNR, 1) <> "R"), _
    "Fehler: " & StringRegExpReplace($FehlerNR, "(\d*)(.*)", "$1"), _
    $Txt1 & @CRLF & $Txt2) _
    = 4 Then ; Retry-Antwort nur wenn erlaubt
    Return StringRegExpReplace($FehlerNR, "(\d*)(.*)", "$1")
    Else
    Exit StringRegExpReplace($FehlerNR, "(\d*)(.*)", "$1")
    EndIf
    EndFunc ;==>Err

    [/autoit]


    Protokoll FireFox 22.0

    Spoiler anzeigen


    __FFStartProcess: ""C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -new-window "http://www.HSE24.at" "-repl 4242 "
    _FFConnect: OS: WIN_7 WIN32_NT 7601 Service Pack 1
    _FFConnect: AutoIt: 3.3.8.1
    _FFConnect: FF.au3: 0.6.0.1b-8
    _FFConnect: IP: 127.0.0.1
    _FFConnect: Port: 4242
    _FFConnect: Delay: 2ms
    _FFConnect: Socket: 640
    _FFConnect: Browser: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
    __FFSendJavaScripts: Sending functions to FireFox .......... done
    _FFLoadWait: . loaded in 16ms
    [object XrayWrapper [object HTMLDocument]] - {__noscriptStorage: {...}, __noScriptEarlyScripts__: "http://www.hse24.at/", _noscriptAfterSurrogates: true, location: {...}, addEventListener: function() {...}, removeEventListener: function() {...}, dispatchEvent: function() {...}, ...}

    ---------------------- FF Started ok---------------------------------
    __FFSend: FFau3.xpath=null;try{FFau3.xpath=FFau3.WCD.evaluate("id('header:searchfied')",FFau3.WCD,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;}catch(e){'_FFXPath_Error: '+e;};
    __FFRecv: [object XrayWrapper [object HTMLInputElement]] - {stepUp: function() {...}, stepDown: function() {...}, checkValidity: function() {...}, setCustomValidity: function() {...}, select: function() {...}, setSelectionRange: function() {...}, mozIsTextField: function() {...}, ...}
    __FFSend: try{FFau3.xpath.hasAttribute('value')}catch(e){'_FFCmd_Err';};
    __FFRecv: 1
    __FFSend: try{FFau3.xpath.value='999999'}catch(e){'_FFCmd_Err';};
    __FFRecv: 999999

    ---------------------- enter ArtNr into field ok -------------------
    __FFSend: try{FFau3.simulateEvent(FFau3.WCD.getElementById('header:search_submit_button'),'MouseEvents','click');}catch(e){'_FFCmd_Err';};
    __FFRecv: 1
    _FFLoadWait: . loaded in 16ms
    [object XrayWrapper [object HTMLDocument]] - {__noscriptStorage: {...}, __noScriptEarlyScripts__: "http://www.hse24.at/", _noscriptAfterSurrogates: true, location: {...}, addEventListener: function() {...}, removeEventListener: function() {...}, dispatchEvent: function() {...}, ...}

    ---------------------- nothing hapens/ no error -------------------
    +>11:30:08 AutoIT3.exe ended.rc:0
    >Exit code: 0 Time: 6.363


    Protokoll FireFox 21.0

    Spoiler anzeigen


    __FFStartProcess: ""C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -new-window "http://www.HSE24.at" "-repl 4242 "
    _FFConnect: OS: WIN_7 WIN32_NT 7601 Service Pack 1
    _FFConnect: AutoIt: 3.3.8.1
    _FFConnect: FF.au3: 0.6.0.1b-8
    _FFConnect: IP: 127.0.0.1
    _FFConnect: Port: 4242
    _FFConnect: Delay: 2ms
    _FFConnect: Socket: 644
    _FFConnect: Browser: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
    __FFSendJavaScripts: Sending functions to FireFox .......... done
    _FFLoadWait: . loaded in 16ms
    [object HTMLDocument] - {__noscriptStorage: {...}, __noScriptEarlyScripts__: "http://www.hse24.at/", _noscriptAfterSurrogates: true, location: {...}, addEventListener: function() {...}, removeEventListener: function() {...}, dispatchEvent: function() {...}, ...}

    ---------------------- FF Started ok---------------------------------
    __FFSend: FFau3.xpath=null;try{FFau3.xpath=FFau3.WCD.evaluate("id('header:searchfied')",FFau3.WCD,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;}catch(e){'_FFXPath_Error: '+e;};
    __FFRecv: [object HTMLInputElement] - {addEventListener: function() {...}, removeEventListener: function() {...}, dispatchEvent: function() {...}, defaultChecked: false, disabled: false, checked: false, type: "text", ...}
    __FFSend: try{FFau3.xpath.hasAttribute('value')}catch(e){'_FFCmd_Err';};
    __FFRecv: 1
    __FFSend: try{FFau3.xpath.value='999999'}catch(e){'_FFCmd_Err';};
    __FFRecv: 999999

    ---------------------- enter ArtNr into field ok -------------------
    __FFSend: try{FFau3.simulateEvent(FFau3.WCD.getElementById('header:search_submit_button'),'MouseEvents','click');}catch(e){'_FFCmd_Err';};
    __FFRecv: 1
    _FFLoadWait: . loaded in 16ms
    [object HTMLDocument] - {__noscriptStorage: {...}, __noScriptEarlyScripts__: "http://www.hse24.at/", _noscriptAfterSurrogates: true, location: {...}, addEventListener: function() {...}, removeEventListener: function() {...}, dispatchEvent: function() {...}, ...}

    ---------------------- OK -------------------
    +>11:21:35 AutoIT3.exe ended.rc:0
    >Exit code: 0 Time: 6.266


    MfG
    DerPensionist[/list]

  • _FFStart() öffnet 4242.com

    • DerPensionist
    • 14. April 2012 um 08:13

    Hallo Buphx
    Ich finde auf einen richtigen und nützlichen Beitrag mit einer so unnsinnigen und falschen Lösung Verwirrung zu stiften nicht sinnvoll.
    Falsch: Du schreibst:

    Zitat

    einfach ein "%s" weg

    hast aber "%i" entfernt! Ein "%s" wäre, an welcher Position auch immer, sogar falsch!
    Unsinnig:
    Warum soll $iPort entfernt werden?
    Damit später irgendjemand stundenlang suchen kann, warum eine mitgegebene Portnummer (ausser 4242) nicht funktioniert?
    Dieser Tipp von Dir ist ist einfach überflüssig und falsch.

  • FF.au3, 4242-Problem

    • DerPensionist
    • 13. April 2012 um 11:25

    Leider gib es zu diesem Problem einge unsaubere Lösungen.
    Die meiner Meinung nach einzige kompetente Lösung findest im englischsrachigen Forum unter
    http://www.autoitscript.com/forum/topic/95…b/page__st__380
    den Beitrag von: cramaboule
    Andere pfuschen mit diversen Weglassen von Parametern herrum und dafür wird dann ein zusätzlicher Aufruf mit URL notwendig oder wird Portnummer nicht mehr frei wählbar.
    Also einfach zwei zusätzliche Hochkommas in der Funktion "Func __FFStartProcess()" (letzte Funktion im FF-au3)

    Alt:.
    Local $sCommand = StringFormat('"%s" %s %s %s -repl %i %s', $sFFExe, $sNewWin, $sURL, $sNoRemote, $iPort, $sProfile)

    Neu:
    Local $sCommand = StringFormat('"%s" %s %s %s "-repl %i %s"', $sFFExe, $sNewWin, $sURL, $sNoRemote, $iPort, $sProfile)

    Bei FF.au3 VERSION = "0.6.0.1b-7 " wäre in der Zeile: 4281

    mfG
    Laci
    @alxy: Dein Problem ist eben durch Weglassen von $sURL entstanden, lieber Lösung mit korrekte Kodierung verwenden,

  • Beschränkungen für StringRegExp (Stringlänge)?

    • DerPensionist
    • 28. Oktober 2011 um 14:42

    _FFReadText(6) liefert keine Html-Tags, also Suchbegriffe tatsächlich nicht vorhanden.

  • Beschränkungen für StringRegExp (Stringlänge)?

    • DerPensionist
    • 27. Oktober 2011 um 17:21

    Hallo kann jemand mir helfen?
    Ich versuche verzweifelt Teilstring aus einem mit _HTMLReadText erstellten String.
    Da ich mit "StringRegExpGUI.au3" erfolgreich selektieren konnte, verstehe ich nicht warum in meinem Skript nicht Funktioniert.
    Skript ist reduziert auf mein Problem, aber soweit erhalten, dass es ausführbar bleibt.
    Mit Xpath habe mich schon mehre Tage abgestrampelt, aber da gab es jede Menge Probleme, da die Sete ziemlich eigenartig verschachtelt ist.

    Spoiler anzeigen


    <div>
    __<p>
    ____text
    ____<Hn>.....</Hn>
    ____text
    ____<table.......</table>
    ____text
    __</p>
    </div>


    Also der Versuch mit "StringRegExp" aber dieser liefer nichts.

    Hier mein Code:

    C
    #Tidy_Parameters=/pr=1 /tc=4 /uv=3 /reel /sci=9 /gds /gd=1
    ;AutoIT Version: v3.3.6.1
    #include <FF.au3>
    #include <array.au3>
    #include <string.au3>
    
    
    AutoItSetOption("MustDeclareVars", 1)
    AutoItSetOption("wintitlematchmode", 2)
    Global $aFF[10][3]
    Local $sArtNrs = GetArtNr()
    
    
    Global $_FF_COM_TRACE = True ; Trace communication to console (debugging)
    
    
    Dim $URL = "http://www.HSE24.at"
    Dim $sArtNr ; artikelnummer (eingabezeile ?)
    
    
    Dim $rc, $s, $s1, $i1
    
    
    $sArtNr = InputBox("Artike Nummer eingeben", "(sechsstellig 2xxxxx oder 3xxxxx)", "319320" & $sArtNrs)
    $sArtNr = StringSplit($sArtNr & " 999999", " ") ;Wenn mehrere Nummern, als Array, aber auf alle fälle ein dumy
    $sArtNr = $sArtNr[1] ;aber nur 1. nehmen
    $i1 = _ArraySearch($aFF, $sArtNr, 1, UBound($aFF, 1) - 1, 1, 0) ; it im FF schon vorhanden?
    
    
    If $i1 < 1 Then ; Neu Starten
    	If Not _ffStart($URL) Then
        	MsgBox(64, "FF-Start:", "Kann FireFox nicht erfolgreich starten.")
        	Exit
    	EndIf
    	Do
        	$rc = _FFObj(_FFXPath("id('header:searchfied')", "", 9), "value", $sArtNr) ; Eingabe Artikelnummer
        	_FFdisconnect()
        	_FFConnect()
    	Until @error = 0 ; warum es manchmal nicht funktioniert, aber auch so seltener nicht
    	MsgBox(0, "ArtNr:", $rc, 10)
    	$rc = _FFClick(_FFXPath("id('header:search_submit_button')", "", 9)) ; click auf "Suchen"
    	_FFLoadWait()
    Else ; Vorhandene Seite verwenden
    	WinActivate($aFF[$i1][1])
    	WinWaitActive($aFF[$i1][1])
    EndIf
    ; Warum auch immer, aber nur so gibt es neuen Daten
    _FFDisConnect()
    _FFConnect()
    ;=>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  Hier ist das Problem >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    ; Xpath id('productBeschreibung') liefet inklusive Tabelle und keine Sonderzeichen
    ; Xpath id('productBeschreibung')//p geht auch nicht,  2 Leerstrings von XPATH usw.
    ;also einfach StringRegExp aber da stehe ich an, in StringRegExpGUI.au3 funktioniert tadellos
    ;aber im Sript nicht ?
    $s = _FFReadText(6)
    MsgBox(0, "Vor: $s(" & StringLen($s) & ")", $s)
    
    
    $s = StringRegExpReplace($s, "(?s)([\n\r])", " ") ; Cr/Lf auf blank
    MsgBox(0, "<Cr/Lf: $s(" & StringLen($s) & ")", $s)
    $s = StringRegExp($s, "(?s)<p class=.mb-p. id=.tag-kurzbeschreibung.>(.*?)<table", 3)
    If IsArray($s) Then
    	_ArrayDisplay($s, "HTML:")
    	$s = $s[UBound($s1, 1) - 1]
    Else
    	$s = $s1
    EndIf
    MsgBox(0, "HTML:(" & StringLen($s) & ")", $s)
    Exit
    ;=========================================================================================================================
    
    
    Func GetArtNr() ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    	Local $GetArtNr = ""
    	Dim $wFF = WinList("HSE24 -"); alle Fenster mit "HSE" im Titel werden aufgeliste
    	Local $hFF
    	Local $j = 0, $i, $s1, $Nr
    	For $i = 1 To $wFF[0][0]
        	If StringRight($wFF[$i][0], 17) <> "- Mozilla Firefox" Then ContinueLoop
        	$Nr = ""
        	$hFF = $wFF[$i][1]
        	WinActivate($wFF[$i][1])
        	WinWaitActive($wFF[$i][1])
        	_FFdisconnect()
        	_FFConnect()
        	;WinSetState($hFF,"", @SW_SHOW )
        	;msgbox(0,"Activate/Connect:",$wFF[$i][0] & @crlf & "BestellNr:" &@tab& $Nr ,30)
        	$s1 = _FFXPath("id('productNameInH2')", "textContent", 9, 7)
        	If @error = 0 Then
            	$Nr = _StringBetween($s1, "(Bestellnr. ", ")")
            	If IsArray($Nr) Then $Nr = $Nr[0]
            	$j += 1
            	$aFF[$j][0] = $Nr
            	$aFF[$j][1] = $hFF
            	$aFF[$j][2] = $wFF[$i][0]
            	$aFF[0][0] = $j
            	$GetArtNr &= " " & $Nr
        	Else
            	$Nr = ""
        	EndIf
    	Next
    	ReDim $aFF[$j + 1][3]
    	Return $GetArtNr
    EndFunc   ;==>GetArtNr
    Alles anzeigen


    Habe Seiten Quellentext in Datei geschrieben, und mit "StrinRegExpGUI.au3" erfolgreich getestet, als auch aus Seitenquellen-Text kopiert, alles funktionierte wie erwartet.
    In den Script hebe mit Copy/Pate den Pattern kopiert.
    Was habe ich falsch gemacht?

  • Definition String in "StringRegExp()" und "StringMid()" nicht gleich?

    • DerPensionist
    • 8. März 2011 um 12:29

    Habe es richtig verstanden, BinaryMid wäre korrekt, da die Stringfunktionen Binärdaten jeweils verschieden verarbeiten. Zwar liefert StrigMid auch das richtige, aber es ist nicht genau definiert/bekannt welche Funktion wie die binäre Daten verarbeiten, also Finger weg. (Hatte zwar während meiner Suche irgendwo so etwas wie " [\x00-\xff]" als Pattern gesehen . Scheint aber bei der Befüllung des Arrays der String verloren zu gehen.)
    Wie auch immer, danke.

  • Definition String in "StringRegExp()" und "StringMid()" nicht gleich?

    • DerPensionist
    • 8. März 2011 um 10:48

    Sorry, Frage noch immer nicht verstanden. Ich wollte wissen wieso bekomme ich 2 verschiedene Lösungen. Unabhängig vom Beispiel, beziehungsweise wobei ich es entdeckt habe. Ich habe ein grundsätzliches Problem. Wenn ich ein RegExp schreibe was muss ich beachten damit ich tatsächlich das bekomme was ich erwarte. Ich durchsuche nicht immer JPG's. Ich bin verwirrt, wieso hartnäckig am Beispiel festgehalten wird.

  • Definition String in "StringRegExp()" und "StringMid()" nicht gleich?

    • DerPensionist
    • 8. März 2011 um 09:29

    Hab angesehen, hat aber mit meiner Frage absolut nichts zu tun. Ich wollte wissen warum wird bei "StringRegExp" der String mit 0X00 beendet wird. Wie man sieht, bei Wert 300 (=0X012c) wird ja ein Wert zurückgegeben. Bei Werten mit 0x00xx jedoch nicht, da offensichtlich Strings mit 0x00 terminiert werden. Wissen wollte ich ob dies ein Fehler sei oder ich bei "StringRegExp" irgend eineOption oder was auch immer übersah.

  • Definition String in "StringRegExp()" und "StringMid()" nicht gleich?

    • DerPensionist
    • 7. März 2011 um 22:49

    Ich glaube zwar einiges an Hilfe und Tutorials gelesen zu haben aber etwas Grundlegendes dürfte ich übersehen zu haben. Ich hoffe irgendjemand kann mir helfen. Ich möchte eine Menge JPG-Files untersuchen die nicht DPI 72/72 haben. Schien einfach mit Regexp zu lösen sein. Bin dabei auf folgendes Problem gestoßen. Ich wollte Bytes 15-16 und 17-18 enthaltene Werte auslesen.
    (In Byte 14 wird definiert in welchen Maßeinheiten die Werte sind also Byte 14=0x01 steht für "Dots per Inch" wenn =0x02 dann sind die Werte "Dots per cm")
    Hier ein kleines Script zur Veranschaulichung:

    Code
    #include <string.au3>
    ;AutoItSetOption("MustDeclareVars", 1)
    Global $HexDisplay = 1
    #Tidy_Parameters= /tc=0 /pr=1 /uv=3  /rel=0 /reel=1 /gd=1 /scb /nsdp
    Dim $i, $sW[4], $aW[10]
    
    
    $sW[1] = _HexToString("FFD8FFE000104A46494600010101012C012C") ;  DPI  300x300
    $sW[2] = _HexToString("FFD8FFE000104A4649460001010100480048") ;  DPI   72x72
    $sW[3] = _HexToString("FFD8FFE000104A46494600010102001C001C") ;  DPcm  28x28 =28*2,54 ~ 71[,12]
    
    
    ;$aFil = _FileListToArray($dirI, "??????_1_??.jpg", 1)
    ;For $i = 1 To UBound($aFil, 1) - 1 								; [0]=number of elements
    For $i = 1 To UBound($sW, 1) - 1
    	;$sW[$i] = FileRead($dirI & $aFil[$i], 18)
    	$aW = StringRegExp($sW[$i], "(?s).{13}(?s)(.)(?s)(..)(?s)(..)", 3)
    
    
    	MsgBox(64, "Mit RegExp:", _
    			@CRLF & " 14,1 :"	& _Stringtohex($aW[0]) _
    			 & @CRLF & " 15,2 :" & _Stringtohex($aW[1]) _
    			 & @CRLF & " 17,2 :" & _stringtohex($aW[2]) _
    			)
    	;============ so geht es =============================
    	$aW[0] = 	_StringToHex(StringMid($sW[$i], 14, 1))
    	$aW[1] = Dec(_StringToHex(StringMid($sW[$i], 15, 2)))
    	$aW[2] = Dec(_StringToHex(StringMid($sW[$i], 17, 2)))
    	MsgBox(64, "Mit StringMid:", _
    			  @CRLF & " 14,1 :"  & $aW[0] _
    			 & @CRLF & " 15,2 :" & $aW[1] _
    			 & @CRLF & " 17,2 :" & $aW[2] _
    			)
    Next
    Exit
    Alles anzeigen


    Bei StringRegExp gehen Werte kleiner 256 verloren, da dieser String mit 0x00 beginnt, also mein $aW[1] endet offensichtlich vor 0x00, also Länge = 0. Hingegen "StringMid" liefert korrekt 2 Bytes als 0x0048, also 72.
    Handelt es hier um einen Fehler oder sind die Definitionen für String verschieden?

    P.S: Übrigens mein Vorschlag, "Feature Request Ticket#1889" auf https://autoit.de/www.autoitscript.com, welches hier sehr hilfreich gewesen wäre, wurde aber abgelehnt.

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.6.1 2011.05.27)

    • DerPensionist
    • 27. Februar 2011 um 18:05

    In der Hilfedatei ist glaube ich 2 kleine Flüchtigkeitsfehler gefunden zu haben.

    Gemeint ist in der Dokumentation von "Funktion Call".
    "ByReg" anstatt "ByRef"
    und "Call[]" anstatt "Call()".

    Eventuell ein Vorschlag für die Passage:
    "Falls Call() für @error eine Wert festlegt, ist dieser 0xDEAD und der Wert von @extended wird ebenfalls auf 0xBEEF gesetzt. "

    "Falls Call() für @error einen Wert setzt, ist dieser 0xDEAD und ebenfalls der Wert von @extended auf 0xBEEF gesetzt. "

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™