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

Beiträge von Kleiner

  • @CRLF in einer Variabel?

    • Kleiner
    • 23. Juni 2010 um 23:44

    Okay versteh!

    Dann würde ich es so machen !

    [autoit]

    StringRegExpReplace($String, @CRLF & '|' & @CR & '|' & @LF, '')

    [/autoit]


    LG Kleiner

  • @CRLF in einer Variabel?

    • Kleiner
    • 23. Juni 2010 um 23:31

    Hey!

    Das StringReplace reicht doch aus ???


    [autoit]

    MsgBox(0, 0, 'Hallo' & @CRLF & ' 0x0052698'& @CRLF & ' 0x005285464')
    MsgBox(0, 0, CRLF('Hallo' & @CRLF & ' 0x0052698'& @CRLF & ' 0x005285464'))

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

    Func CRLF($String)
    Return StringReplace($String, @CRLF, '')
    EndFunc ;==>CRLF

    [/autoit]
  • CallTips automatisch in SciTE eintragen

    • Kleiner
    • 20. Juni 2010 um 20:42

    Hi SEuBo!


    Schöne Idee .... auch ohne fehler bei mir! :thumbup:


    LG Kleiner

  • [Beispiel] NeMP3-P (MP3-Player) Version 0.8.4.7

    • Kleiner
    • 27. Mai 2010 um 09:19

    Hi AutoBert!

    Schöner Code , Läuft bei mir auch super!
    Was hälst du davon wenn du noch ein .wav - mp3 wandlung einbaust?? ( erweiterung)
    Hätte da ein Code schni´.... 8)


    LG Kleiner

  • Excel-Tabelle

    • Kleiner
    • 7. Mai 2010 um 20:10

    Ich würde dir empfehlen erst mal sich an die Hilfe zu setzen und sich selber weiter entwickel als nach einfachere Möglichkeiten umzuschauen.
    Zumal wie du selber sagst wenig Erfahrung hast.

    Fang mit was Kleinem an und arbeite dich schritt für Schritt weiter!

    Und zu deiner Frage ja das ist möglich aber dann alles auf Basis von editboxen wobei dann aber keine Tabelle mehr entsteht.

    LG Kleiner

  • FileCopy Problem

    • Kleiner
    • 7. Mai 2010 um 19:50

    Wenn es dir nichts ausmacht pack eine zip mit den Verzeichnissen und datein und Poste!


    LG Kleienr

  • Encrypt-Funktion macht mir Probleme

    • Kleiner
    • 7. Mai 2010 um 19:46
    Zitat

    Die INI liegt doch im @ScriptDir drin, oder stehe ich mir gerade selber auf der Leitung?

    JA :P !

    Bei jeder ausleseoperation solten die FUnktionen schon wissen wo ligt die datei und wie heißt sie.


    LG Kleiner

  • Excel-Tabelle

    • Kleiner
    • 7. Mai 2010 um 19:43

    Soweit mir bekannt ist es nicht möglich!
    Möglichkeit Form($GUI) vergrössern und mit :

    [autoit]

    _GUICtrlListView_SetColumnWidth('', '', $LVSCW_AUTOSIZE)

    [/autoit]


    anpassen!

    LG Kleiner

  • FileCopy Problem

    • Kleiner
    • 7. Mai 2010 um 19:39

    Hi!
    In den momenten wo Fehler 0 kommt hast du mal geschaut das die datei nicht gerade benutzt wird geöffnet o. weiteres!

    Edit: zu langsam ;)
    LG Kleiner

  • Encrypt-Funktion macht mir Probleme

    • Kleiner
    • 7. Mai 2010 um 19:29

    Was ich im groben shen konnte ist das bei

    [autoit]

    $file_1, $inifile_1

    [/autoit]


    Das Verzeichniss fehlt, das FileOpen weiss was und wo geöffnet wird.

    Edit: bei IniReadSection auch !

    LG Kleienr

  • Excel-Tabelle

    • Kleiner
    • 7. Mai 2010 um 19:16

    Habe gerade noch gesehen in zeile 107 u. 108, Brauchst du nicht kannst du löschen.

    Spoiler anzeigen
    [autoit]

    Dim $file = FileOpen($schichtsetz, 2)
    FileClose($file)

    [/autoit]

    LG Kleiner

  • Excel-Tabelle

    • Kleiner
    • 7. Mai 2010 um 19:04

    Hast du auch die zweite Version genommen die ich gePostet habe und eine test.ini im selben Verzeichnis erstellt?

    Edit: Obwol das mit der .ini nicht wichtig ist den datei wird erstellt wenn der Code geschlossen wird.
    LG Kleiner

  • Excel-Tabelle

    • Kleiner
    • 7. Mai 2010 um 18:56

    Hatte ein Fehler in der ersten Version , das zusammen schneiden , da mußt eich noch was anpassen! :D


    LG Kleiner

  • Excel-Tabelle

    • Kleiner
    • 7. Mai 2010 um 18:45

    Hi!

    @Stormrider

    Ein ausschnit aus ein Code von mir, nur mal um zu veranschaulichen was alles benötigt wir, es geht noch kürzer aber diesen code habe ich gerade gefunden.

    Spoiler anzeigen
    [autoit]

    #include <GuiListView.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>

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

    Opt('MustDeclareVars', 1)
    Opt('GUIOnEventMode', 1)

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

    Local $TabelleKopf = 'Bezeichnung|Wert', $schichtsetz = @ScriptDir & '\test.ini', $iEdit = -1
    Local $hLVH, $hListview

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

    Global $GUI5 = GUICreate('Schichtwerte', 163, 345, -1, -1, $WS_SIZEBOX)
    GUISetBkColor(0xFFFACD)
    GUISetOnEvent(-3, '_gui5exit')
    Dim $aEr[3], $in, $in1, $hLis, $hLVH, $hCM, $new, $Be, $Lo
    Dim $ae[3][2] = [['Neu Eintrag', 'LiSaEd'],['Bearbeiten', 'LiSaEd'],['Eintrag Löschen', 'LiSaEd']]
    Dim $OM1 = GUICtrlCreateMenu(' M&enü ')
    For $i = 0 To 2
    $aEr[$i] = GUICtrlCreateMenuItem($ae[$i][0], $OM1)
    GUICtrlSetOnEvent(-1, $ae[$i][1])
    Next
    $hListview = GUICtrlCreateListView($TabelleKopf, 1, 1, 159, 299)
    $hLVH = GUICtrlGetHandle($hListview)
    Dim $hCM = GUICtrlCreateContextMenu($hLis)
    Dim $new = GUICtrlCreateMenuItem('Neuer Eintrag', $hCM)
    GUICtrlSetOnEvent(-3, 'LiSaEd')
    Dim $Be = GUICtrlCreateMenuItem('Bearbeiten', $hCM)
    GUICtrlSetOnEvent(-3, 'LiSaEd')
    Dim $Lo = GUICtrlCreateMenuItem('Löschen', $hCM)
    GUICtrlSetOnEvent(-3, 'LiSaEd')
    GUISetState()

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

    Global $GUI6 = GUICreate('Setzen', 260, 140, -1, -1, $WS_SYSMENU)
    GUISetBkColor(0xFFFACD)
    GUISetOnEvent(-3, '_G6H')
    Dim $aH, $hCreate, $nesa
    $aH = StringSplit($TabelleKopf, '|')
    Dim $aNew[$aH[0]]
    For $i = 1 To $aH[0]
    GUICtrlCreateLabel($aH[$i], 4 + ($i - 1) * 125, 15, 110, 20)
    GUICtrlSetFont(-1, 8, 400, 0, 'Verdana')
    $aNew[$i - 1] = GUICtrlCreateInput('', 2 + ($i - 1) * 125, 30, 120, 20, Default, $WS_EX_STATICEDGE)
    GUICtrlSetFont(-1, 10, 600, 0, 'Verdana')
    Next
    $nesa = GUICtrlCreateButton('Eintrag speichern', 60, 65, 120, 25, $BS_DEFPUSHBUTTON)
    GUICtrlSetOnEvent(-1, 'LiSaEd')
    _GUICtrlListView_RegisterSortCallBack($hLVH)
    GUISetState(@SW_HIDE, $GUI6)

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

    Load()

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

    Func LiSaEd()
    Dim $sItem = ''
    If @GUI_CtrlId = $aEr[0] Or @GUI_CtrlId = $new Then
    $iEdit = -1
    Return GUISetState(@SW_SHOW, $GUI6)
    EndIf
    Switch @GUI_CtrlId
    Case $aEr[0], $new, $nesa
    For $i = 0 To UBound($aNew) - 1
    If $iEdit > -1 Then
    _GUICtrlListView_SetItemText($hLVH, $iEdit, GUICtrlRead($aNew[$i]), $i)
    Else
    $sItem &= GUICtrlRead($aNew[$i]) & '|'
    EndIf
    If GUICtrlRead($aNew[$i]) <> '' Then GUICtrlSetData($aNew[$i], '')
    Next
    If $iEdit > -1 Then
    $iEdit = -1
    _GUICtrlListView_SortItems($hLVH, GUICtrlGetState($hListview))
    _GUICtrlListView_SortItems($hLVH, GUICtrlGetState($hListview))
    Else
    If $sItem <> '|' Then
    GUICtrlSetState($aNew[0], $GUI_FOCUS)
    GUICtrlCreateListViewItem(StringTrimRight($sItem, 1), $hListview)
    _GUICtrlListView_SortItems($hLVH, GUICtrlGetState($hListview))
    _GUICtrlListView_SortItems($hLVH, GUICtrlGetState($hListview))
    EndIf
    EndIf
    Case $aEr[1], $Be
    GUISetState(@SW_SHOW, $GUI6)
    Dim $aItem
    $iEdit = _GUICtrlListView_GetSelectionMark($hLVH)
    If $iEdit > -1 Then
    $aItem = _GUICtrlListView_GetItemTextArray($hLVH, $iEdit)
    For $i = 1 To $aItem[0]
    GUICtrlSetData($aNew[$i - 1], $aItem[$i])
    Next
    EndIf
    Case $aEr[2], $Lo
    If MsgBox(292, 'Einträge löschen', 'Wollen sie die markierten Einträge wirklich löschen?') = 6 Then _GUICtrlListView_DeleteItemsSelected($hLVH)
    EndSwitch
    EndFunc ;==>LiSaEd

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

    Func Load()
    Dim $hFile = IniReadSection($schichtsetz, 'Data')
    _GUICtrlListView_DeleteAllItems($hLVH)
    _GUICtrlListView_BeginUpdate($hLVH)
    For $i = 1 To UBound($hFile) - 1
    ConsoleWrite($hFile[$i][1]& @CRLF)
    GUICtrlCreateListViewItem(String($hFile[$i][1]), $hListview)
    Next
    _GUICtrlListView_EndUpdate($hLVH)
    EndFunc ;==>Load
    Func Save()
    Dim $file = FileOpen($schichtsetz, 2)
    FileClose($file)
    For $i = 0 To _GUICtrlListView_GetItemCount($hLVH) - 1
    IniWrite($schichtsetz, 'Data', '0' & $i + 1, _GUICtrlListView_GetItemTextString($hLVH, $i))
    Next
    EndFunc ;==>Save

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

    Func _gui5exit()
    Save()
    Exit
    EndFunc ;==>_gui5exi

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

    Func _G6H()
    GUISetState(@SW_HIDE, $GUI6)
    _GUICtrlListView_UnRegisterSortCallBack($hLVH)
    EndFunc ;==>_G6H

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

    While Sleep(10)
    WEnd

    [/autoit]

    Edit: Sorry war ein Fehler drin , Ist Behoben ! ;)

    LG KLeiner

  • Blockout 3D Tetris

    • Kleiner
    • 7. Mai 2010 um 12:53

    Hi eukalyptus


    Sehr schöne arbeit.


    LG Kleiner

  • 1D-2DArray Doppelte Elemente finden und Entfernen

    • Kleiner
    • 7. Mai 2010 um 12:41

    Hi!

    AspirinJunkie
    Tatsächlich auf großen Array holt deine Version noch ein wenig raus Klasse :thumbup:

    Habe ein Bug in der Version von gestern gefunden: Behoben u. Doppelt so schnell im 2DArray Vergleich

    Update: Post#1


    LG Kleiner

  • 1D-2DArray Doppelte Elemente finden und Entfernen

    • Kleiner
    • 7. Mai 2010 um 00:03

    Guten Morgen! ;)

    AspirinJunkie
    So bin ich halt :P
    Ich werde dein Func gleich mal testen!


    LG Kleiner

  • 1D-2DArray Doppelte Elemente finden und Entfernen

    • Kleiner
    • 6. Mai 2010 um 23:30

    Hi Leute!

    Erstmal Danke schön für euer Interesse und Ideen!

    BugFix
    An deiner reinen Array such kann man ja nicht mehr viel ändern supper durchdacht nur ist diese Funktion ein wenig zu Langsam!
    Habe aber deine Idee der 2D prüfung übernommen für die _ObjektAr2DDubDel :D

    eukalyptus
    Wow verdamt schnell habe die Funktion _ArrayUnique_ eingebunden für die Func _ObjektAr2DDubDel :D

    Update Post#1 = _ObjektAr2DDubDel
    Verarbeitet 1D u. D2 Array und das sehr schnell.

    LG Kleiner

  • 1D-2DArray Doppelte Elemente finden und Entfernen

    • Kleiner
    • 1. Mai 2010 um 09:56

    Hi Leute!

    Habe mir gedacht das diese Beiden Funktionen vielleicht nützlich für den einen o. anderen diese Func sucht in ein 1D-Array noch Doppelt vorkommende Einträge
    man kann sie wenn man möchte löschen lassen und das angepasste Array ausgeben lassen.

    FindDuplicateDeleteArray:
    Ist entstanden aus der Idee und Umsetzung von AspirinJunkie entstanden wo ich schon mal so eine Funktion geschrieben habe.

    Spoiler anzeigen
    [autoit]


    ; #FUNCTION# ;=============================================================================================
    ;
    ; Name...........: FindDuplicate_DeleteArray
    ; Description ...: Findet Elemente deren Name mehrmals vorkommt
    ; Syntax.........: FindDuplicate_DeleteArray($avArray [, $Rein = 0])
    ; Parameters ....: $avArray - Array1D [ $Rein - Array Doppelte einträge entfernen 0-nein / 1-Ja]
    ; Return values .: Erfolg - 1D-Array mit den Doppelten Elemente o. 1D-Array ohne den Doppelten Elemente
    ; Fehler - Gibt -1 zurück und setzt @error:
    ; |1 - Fehler beim erstellen der Collections
    ; |2 - Kein 1DArray
    ; Author ........: Idee von AspirinJunkie / [ created by Kleiner27 http://www.AutoIT.de ]
    ; Modified.......:
    ; Remarks .......: Benötigt .Net für Collections
    ; Related .......:
    ; Link ..........;
    ; Example .......; No
    ; [ created by Kleiner27 http://www.AutoIT.de ] 01.05.2010
    ; ;=========================================================================================================

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

    Func FindDuplicate_DeleteArray(ByRef $avArray, $Rein = 0)
    Local $iEle = ObjCreate('System.Collections.Queue')
    If @error Then Return SetError(1, 1, -1)
    Local $iDub = ObjCreate('Scripting.Dictionary')
    If @error Then Return SetError(1, 2, -1)
    Local $iRad = ObjCreate('Scripting.Dictionary')
    If @error Then Return SetError(1, 3, -1)
    If (UBound($avArray, 0) <> 1) Then Return SetError(2, 0, '')
    Local $iDir, $iTmp, $iCount = 0
    For $i = 0 To UBound($avArray) - 1
    $iEle.Enqueue($avArray[$i])
    $iDir = $iEle.Dequeue
    If $iDub.Exists($iDir) Then
    If $iRad.Exists($iDir) Then
    $iTmp = $iRad($iDir)
    $iRad.Remove($iDir)
    $iRad.Add($iDir, $iTmp & '[' & $i)
    Else
    $iRad.Add($iDir, '[' & $iDub($iDir) & '[' & $i)
    EndIf
    Else
    $iDub.Add($iDir, $i)
    EndIf
    Next
    Local $R_Array[$iRad.Count], $Tmp_Array
    If ($Rein) Then
    For $i In $iRad.Keys
    $Tmp_Array = StringSplit(StringTrimLeft($iRad($i), 1), '[')
    If IsArray($Tmp_Array) Then
    For $i = 1 To UBound($Tmp_Array) - 2
    $avArray[$Tmp_Array[$i]] = ''
    Next
    EndIf
    Next
    $Tmp_Array = ''
    If IsString($Tmp_Array) Then
    For $_i_ In $avArray
    If ($_i_ > '') Then $Tmp_Array &= '|' & $_i_
    Next
    EndIf
    $Tmp_Array = StringSplit(StringTrimLeft($Tmp_Array, 1), '|')
    If IsArray($Tmp_Array) Then
    For $i = 0 To UBound($Tmp_Array) - 2
    $Tmp_Array[$i] = $Tmp_Array[$i + 1]
    Next
    ReDim $Tmp_Array[UBound($Tmp_Array) - 1]
    Return $Tmp_Array
    EndIf
    EndIf
    For $i In $iRad.Keys
    $R_Array[$iCount] = $i & ' ' & $iRad($i)
    $iCount += 1
    Next
    Return $R_Array
    EndFunc ;==>FindDuplicate_DeleteArray

    [/autoit]

    ArraySortingFindDuplicateDelete:
    Diese Funktion hat mehrere Optionen unter einem Dach
    [Sortieren, Doppelte Einträge finden, gegeben falls Array anpassen (Löschen ) , Start u. Ende Bestimmen]

    Spoiler anzeigen
    [autoit]


    ; #FUNCTION# ;=============================================================================================
    ;
    ; Name...........: ArraySorting_FindDuplicate_Delete
    ; Description ...: Findet Elemente deren Name mehrmals vorkommt
    ; Syntax.........: ArraySorting_FindDuplicate_Delete($avArray[, $Abst [, $Start [, $End [, $Rein [, $Sort ]]]]])
    ;
    ; Parameters ....: $avArray - Array1D
    ; $Abst - Wenn auf 1 gesetzt, sortieren absteigend
    ; $Start - Index des Array beim Start
    ; $End - Index der Array beim Ende
    ; $Rein - Wenn auf 1 gesetzt, Bei der ausgabe alle Doppelte Eldemente Entfernen
    ; $Sort - Wenn auf 1 gesetzt, Nur Sortiert ausgeben in Kombination mit $Abst ist möglich
    ;
    ; Return values .: Erfolg - 1D-Array mit den Doppelten Elemente o. 1D-Array ohne den Doppelten Elemente o.
    ; 1D-Array nur Sortiert wenn 1=aubsteigend
    ;
    ; Fehler - Gibt -1 zurück und setzt @error:
    ; |1 - Wenn keine Array
    ; |2 - Wenn Start größer als Ende
    ; |3 - Wnn kein 1D-Array
    ;
    ; Author ........: Kleiner27
    ; Modified.......:
    ; Remarks .......:
    ; Related .......: _Sort()
    ; Link ..........;
    ; Example .......;
    ;
    ; Integriert u. Modified; _ArrayReverse() u. _ArraySort()-1D
    ;
    ;
    ; [ created by Kleiner27 http://www.AutoIT.de ] 01.05.2010
    ; ;=========================================================================================================

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

    Func ArraySorting_FindDuplicate_Delete(ByRef $avArray, $Abst = 0, $Start = 0, $End = 0, $Rein = 0, $Sort = 0)
    If Not IsArray($avArray) Then Return SetError(1, 0, -1)
    If ($Start > $End) Then Return SetError(1, 2, -1)
    If (UBound($avArray, 0) <> 1) Then Return SetError(1, 3, -1)
    Local $Start_2 = $Start
    Local $Tmp, $Tmp_Array, $iSTelle
    Local $iUB = UBound($avArray) - 1
    Local $iDelim = '|', $Delim = '[', $Leer = ''
    If ($End < 1 Or $End > $iUB) Then $End = $iUB
    _Sort($avArray, $Start, $End)
    If ($Abst) Then
    For $i = $Start_2 To Int(($Start_2 + $iUB - 1) / 2)
    $Tmp = $avArray[$i]
    $avArray[$i] = $avArray[$iUB]
    $avArray[$iUB] = $Tmp
    $iUB -= 1
    Next
    EndIf
    If ($Sort) Then Return $avArray
    For $i = $Start To $End
    $iSTelle = $Leer
    For $e = $i To $End
    If ($avArray[$e] <> $avArray[$i]) Then ExitLoop
    $iSTelle &= $Delim & $e
    Next
    If ($e - $i < 2) Then ContinueLoop
    $Tmp_Array &= $iDelim & $avArray[$i] & ' ' & $iSTelle
    $i += ($e - $i - 1)
    Next
    If ($Rein) Then
    If ($Tmp_Array = $Leer) Then Return $avArray
    $Tmp_Array = StringSplit(StringTrimLeft($Tmp_Array, 1), $Delim)
    If IsArray($Tmp_Array) Then
    For $i = 1 To UBound($Tmp_Array) - 1
    If (StringIsDigit($Tmp_Array[$i]) = 1) Then $avArray[$Tmp_Array[$i]] = $Leer
    Next
    EndIf
    $Tmp_Array = $Leer
    If IsString($Tmp_Array) Then
    For $_i_ In $avArray
    If ($_i_ > $Leer) Then $Tmp_Array &= $iDelim & $_i_
    Next
    EndIf
    EndIf
    If ($Tmp_Array = $Leer) Then Return $avArray
    $Tmp_Array = StringSplit(StringTrimLeft($Tmp_Array, 1), $iDelim)
    If IsArray($Tmp_Array) Then
    For $i = 0 To UBound($Tmp_Array) - 2
    $Tmp_Array[$i] = $Tmp_Array[$i + 1]
    Next
    ReDim $Tmp_Array[UBound($Tmp_Array) - 1]
    Return $Tmp_Array
    EndIf
    EndFunc ;==>ArraySorting_FindDuplicate_Delete

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

    Func _Sort(ByRef $avArray, ByRef $iStart, ByRef $iEnd)
    Local $Tmp, $K = $iEnd, $G = $iStart
    Local $oPru = $avArray[Int(($iStart + $iEnd) / 2)]
    If (($iEnd - $iStart) < 15) Then
    For $i = $iStart + 1 To $iEnd
    $Tmp = $avArray[$i]
    For $e = $i - 1 To $iStart Step -1
    If ($Tmp >= $avArray[$e]) Then ExitLoop
    $avArray[$e + 1] = $avArray[$e]
    Next
    $avArray[$e + 1] = $Tmp
    Next
    Return (0)
    EndIf
    Do
    While ($avArray[$G] < $oPru)
    $G += 1
    WEnd
    While ($avArray[$K] > $oPru)
    $K -= 1
    WEnd
    If ($G <= $K) Then
    $Tmp = $avArray[$G]
    $avArray[$G] = $avArray[$K]
    $avArray[$K] = $Tmp
    $G += 1
    $K -= 1
    EndIf
    Until $G > $K
    _Sort($avArray, $iStart, $K)
    _Sort($avArray, $G, $iEnd)
    EndFunc ;==>_Sort

    [/autoit]

    Diese Funktion ist erst mal auf 1D-Array aufgebaut möchte auf Feedback warten vielleicht hat jemand noch Ideen
    Verbesserungsvorschläge und dann werde ich die Func auf 2d-Array erweitern.

    _ObjektAr2DDubDel:

    Ubdate : Bug Behoben und Doppelt so schnell wie vorher im 2DArray Vergleich.

    Spoiler anzeigen
    [autoit]


    ; #FUNCTION# ;=============================================================================================
    ;
    ; Name...........: _ObjektAr2DDubDel
    ; Description ...: Findet Elemente deren Name mehrmals vorkommt und Löst dies aus ein 1D o. 2D Array
    ; Syntax.........: _ObjektAr2DDubDel($avArray)
    ; Parameters ....: $avArray - Array1D o. Array2D
    ; Return values .: Erfolg - 1D-Array o. Array2D mit den Doppelten Elemente
    ;
    ; Fehler - Gibt -1 zurück und setzt @error:
    ; |1 - Fehler beim erstellen der Collections
    ;
    ; Author ........: Kleiner27 http://www.AutoIT.de
    ; Modified.......:
    ; Remarks .......:
    ; Related .......:
    ; Link ..........;
    ; Example .......; No
    ; [ created by Kleiner27 http://www.AutoIT.de ] 06.05.2010
    ; ;=========================================================================================================

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

    Func _ObjektAr2DDubDel(ByRef $avArray)
    Local $ScripDict = ObjCreate('Scripting.Dictionary')
    If @error Then Return SetError(1, 1, -1)
    Local $iTmp
    Local $TmpArray
    Local $iTmp_Save
    Local $TmpArrayReturn[1][2]
    Local $iEnd = UBound($avArray)
    Local $1D2D = UBound($avArray, 2)
    If @error = 2 Then
    $ScripDict.RemoveAll
    For $For In $avArray
    If Not $ScripDict.Exists($For) Then $ScripDict.Add($For, 0)
    Next
    Return $ScripDict.Keys()
    Else
    For $1D = 0 To $iEnd - 1
    $TmpArray &= '|'
    For $2D = 0 To $1D2D - 1
    $TmpArray &= $avArray[$1D][$2D]
    Next
    Next
    $TmpArray = StringSplit(StringTrimLeft($TmpArray, 1), '|')
    For $i = 1 To UBound($TmpArray) - 1
    $iTmp = $TmpArray[$i]
    If Not $ScripDict.Exists($iTmp) Then
    $ScripDict.Add($iTmp, 0)
    $iTmp_Save &= '|' & $i - 1 & $iTmp
    EndIf
    Next
    $1D = 0
    ReDim $TmpArrayReturn[$iEnd][$1D2D]
    $TmpArray = StringSplit(StringTrimLeft($iTmp_Save, 1), '|')
    For $i = 1 To UBound($TmpArray) - 1
    For $2D = 0 To $1D2D - 1
    $TmpArrayReturn[$1D][$2D] = $avArray[Number($TmpArray[$i])][$2D]
    Next
    $1D += 1
    Next
    ReDim $TmpArrayReturn[$1D][$1D2D]
    Return $TmpArrayReturn
    EndIf
    EndFunc ;==>_ObjektAr2DDubDel

    [/autoit]

    Test Code für _ObjektAr2DDubDel

    Spoiler anzeigen
    [autoit]

    #include 'Array.au3'
    #include '_ObjektAr2DDubDel.au3'

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

    ;$max = 99
    ;$max = 999
    ;$max = 9999
    $max = 99999
    ;$max = 999999
    ;Dim $Zu_Sa[$max]
    Dim $Zu_Sa[$max][15]
    For $i = 0 To $max - 1
    ;$Zu_Sa[$i] = Chr(Random(65, 67, 1)) & Chr(Random(65, 67, 1)) & Chr(Random(65, 67, 1)) & '.' & Chr(Random(65, 67, 1)) & Chr(Random(65, 67, 1)) & Chr(Random(65, 67, 1))
    $Zu_Sa[$i][0] = Chr(Random(65, 67, 1)) & Chr(Random(65, 67, 1)) & Chr(Random(65, 67, 1)) & '.' & Chr(Random(65, 67, 1)) & Chr(Random(65, 67, 1)) & Chr(Random(65, 67, 1))
    $Zu_Sa[$i][1] = $Zu_Sa[$i][0]
    $Zu_Sa[$i][2] = $Zu_Sa[$i][0]
    $Zu_Sa[$i][3] = $Zu_Sa[$i][0]
    $Zu_Sa[$i][4] = $Zu_Sa[$i][0]
    $Zu_Sa[$i][5] = $Zu_Sa[$i][0]
    $Zu_Sa[$i][6] = $Zu_Sa[$i][0]
    $Zu_Sa[$i][7] = $Zu_Sa[$i][0]
    $Zu_Sa[$i][8] = $Zu_Sa[$i][0]
    $Zu_Sa[$i][9] = $Zu_Sa[$i][0]
    $Zu_Sa[$i][10] = $Zu_Sa[$i][0]
    $Zu_Sa[$i][11] = $Zu_Sa[$i][0]
    $Zu_Sa[$i][12] = $Zu_Sa[$i][0]
    $Zu_Sa[$i][13] = $Zu_Sa[$i][0]
    $Zu_Sa[$i][14] = $Zu_Sa[$i][0]
    Next

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

    sleep(2000)
    ConsoleWrite('start' & @CRLF)

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

    Local $iTimer = TimerInit()
    Dim $A = _ObjektAr2DDubDel($Zu_Sa)
    ;_ArraySort($A)
    _ArrayDisplay($A , ' Nach u. Time : _ObjektAr2DDubDel' & Round(TimerDiff($iTimer)))

    [/autoit]

    Viel Spass.


    LG Kleiner

    Dateien

    FindDuplicateDeleteArray.au3 2,76 kB – 273 Downloads ArraySortingFindDuplicateDelete.au3 4,2 kB – 292 Downloads _ObjektAr2DDubDel.au3 2,17 kB – 293 Downloads
  • _FileListToRekursiv Update: 08.07.2011

    • Kleiner
    • 23. April 2010 um 09:25

    Moin!

    Mir komm da erstmal auch keine Ideen mehr!
    Wir haben ja noch den DubellFinder, jetzt werde ich die Func erstmal nach oben stellen! :D

    LG Kleiner

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™