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

  • eTIN: erstellen

    • BugFix
    • 8. August 2016 um 09:50

    Es gibt noch einiges mehr zu ersetzen, gerade bei dir in der Gegend sind doch auch die exotischen Buchstaben möglich :P

    Code
    Ersetzen:
    - "SCH"       = "Y"
    - "ß"         = "SS"
    - "Ä,Æ"       = "AE"
    - "Ö,Œ"       = "OE"
    - "Ü"         = "UE"
    Bei Zeichen, die ein Diakritikum wie Akut, Gravis, Zirkumflex, Tilde, Kroužek, Cedille,
    Trema (außer bei deutschen Umlauten), Schrägstrich oder Hatschek enthalten,
    wird dieses Zeichen durch den Basisbuchstaben ersetzt.
    - "À,Á,Â,Ã,Å" = "A"
    - "Ç"         = "C"
    - "È,É,Ê,Ë"   = "E"
    - "Ì,Í,Î,Ï"   = "I"
    - "Ð"         = "D"
    - "Ñ"         = "N"
    - "Ò,Ó,Ô"     = "O"
    - "Ù,Ú,Û"     = "U"
    - "Ý"         = "Y"
    Alles anzeigen

    EDIT:
    Für die "Sonderbuchstaben" ist noch einiges zu beachten:
    - die nativen String-Funktionen können damit nicht immer korrekt umgehen, da sie diese als Kombination zweier Zeichen sehen (Problem bei StringSplit, StringLen, StringMid)
    - StringUpper() ist nicht anwendbar (gilt ebenso für deutsche Umlaute)

    Ich habe deshalb mal eine Funktion erstellt die das beim Ersetzen berücksichtigt. Einfach mit Name oder Vorname aufrufen (oder auch beides zusammen, wenn keine Namenszusätze oder Bindenamen vorhanden sind):

    EDIT_2:
    Habe nun noch eine kpl. Umsetzung erstellt, inkl. Prüfziffer:

    AutoIt
    $sFullName = 'Thomas Schmidt'
    $sGebDat = '17.11.1959'
    ;~ $sFullName = 'Hans-Peter von Müller zu Oberhausen'
    ;~ $sGebDat = '1.1.1978'
    
    
    
    
    ConsoleWrite( _Get_eTIN($sFullName, $sGebDat) & @CRLF)
    
    
    
    
    
    
    Func _Get_eTIN($_sFullName, $_sGebDat)
    	Local $aRet = _SplitFullName($_sFullName)
    	Local $Name = _ConvertName( _ReplaceInName( $aRet[1] ) )
    	Local $Vname = _ConvertName( _ReplaceInName( $aRet[0] ) )
    	Local $Geb = _ConvertDate( $_sGebDat )
    	Local $sConvert = StringFormat('%s%s%s', $Name, $Vname, $Geb)
    	Local $Check = _GetCheckValue( $sConvert )
    	Return $sConvert & $Check
    EndFunc
    
    
    Func _SplitFullName($_sName)
    	Local Static $a[] = [' von ',' van ',' v. ',' auf ',' dos ',' des ',' del ',' da ',' de ',' do ',' di ',' d ',' la ',' le ',' lo ']
    	Local $iSplitPos, $iPos = StringInStr($_sName, ' zu ')
    	If $iPos <> 0 Then ; 'zu' enthalten
    		$iSplitPos = StringInStr($_sName, ' ', 0, -1, $iPos-1)
    	Else
    		For $i = 0 To UBound($a) -1
    			$iPos = StringInStr($_sName, $a[$i])
    			If $iPos Then ExitLoop
    		Next
    		If $iPos Then
    			$iSplitPos = $iPos
    		Else
    			$iSplitPos = StringInStr($_sName, ' ', 0, -1)
    		EndIf
    	EndIf
    	Local $aRet[] = [StringLeft($_sName, $iSplitPos-1), StringTrimLeft($_sName, $iSplitPos)]
    	Return $aRet  ; [VName,Name (mit evtl. Zusatz voran)]
    EndFunc
    
    
    Func _ReplaceInName($sName)
    	Local Static $aReplace[58][2] = [['SCH','Y'],['ß','SS'],['ä','AE'],['Ä','AE'],['æ','AE'], _
    	['Æ','AE'],['ö','OE'],['Ö','OE'],['œ','OE'],['Œ','OE'],['ü','UE'],['Ü','UE'],['à','A'], _
    	['á','A'],['â','A'],['ã','A'],['å','A'],['À','A'],['Á','A'],['Â','A'],['Ã','A'],['Å','A'], _
    	['ç','C'],['Ç','C'],['è','E'],['é','E'],['ê','E'],['ë','E'],['È','E'],['É','E'],['Ê','E'], _
    	['Ë','E'],['ì','I'],['í','I'],['î','I'],['ï','I'],['Ì','I'],['Í','I'],['Î','I'],['Ï','I'], _
    	['ð','D'],['Ð','D'],['ñ','N'],['Ñ','N'],['ò','O'],['ó','O'],['ô','O'],['Ò','O'],['Ó','O'], _
    	['Ô','O'],['ù','U'],['ú','U'],['û','U'],['Ù','U'],['Ú','U'],['Û','U'],['ý','Y'],['Ý','Y']]
    	$sName = StringUpper($sName)
    	For $i = 0 To UBound($aReplace) -1
    		$sName = StringReplace($sName, $aReplace[$i][0], $aReplace[$i][1])
    	Next
    	Return $sName
    EndFunc
    
    
    Func _ConvertName($sName)
    	Local Static $aDel[] = ['ZU ','VON ','VAN ','V. ','AUF ','DOS ','DES ','DEL ', _
    	'DA ','DE ','DO ','DI ','D ','LA ','LE ','LO ','-',' ']
    	Local $sReturn = ''
    	; Zusätze, Leerzeichen, Bindestriche löschen
    	For $i = 0 To UBound($aDel) -1
    		$sName = StringReplace($sName, $aDel[$i], '')
    	Next
    	; ersten 4 Konsonanten suchen
    	Local $aName = StringSplit($sName, ''), $iCons = 0
    	For $i = 1 To $aName[0]
    		If $iCons = 4 Then ExitLoop
    		If Not StringInStr('AEIOU', $aName[$i]) Then
    			$iCons += 1
    			$sReturn &= $aName[$i]
    		EndIf
    	Next
    	; wenn zu kurz mit Vokalen (vom letzten Vokal beginnend) auffüllen
    	If StringLen($sReturn) < 4 Then
    		For $i = $aName[0] To 1 Step -1
    			If StringInStr('AEIOU', $aName[$i]) Then
    				$sReturn &= $aName[$i]
    				If StringLen($sReturn) = 4 Then ExitLoop
    			EndIf
    		Next
    	EndIf
    	; wenn noch zu kurz mit 'X' auffüllen
    	While StringLen($sReturn) < 4
    		$sReturn &= 'X'
    	WEnd
    	Return $sReturn
    EndFunc
    
    
    Func _ConvertDate($sDate)
    	Local $aDate = StringRegExp($sDate, '(\d{1,2})\.(\d{1,2})\.(\d{4})', 3)
    	Local $sYY = StringRight(String($aDate[2]), 2)
    	Local $sM = Chr(Int($aDate[1])+64)
    	Local $sDD = StringFormat('%02d', $aDate[0])
    	Return StringFormat('%s%s%s', $sYY, $sM, $sDD)
    EndFunc
    
    
    Func _GetCheckValue($sConverted)
    	Local Static $aValue[][3] = [[0,1,'A'],[0,1,'0'],[1,0,'B'],[1,0,'1'],[2,5,'C'],[2,5,'2'], _
    	[3,7,'D'],[3,7,'3'],[4,9,'E'],[4,9,'4'],[5,13,'F'],[5,13,'5'],[6,15,'G'],[6,15,'6'],[7,17,'H'], _
    	[7,17,'7'],[8,19,'I'],[8,19,'8'],[9,21,'J'],[9,21,'9'],[10,2,'K'],[11,4,'L'],[12,18,'M'], _
    	[13,20,'N'],[14,11,'O'],[15,3,'P'],[16,6,'Q'],[17,8,'R'],[18,12,'S'],[19,14,'T'],[20,16,'U'], _
    	[21,10,'V'],[22,22,'W'],[23,23,'X'],[24,24,'Y'],[25,25,'Z']]
    	Local $iSum = 0
    	For $i = 1 To StringLen($sConverted)
    		For $j = 0 To UBound($aValue) -1
    			If $aValue[$j][2] = StringMid($sConverted, $i, 1) Then
    				$iSum += $aValue[$j][Mod($i,2)]
    				ExitLoop
    			EndIf
    		Next
    	Next
    	Return Chr(Mod($iSum,26)+65)
    EndFunc
    Alles anzeigen
  • Aus CVS Datei erste Zeile löschen

    • BugFix
    • 7. August 2016 um 11:35

    Nebenbei: Wenn du crosspostest, ist es üblich auf den anderen Post zu verweisen.

  • Problem mit MouseClick()

    • BugFix
    • 23. Juli 2016 um 19:18

    Lass dir mit dem AutoIt Window Info Tool die Infos zum Fenster geben. Titel reicht oft nicht, weil der bei verschiedenen Instanzen des Fensters identisch ist. Über zusätzlichen Text des Fensters oder besser über CLASS und INSTANCE kannst du das Fenster i.d.R. eindeutig identifizieren und auch über die Win-Funktionen ansprechen.
    Schau dir in der Hilfe unter <Using AutoIt> die Kapitel "Window Titles and Text" mal genauer an.

  • exe an cmd/dos

    • BugFix
    • 12. Juli 2016 um 14:44

    Batch ist für mich fremdes Land, k.A., wie die Daten aufnehmen. Aber wenn die Exe was zurückgeben soll, ist. m.E. erforderlich, dass sie als CUI kompiliert wird.

  • Probleme nach M$ Patchday Juni-2016 [GELÖST - doch nicht]

    • BugFix
    • 11. Juli 2016 um 14:06

    Also der Bezug zu Dropbox hat sich dann doch als Irrweg erwiesen, da die Symptome danach weg waren.

    Da dasselbe Problem wieder auftrat habe ich weiter gesucht und bin auch fündig geworden, indem ich zeitgleich mit dem Versuch das Kontextmenü auf Dateien im Explorer zu öffnen, auf neue Ereignisse in der Ereignisanzeige geschaut habe. Und tada... hier ist der Bösewicht, ein Dienst, der sich nicht starten lässt:

    bluetooth_fail.JPG

    Aber was kann man dagegen tun? Ich habe den Dienst erst mal deaktiviert um die Funktionalität des Kontextmenüs zurück zu haben. Aber ohne den Dienst kann ich natürlich keine BT-Verbindungen herstellen - also: wie repariere ich das? Muss die devmonsrv.exe neu installiert werden?

  • Seltsames Leuchten in den Wolken

    • BugFix
    • 9. Juli 2016 um 21:36

    Mist, kaum probiert man sein neues Stealth-Mobil aus, kommt einer mit superscharfen Augen daher und versaut einem die Freude. :/
    In Zukunft kann ich wohl doch nur noch übers Meer fliegen. Naja, man lernt nie aus. ^^

  • Hilfe bei Array !

    • BugFix
    • 9. Juli 2016 um 10:52
    Zitat von NewProgger

    die Var 1-21 stammen aus abfragen ob Checkboxen gechecked sind oder nicht.

    Für dieses Ergebnis reicht ein einziger Parameter. Du kannst den Checkboxen Werte zuordnen (2-er Potenzen), dadurch ist jeder Wert eineindeutig in einer Gesamtsumme identifizierbar. Hier mal ein Bsp. aus meinen Musterskripten, kannst es dann anpassen:

    AutoIt
    ; Muster Checkbox-Bearbeitung
    ; Ziel: einfache Abfrage, welche CB aktiviert sind
    
    
    #include <GUIConstants.au3>
    Opt('GUIOnEventMode', 1)
    Opt("MustDeclareVars", 1)
    Global $bCheckAll, $bUnCheckAll, $GUI, $i, $str
    Global $arCB[20][2]             ; Array für Handle und Dual-Wert der CB
    For $i = 0 To UBound($arCB) -1
    	$arCB[$i][1] = 2^$i         ; Zuweisung eindeutiger Wert
    Next
    Global $Checked = 0             ; Variable nimmt Status ALLER Checkboxen in einem Wert auf,
                                    ; Startstatus für alle: UNCHECKED
    Global $w = 500, $h = 20*30+40, $l = (@DesktopWidth-$w)/2, $t = (@DesktopHeight-$h)/2
    Global $top = -10
    $GUI = GUICreate('Test Checkbox', $w, $h, $l, $t)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Ende')
    For $i = 0 To UBound($arCB) -1
    	$top += 30
    	$arCB[$i][0] = GUICtrlCreateCheckbox('CheckBox_' & $i+1, 40, $top, 120)
    	GUICtrlSetOnEvent(-1, '_ClickCB')
    Next
    $bCheckAll = GUICtrlCreateButton('Alle markieren', 250, 20, 150, 21)
    GUICtrlSetOnEvent(-1, '_CheckAll')
    $bUnCheckAll = GUICtrlCreateButton('Markierung aufheben', 250, 50, 150, 21)
    GUICtrlSetOnEvent(-1, '_UnCheckAll')
    GUISetState()
    
    
    While 1
    	Sleep(100)
    WEnd
    
    
    Func _Ende()
    	Exit
    EndFunc
    
    
    Func _ClickCB()
    	For $i = 0 To UBound($arCB) -1
    		If $arCB[$i][0] = @GUI_CtrlId Then
    			$Checked = BitXOR($Checked, $arCB[$i][1])
    			_ReadCB()
    			ExitLoop
    		EndIf
    	Next
    EndFunc
    
    
    Func _CheckAll()
    	For $i = 0 To UBound($arCB) -1
    		If Not BitAND($Checked, $arCB[$i][1]) Then
    ;~ 			GUICtrlSetState($arCB[$i][0], $GUI_CHECKED)
    			GUICtrlSetState($arCB[$i][0], BitOR($GUI_CHECKED, $GUI_DISABLE)) ; markieren und disablen
    			$Checked = BitXOR($Checked, $arCB[$i][1])
    		EndIf
    	Next
    	_ReadCB()
    EndFunc
    
    
    Func _UnCheckAll()
    	For $i = 0 To UBound($arCB) -1
    		If BitAND($Checked, $arCB[$i][1]) Then
    ;~ 			GUICtrlSetState($arCB[$i][0], $GUI_UNCHECKED)
    			GUICtrlSetState($arCB[$i][0], BitOR($GUI_UNCHECKED, $GUI_ENABLE)) ; Markierung aufheben und enablen
    			$Checked = BitXOR($Checked, $arCB[$i][1])
    		EndIf
    	Next
    	_ReadCB()
    EndFunc
    
    
    Func _ReadCB() ; Fkt. dient nur zur Ausgabe, welche CB markiert sind
    	Local $str = 'Markiert:  '
    	For $i = 0 To UBound($arCB) -1
    		If BitAND($Checked, $arCB[$i][1]) Then $str &= $i+1 & ', '
    	Next
    	WinSetTitle($GUI, '', StringTrimRight($str, 2))
    EndFunc
    Alles anzeigen
  • ZIP - Packen / Entpacken mit Windows eigener Funktion

    • BugFix
    • 1. Juli 2016 um 22:41
    Zitat von Schumi

    Kann man beim Entpacken die Dateinamen (also die entpackt werden sollen) auslesen.

    Können kann man sicher :D.
    Das ZIP-Dateiformat hat einen strukturierten Aufbau und enthält ein "Inhaltsverzeichnis".
    Zitat:
    "Nach der letzten Datei steht ein weiteres Kennzeichen, das aus den vier Byte "PK12" als CentralFileHeaderSign besteht.
    Dieses leitet den Abschnitt der zentralen Dateikennungen ein. Hier stehen in dichter Folge im Sinne eines Directory noch einmal alle im Archiv enthaltenen Dateinamen nebst beschreibenden Datenangaben."
    Die ZIP binär einlesen, den Einstiegspunkt für die Auflistung suchen und auslesen.
    Kannst dich gerne dran versuchen, ich habe vorerst nicht die Muße dazu.

  • Probleme nach M$ Patchday Juni-2016 [GELÖST - doch nicht]

    • BugFix
    • 28. Juni 2016 um 17:06

    Habe die Ursache gefunden:
    Im Kontextmenü gab es einen Eintrag für die Dropbox unter Nutzung der DropboxExt64.34.dll. Diese wurde in etwa zur gleichen Zeit aktualisiert, als ich die M$ Updates durchgeführt habe. Als ich danach das Problem bemerkte, kam mir als Ursache der Patchday in den Sinn.
    Ausnahmsweise ist M$ aber hieran nicht schuld. Ich habe den Eintrag für Dropbox deaktiviert und nun ist wieder alles paletti. :thumbup:

  • Listbox und Combobox - wie Zeilenumbruch? - mehrzeilige Anzeige?

    • BugFix
    • 27. Juni 2016 um 15:44

    Daten werden mit GUICtrlSetData eingetragen und dann funktioniert es genau, wie vorab beschrieben, mit dem DataSeparator (Standard ist die Pipe).

  • Probleme nach M$ Patchday Juni-2016 [GELÖST - doch nicht]

    • BugFix
    • 27. Juni 2016 um 15:29

    Das dürfte bei mir dann nicht zutreffen - habe nur SSD.

  • Probleme nach M$ Patchday Juni-2016 [GELÖST - doch nicht]

    • BugFix
    • 27. Juni 2016 um 12:14

    Neue Erkenntnis: Es ist nur das Kontextmenü für Dateien betroffen.
    Bei Ordnern erscheint es auch sofort.

    Ich werde mal nach und nach alle Einträge deaktivieren - einer muss ja "Schuld" haben ;)

  • Probleme nach M$ Patchday Juni-2016 [GELÖST - doch nicht]

    • BugFix
    • 27. Juni 2016 um 10:59

    Hi,
    seit den letzten Updates habe ich folgendes Problem:
    - Windows Explorer --> bei Rechtsklick dauert es bis zu 20 s bevor das Kontextmenü erscheint

    Mein System: Win7 pro x64

    Hat jemand auch dieses Problem oder bin ich der einzig "Glückliche"? ?(

  • Sortierung, wie im Explorer-Tree - wie gehts?

    • BugFix
    • 27. Juni 2016 um 09:19
    Zitat von Bitnugger

    und gibt ein 2D-Array zurück...

    Oops :rolleyes: - da war ich einen Moment verpeilt. Auch wenn ArrayDisplay ein $a[n][1] ebenso darstellt wie ein $a[n] ist es halt doch nicht dasselbe.
    Habe es im Code korrigiert.

  • Sortierung, wie im Explorer-Tree - wie gehts?

    • BugFix
    • 26. Juni 2016 um 21:52

    Ich habe mir jetzt eine eigene Routine erstellt.
    Grundprinzip:
    - wenn am Itemanfang Zahlen sind (optional auch in Klammern, also "(1) Bla" oder "[2] Blub") werden diese mit Vornullen versehen
    - dazu werden die Einträge in einem temporären Array gespeichert
    - der Index im Original-Array wird ebenfalls im Temp-Array gespeichert
    - das Temparray wird nun anhand des mit Vornullen ergänzten und dadurch als String sortierbarem Array, in der Spalte Name sortiert
    - die Original-Item werden jetzt aus dem Originalarray an die umgeordneten zugehörigen Indexpositionen geschrieben
    - das Originalarray wird mit dem sortierten ersetzt

    AutoIt
    #include <Array.au3>
    
    
    Global $_gSNUM
    Local $a[] = ['(1) Bla','(10) Blub','(11) Ccc','(12) Ddd','(2) Haa','(3) Hoo','(4) Muh','(5) Wuff','(6) Brr','(7) Klirr','(8) Knarr','(9) Uff','Hallo','Welt','AutoIt']
    ;~ Local $a[] = ['1 Bla','10 Blub','11 Ccc','12 Ddd','2 Haa','3 Hoo','4 Muh','5 Wuff','6 Brr','7 Klirr','8 Knarr','9 Uff','Hallo','Welt','AutoIt']
    _ArrayDisplay($a)
    
    
    _ArraySortLikeExplorer($a)
    _ArrayDisplay($a)
    
    
    
    
    Func _ArraySortLikeExplorer(ByRef $_aArray)
    	Local $aNameIndexed[UBound($_aArray)][4]
    	Local $iDigitMax = 0, $sZero = '0000000000'
    	For $i = 0 To UBound($aNameIndexed) -1
    		$aNameIndexed[$i][0] = $i                                              ; Index im Original-Array
    		$aNameIndexed[$i][1] = $_aArray[$i]                                    ; Originalname
    		$aNameIndexed[$i][2] = _GetStrDigits($_aArray[$i])                     ; String mit Zahl (Umfassung der Zahl durch z.B. Klammern mgl.), wenn vorhanden
    		$aNameIndexed[$i][3] = _GetCountDigits($aNameIndexed[$i][2])           ; Länge vorangestellter Zahl (Umfassung der Zahl durch z.B. Klammern mgl.)
    		If $aNameIndexed[$i][3] > $iDigitMax Then $iDigitMax = $aNameIndexed[$i][3]
    	Next
    	For $i = 0 To UBound($aNameIndexed) -1                                     ; Zahlen mit Vornullen versehen in Item-Namen, somit sortierbar
    		If $aNameIndexed[$i][3] = 0 Then ContinueLoop
    		$_gSNUM = StringLeft($sZero, ($iDigitMax-$aNameIndexed[$i][3]))
    		_StringRegExpReplace_Callback($aNameIndexed[$i][1], '^([\D]?)(\d+)([\D]?)', '_MyRegExCallback("$1", "$2", "$3")')
    	Next
    	_ArraySort($aNameIndexed, 0, 0, 0, 1)                                      ; Sortieren nach geändertem Item-Namen
    	; Spalte 0 enthält jetzt die Indizes in der erforderlichen Reihenfolge der Sortierung
    	; Jetzt in neuem Array Originalnamen in der neuen Reihenfolge eintragen
    	Local $aTmp[UBound($_aArray)]
    	For $i = 0 To UBound($aTmp) -1
    		$aTmp[$i] = $_aArray[$aNameIndexed[$i][0]]
    	Next
    	$_aArray = $aTmp
    EndFunc
    
    
    Func _MyRegExCallback($_s1, $_s2, $_s3)
    	Return $_s1 & $_gSNUM & $_s2 & $_s3
    EndFunc
    
    
    Func _GetStrDigits($_sItem)
    	Local $sDigit = ''
    	Local $aRet = StringRegExp($_sItem, '^([\D]?\d+[\D]?)', 1)
    	If IsArray($aRet) Then $sDigit = $aRet[0]
    	Return $sDigit
    EndFunc
    
    
    Func _GetCountDigits($_sDigit)
    	StringRegExpReplace($_sDigit, '(\d)', '$1')
    	Return @extended
    EndFunc
    
    
    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _StringRegExpReplace_Callback
    ; Description ...: Replaces ByRef all matches in a string by manipulation of the matches in a callback function
    ; Parameters ....: $sString    String to manipulate
    ; ...............: $sPattern   RegExp pattern for the match
    ; ...............: $sCallback  Callback function as string, i.e. "MyCallback('$1')" -- '$1' represents the match
    ; .....optional..: $sBefore    String to insert before the manipulated match
    ; .....optional..: $sAfter     String to insert after the manipulated match
    ; Return values .: Success     1
    ; ...............: Failure     0  set error = 1
    ; Author ........: Taz77
    ; ===============================================================================================================================
    Func _StringRegExpReplace_Callback(ByRef $sString, $sPattern, $sCallback, $sBefore = '', $sAfter = '')
    	ConsoleWrite("'" & StringRegExpReplace(StringReplace($sString, "'", Chr(26), 0, 2), $sPattern, $sBefore & "'&" & $sCallback & "&'" & $sAfter) & "'" & @CRLF)
    	$sString = Execute("'" & StringRegExpReplace(StringReplace($sString, "'", Chr(26), 0, 2), $sPattern, $sBefore & "'&" & $sCallback & "&'" & $sAfter) & "'")
    	If @error Then
    		ConsoleWrite('_StringRegExpReplace_Callback error! Pattern: "' & $sPattern & '", Callback: "' & $sCallback & '"' & @LF)
    		Return SetError(1,0,0)
    	EndIf
    	$sString = StringReplace($sString, Chr(26), "'", 0, 2)
    	Return 1
    EndFunc  ;==>_StringRegExpReplace_Callback
    Alles anzeigen

    EDIT:
    Das berücksichtigt jetzt nicht, wenn die Zahlen nicht am Stringanfang auftauchen. Da dann meist die Sortierung etwas untergeordnet ist, sehe ich das aber als unproblematisch. Für meine Zwecke reicht die Prüfung auf Zahlen am Anfang aus.

    EDIT_2:
    Sehe jetzt erst Oscars Beitrag, mal diese UDF in Augenschein nehmen.

  • bestimmte listview einträge löschen

    • BugFix
    • 26. Juni 2016 um 13:22
    Zitat von Kanashius

    Damit eine for Schleife basteln, die von 0 bis itemcount geht

    Damit sägst du den Ast ab, auf dem du sitzt :rolleyes:
    Du mußt das Listview vom letzten Eintrag zum ersten iterieren (Itemcount-1 to 0 step -1). Anderenfalls stimmen die Indexwerte nach Löschen eines Eintrages nicht mehr.

  • Sortierung, wie im Explorer-Tree - wie gehts?

    • BugFix
    • 26. Juni 2016 um 13:17

    Hi,

    ich lese die Ordner eines Pfades aus um sie in einem Tree darzustellen. Schaue ich mir den Ordner im Explorer an, werden auch Zahlen in Strings nach den Zahlen sortiert:

    Wenn ich mit _FileListToArrayRec($sPath, "*", $FLTAR_FOLDERS, $FLTAR_NORECUR, $FLTAR_SORT) einlese ist es String-sortiert:

    Das gleich ist in der Konsole mit TREE der Fall:
    tree_cmd.png

    Wie kann ich die Sortierung, wie im Explorer erreichen?

  • GUI wie Programmfenster ausführen

    • BugFix
    • 23. Juni 2016 um 13:05
    Zitat von Mistil

    Was mich jetzt noch interessieren würde ist, wozu dient das Initialisieren?

    Dabei wird die GDI+ Dll geöffnet und das 'Handle' in einer Globalen Variablen hinterlegt. Auf diese Variable greifen alle Funktionen der UDF zu um nicht jedes mal einen neuen Dll-Call zu machen.

  • ShellExecute mit Parametern

    • BugFix
    • 23. Juni 2016 um 10:09

    Warum packst du Datum und Uhrzeit zusätzlich in Gänsefüßchen. die sollen doch Bestandteil des Dateinamens sein.
    Am Besten immer die Strings in einzelnen Variablen erstellen und dann auch überprüfen, was bei rauskommt.

    AutoIt
    #include <date.au3>
    
    
    Local $_date = StringReplace(_NowDate(),".", "_")
    Local $_time = StringReplace(_NowTime(),":", "_")
    Local $sCmd = 'C:\Program Files (x86)\Firebird\Firebird_2_5\bin\nbackup.exe'
    Local $sParam = '-U sysdba -P masterkey -B 0 "C:\Datenbank\Database.FDB" "D:\Backups\Firebird\Database_' & $_date & '_' & $_time & '.nbk"'
    ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & "   var: $sParam --> " & $sParam & @LF)
    ; -U sysdba -P masterkey -B 0 "C:\Datenbank\Database.FDB" "D:\Backups\Firebird\Database_23_06_2016_10_06_37.nbk"
    ShellExecute($sCmd, $sParam)
  • 2 Dienste, die gegenseitig voneinander abhängig sind - wie Abhängigkeit auflösen? GELÖST

    • BugFix
    • 13. Juni 2016 um 17:06

    Heureka, gelöst!

    1. Der Telefondienst ist nur zufällig in den Fokus geraten und hatte mit dem Problem nichts zu tun.
    2. chip's letzter Ansatz brachte den Weg zur Lösung des eigentlichen Problems welches war:
    3. Ein findiger Programmierer hatte eine Installationsroutine mit der netten Idee der Installation eines System-Dienstes ohne zu prüfen ob eben dieser Dienstaufruf nicht bereits existiert. Um die Sache noch komplizierter zu machen erhielt der Dienst einen nichtssagenden Displaynamen und die Beschreibung des Spoolers. Somit hatte ich diesen Dienst immer überlesen.
    Und die Aufgabe dieses Dienstes? - Exakt der Aufruf vom Dienst lanman.
    Startete nun der Dienst und der Aufruf des echten lanman erfolgte vor dem abgeschlossenen Start, so hingen beide in der Luft. Es passierte aber auch, dass der Dienst gestartet war und dann erst der zweite Aufruf kam. Dann gab es kein Problem und alles war gut.
    Nachdem ich fast alle Dienste mit Aufrufparametern verglichen hatte und die Dopplung fand, war es dann nur noch ein Start im abgesicherten Modus, Deaktivieren des original lanman (auf den Systemdienst hatte ich keinen Zugriff) und da nun nur noch ein Aufruf für den Dienst erfolgt, läuft es.
    Die anderen Probleme waren nur durch Abhängigkeiten entstanden und sind verflogen :D

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™