Hi WhiteLion,
das ist echt ein tolles Teil und funktioniert auch super, einzig das Format der Masken stört mich, die Bytest Search / Replace sind ja immer 2stellig, die Masken nur 1 stellig, hier ist es sehr schwer das ganze leicht abzugleichen, ich habe nun die Maske auch 2stellig gemacht, dadurch steht diese genau unter den anderen Masken und man kann wunderschön sehen was ausgelassen und was ersetzt wird
Beispiel:
Code
$Search1 = "0345EC8B55F43B42587402B3018B45F8"
$Replace1 = "0345EC8B55F43B42589090B3008B45F8"
$SearchMask1 = "xxxx??xxxx??xxxx??xxxxxxxxxxxx??"
$ReplaceMask1 = "??????????????????xxxx??xx??????"
dazu habe ich in search_and_replace.au3 den Code geändert
Code
Func _FilePatch($searchstring, $searchmask, $replacestring, $replacemask)
; for germans:
; parameter 1: "$searchstring" in hex z.B: "Eb20FF2100"
; parameter 2: "$searchmask" z.B. "xx?x?" (x = muss gefunden werden, alles andere platzhalter, anzahl muss == sein mit replacestring)
; parameter 3: "$replacestring" in hex z.B: "7433dd2110"
; parameter 4: "$replacemask" z.B. "xxx?x" (x = muss gefunden werden, alles andere platzhalter, anzahl muss == sein mit suchstring)
$CharArray = StringSplit($searchmask, "") ; No delimiter will separate all chars.
$NewSearchMask = ""
If IsEvenNumber($CharArray[0]) Then
For $i = 1 to $CharArray[0] Step 2
$NewSearchMask = $NewSearchMask & $CharArray[$i]
Next
Else
SetError(1)
Return -1
EndIf
$CharArray = StringSplit($replacemask, "") ; No delimiter will separate all chars.
$NewReplaceMask = ""
If IsEvenNumber($CharArray[0]) Then
For $i = 1 to $CharArray[0] Step 2
$NewReplaceMask = $NewReplaceMask & $CharArray[$i]
Next
Else
SetError(1)
Return -1
EndIf
Local $return = DllCall ($OpenSRdll, "int:cdecl", "FilePatch", "str", $searchstring, "str", $replacestring, "str" , $NewReplaceMask, "BOOL", "true", "str", $NewSearchMask)
Alles anzeigen
Gruß
MrOuzo