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

  • TreeView und editierbare Items.

    • BugFix
    • 1. März 2010 um 10:17

    Die TreeView-Funktionen sind m.M. noch nicht ausgereift. Das Übernehmen von Änderungen funktioniert ja auch mit dem Original Hilfebsp. nicht wirklich. Egal was ich reinschreibe, es wird nur das erste Zeichen übernommen. ;)
    Ist zwar etwas aufwändiger, aber sicher: Schreibe dein eigenes Edit-Tool, so wie ich es für ListView-Editierung gemacht hatte.

  • Locked file deleter

    • BugFix
    • 28. Februar 2010 um 20:20

    Ich mag aber nicht bei Neustart löschen, da ich mein Laptop nie (oder fast nie) neustarte sondern nur in Hibernate schicke. Also lösche ich gelockte Dateien lieber sofort mit Unlocker von Softonic. ;)

  • Symbiose: Array + Structure = StrucList ; Zugriff kpl. assoziativ

    • BugFix
    • 28. Februar 2010 um 18:36

    Neue Version (Funktionen hinzugefügt), s. Post 1.

  • 2D Array Problem

    • BugFix
    • 28. Februar 2010 um 00:06
    Zitat von Reaker

    das ist der Fehler der kommt


    Ach ja, hatte ich übersehen:
    Statt

    [autoit]

    To UBound($aResult)

    [/autoit]

    musst du

    [autoit]

    To UBound($aResult) -1

    [/autoit]

    verwenden.

  • 2D Array Problem

    • BugFix
    • 27. Februar 2010 um 23:57
    Zitat von Reaker

    das problem ist nun wenn ein SubArray leer ist


    SubArray bedeutet Array im Array - und du prüfst ja auch mit IsArray ==> du hast aber nur ein 2D-Array mit normalen Einträgen.

    Also nur auf Inhalt prüfen:

    [autoit]

    ; _ArrayDisplay($aResult)
    For $i = 1 To UBound($aResult)
    If $aResult[$i][4] <> '' Then _ArrayAdd($ARRAY, $aResult[$i][4])
    Next
    If UBound($ARRAY) - 1 <> 0 Then
    For $i = 1 To UBound($ARRAY) - 1
    _GUICtrlListView_AddItem($ListView1, $ARRAY[$i])
    Next
    EndIf

    [/autoit]
  • 2D Array Problem

    • BugFix
    • 27. Februar 2010 um 23:45

    Dein Code ist nicht wirklich aussagefähig. Du sprichst von Array im Array - ich hab keine Ahnung woher das kommen soll. Insofern war mein Hinweis auch eher rudimentär.

  • 2D Array Problem

    • BugFix
    • 27. Februar 2010 um 23:35
    [autoit]

    If IsArray($aResult[$i][4]) <> '' Then

    [/autoit]

    Du willst prüfen ob im Array ein Array ist. Diese Prüfung gibt aber nur 1 oder 0 zurück. Deine Prüfung auf "<> ''" ist also falsch. Verwende:

    [autoit]

    If Not IsArray($aResult[$i][4]) Then

    [/autoit]
  • FileWriteFromArray() mit Arrays in Arrays

    • BugFix
    • 27. Februar 2010 um 21:47

    Hier mal, wie es bei einem 3D und 4D (für 4D war ich zu faul :D) aussehen könnte:

    Edit: Konnte meine Faulheit überwinden :rofl:

    Spoiler anzeigen
    [autoit]

    ; === Konfigurationsdatei Bsp.
    ; === Anzahl der Zeilen ist UBound für Dimension 1
    ; === durch Pipe "|" getrennte Blöcke ergeben Dimension 2
    ; === kommagetrennt Blöcke innerhalb der Pipe-getrennten Blöcke ergeben Dimension 3
    Local $file = _
    'Sub1_1_1,Sub1_1_2,Sub1_1_3|Sub1_2_1,Sub1_2_2,Sub1_2_3|Sub1_3_1,Sub1_3_2,Sub1_3_3' & @CRLF & _
    'Sub2_1_1,Sub2_1_2,Sub2_1_3|Sub2_2_1,Sub2_2_2,Sub2_2_3|Sub2_3_1,Sub2_3_2,Sub2_3_3' & @CRLF & _
    'Sub3_1_1,Sub3_1_2,Sub3_1_3|Sub3_2_1,Sub3_2_2,Sub3_2_3|Sub3_3_1,Sub3_3_2,Sub3_3_3' & @CRLF & _
    'Sub4_1_1,Sub4_1_2,Sub4_1_3|Sub4_2_1,Sub4_2_2,Sub4_2_3|Sub4_3_1,Sub4_3_2,Sub4_3_3' & @CRLF & _
    'Sub5_1_1,Sub5_1_2,Sub5_1_3|Sub5_2_1,Sub5_2_2,Sub5_2_3|Sub5_3_1,Sub5_3_2,Sub5_3_3' & @CRLF & _
    'Sub6_1_1,Sub6_1_2,Sub6_1_3|Sub6_2_1,Sub6_2_2,Sub6_2_3|Sub6_3_1,Sub6_3_2,Sub6_3_3' & @CRLF

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

    ; === Anzahl der Zeilen ist UBound für Dimension 1
    ; === durch Pipe "|" getrennte Blöcke ergeben Produkt aus: Ubound Dimension 2 * Ubound Dimension 3
    ; === kommagetrennt Blöcke innerhalb der Pipe-getrennten Blöcke ergeben Dimension 4
    Local $file2 = _
    'Sub1_1_1_1,Sub1_1_1_2|Sub1_1_2_1,Sub1_1_2_2|Sub1_1_3_1,Sub1_1_3_2|Sub1_2_1_1,Sub1_2_1_2|Sub1_2_2_1,Sub1_2_2_2|Sub1_2_3_1,Sub1_2_3_2|Sub1_3_1_1,Sub1_3_1_2|Sub1_3_2_1,Sub1_3_2_2|Sub1_3_3_1,Sub1_3_3_2' & @CRLF & _
    'Sub2_1_1_1,Sub2_1_1_2|Sub2_1_2_1,Sub2_1_2_2|Sub2_1_3_1,Sub2_1_3_2|Sub2_2_1_1,Sub2_2_1_2|Sub2_2_2_1,Sub2_2_2_2|Sub2_2_3_1,Sub2_2_3_2|Sub2_3_1_1,Sub2_3_1_2|Sub2_3_2_1,Sub2_3_2_2|Sub2_3_3_1,Sub2_3_3_2' & @CRLF & _
    'Sub3_1_1_1,Sub3_1_1_2|Sub3_1_2_1,Sub3_1_2_2|Sub3_1_3_1,Sub3_1_3_2|Sub3_2_1_1,Sub3_2_1_2|Sub3_2_2_1,Sub3_2_2_2|Sub3_2_3_1,Sub3_2_3_2|Sub3_3_1_1,Sub3_3_1_2|Sub3_3_2_1,Sub3_3_2_2|Sub3_3_3_1,Sub3_3_3_2' & @CRLF & _
    'Sub4_1_1_1,Sub4_1_1_2|Sub4_1_2_1,Sub4_1_2_2|Sub4_1_3_1,Sub4_1_3_2|Sub4_2_1_1,Sub4_2_1_2|Sub4_2_2_1,Sub4_2_2_2|Sub4_2_3_1,Sub4_2_3_2|Sub4_3_1_1,Sub4_3_1_2|Sub4_3_2_1,Sub4_3_2_2|Sub4_3_3_1,Sub4_3_3_2' & @CRLF & _
    'Sub5_1_1_1,Sub5_1_1_2|Sub5_1_2_1,Sub5_1_2_2|Sub5_1_3_1,Sub5_1_3_2|Sub5_2_1_1,Sub5_2_1_2|Sub5_2_2_1,Sub5_2_2_2|Sub5_2_3_1,Sub5_2_3_2|Sub5_3_1_1,Sub5_3_1_2|Sub5_3_2_1,Sub5_3_2_2|Sub5_3_3_1,Sub5_3_3_2' & @CRLF & _
    'Sub6_1_1_1,Sub6_1_1_2|Sub6_1_2_1,Sub6_1_2_2|Sub6_1_3_1,Sub6_1_3_2|Sub6_2_1_1,Sub6_2_1_2|Sub6_2_2_1,Sub6_2_2_2|Sub6_2_3_1,Sub6_2_3_2|Sub6_3_1_1,Sub6_3_1_2|Sub6_3_2_1,Sub6_3_2_2|Sub6_3_3_1,Sub6_3_3_2' & @CRLF

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

    ; === Array erstellen aus Datei
    Local $aD1 = StringSplit($file, @CRLF, 1), $aLine, $aData
    Local $array3D[$aD1[0]][3][3]

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

    For $i = 1 To $aD1[0] -1
    $aLine = StringSplit($aD1[$i], '|')
    For $j = 1 To 3
    $aData = StringSplit($aLine[$j], ',')
    For $k = 1 To 3
    $array3D[$i-1][$j-1][$k-1] = $aData[$k]
    ConsoleWrite($i-1 & '-' & $j-1 & '-' & $k-1 & ': ' & $aData[$k] & @CRLF)
    Next
    Next
    Next

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

    ConsoleWrite(@CRLF & 'Jetzt 4D-Array' & @CRLF & @CRLF)
    $aD1 = StringSplit($file2, @CRLF, 1)
    Local $array4D[$aD1[0]][3][3][2], $iD2, $iD3

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

    For $i = 1 To $aD1[0] -1
    $aLine = StringSplit($aD1[$i], '|')
    $iD2 = 0
    $iD3 = 0
    For $j = 1 To 9 ; Ubound_D2 * UBound_D3
    $aData = StringSplit($aLine[$j], ',')
    For $k = 1 To 2
    $array4D[$i-1][$iD2][$iD3][$k-1] = $aData[$k]
    ConsoleWrite($i-1 & '-' & $iD2 & '-' & $iD3 & '-' & $k-1 & ': ' & $aData[$k] & @CRLF)
    Next
    $iD2 += 1 ; === die Indexe verhindern zu sehr verschachtelte Schleifen, 3-fach For reicht ;)
    If $iD2 = 3 Then
    $iD2 = 0
    $iD3 += 1
    If $iD3 = 3 Then $iD3 = 0
    EndIf
    Next
    Next

    [/autoit]


    In die Datei zu Schreiben ist dann einfach nur die Umkehrung des obigen Codes.

  • FileWriteFromArray() mit Arrays in Arrays

    • BugFix
    • 27. Februar 2010 um 20:28

    Deine Konstruktion ist etwas unglücklich. Arbeite doch lieber gleich mit 3 oder 4 Dimensionen. Dann hat man eine feste Zuordnung.
    Das von dir beschriebene Array ließe sich so schreiben (ungetestet):

    Spoiler anzeigen
    [autoit]

    Local $aInfo['Anzahl der Funktionen'][11]
    Local $path = 'Dateipfad'
    Local $tmp, $sWrite = ''
    Local $Delim = ';' ; dein gewünschtes Trennzeichen

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

    For $i = 0 To UBound($aInfo) -1
    For $j = 0 To UBound($aInfo, 2) -1
    $tmp = $aInfo[$i][$j]
    $sTmp = ''
    If IsArray($tmp) Then
    Local $2nd = UBound($tmp, 2)
    If @error Then $2nd = 0
    For $k = 0 To UBound($tmp) -1
    If $2nd Then
    For $l = 0 To $2nd -1
    $sTmp &= $tmp[$k][$l] & $Delim
    Next
    Else
    $sTmp &= $tmp[$k] & $Delim
    EndIf
    $sTmp &= @CRLF
    Next
    $sWrite &= $sTmp & $Delim & @CRLF
    Else
    $sWrite &= $tmp & $Delim
    EndIf
    Next
    $sWrite &= @CRLF
    Next

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

    FileWrite($path, $sWrite)

    [/autoit]

    Aber das Wiedereinlesen würde sicher eine Katastrophe :D .
    Arbeite doch von Anbeginn mit einer SQLite-DB.

  • plus oder minus als Variable?

    • BugFix
    • 27. Februar 2010 um 17:09

    Alternativ (würde ich bevorzugen):

    [autoit]

    Local $a = 4, $b = 3

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

    ConsoleWrite(' a + b = ' & _Calc($a, $b, 1) & @CRLF)

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

    ConsoleWrite(' a - b = ' & _Calc($a, $b) & @CRLF)

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

    Func _Calc($Val1, $Val2, $Operand=-1)
    Return $Val1 + $Val2 * $Operand
    EndFunc

    [/autoit]
  • Suche Unterstützung für LK Scripts

    • BugFix
    • 27. Februar 2010 um 10:48
    Zitat von lukiono

    - Freiwillige Tätigkeit


    gepostet in Forum: ../AutoIt 3/Jobbörse

    Was ist an dem Forumsnamen so mißverständlich? Hier wird gehandelt: Suche.. Biete.

    [verschiebe nach: ..\Projekte]

  • Bußgeldrechner

    • BugFix
    • 26. Februar 2010 um 21:23

    Hab jetzt noch nicht nachgeschaut - hast du auch die strafverschärfende Tatbestände berücksichtigt?( z.B. 2-mal innerhalb von 12 Monaten außerorts >21 km/h zu schnell ==> Fahrverbot 4 Wochen)
    Gibt da noch einiges mehr.
    Nach 8 Punkten gibts auch noch ein kostenpflichtiges Info-Schreiben (Sie haben jetzt 8 Punkte. Mit dem Besuch von kostenpflichtigen Seminaren können Sie einmalig Punkte abbauen....)

  • _ArraySort sortiert "komisch"

    • BugFix
    • 24. Februar 2010 um 22:45

    Mehrstufig sortieren kannst du über einen Umweg mit SQL: https://autoit.de/index.php?page…46336#post46336

  • Stringabfrage ob es sich ausschliesslich zum Zahlen handelt

    • BugFix
    • 23. Februar 2010 um 20:13

    so:

    [autoit]

    $muster1 = '-abc2456gjs-'
    $muster2 = '-12345678-'

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

    $ret = StringRegExpReplace($muster1, '-(\d*)-', '$1')
    ConsoleWrite($ret & @crlf)

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

    $ret = StringRegExpReplace($muster2, '-(\d*)-', '$1')
    ConsoleWrite($ret & @crlf)

    [/autoit]
  • listvieweintrag verschieben

    • BugFix
    • 23. Februar 2010 um 15:05

    Guckst du: Eintrag in einem ListView verschieben

  • Hilfe mit eigener Software (Suche nach bestimmten "Parametern" in Worddokument)

    • BugFix
    • 23. Februar 2010 um 14:16
    Zitat von mietzekatze

    Wie bekomm ich jetz noch die maximale Zeilenanzahl raus?

    Einfach meinen letzten Beitrag lesen.. :rolleyes:

  • Hilfe! Teile aus Textdatei mit _StringBetween ausschneiden funktioniert nicht.

    • BugFix
    • 22. Februar 2010 um 21:02
    Zitat von Schnitzel

    und einziger nachteil ist egtl das es langsamer ist als z.b. die string... funktionen


    Nicht generell - komplexe StringRegExReplace sind deutlich schneller als vergleichbare Stringbefehl Konstrukte. Nach meiner Erfahrung nimmt vergleichsweise die Geschwindigkeit von RegExp deutlich zu, je länger der Text wird.

  • Hilfe mit eigener Software (Suche nach bestimmten "Parametern" in Worddokument)

    • BugFix
    • 22. Februar 2010 um 20:55

    Zeilen und Spalten kannst du automatisch abfragen, habs mal angepaßt.

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    Local $oWord = ObjCreate("Word.Application")
    $oWord.Visible = False
    Local $oDoc = $oWord.Documents.Open ('C:\tabelle.doc')
    Local $zeilen = $oDoc.Tables(1).Rows.Count
    Local $spalten = $oDoc.Tables(1).Columns.Count
    Local $array[$zeilen][$spalten]
    Local $txt

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

    For $i = 1 To $zeilen
    For $j = 1 to $spalten
    $txt = StringTrimRight($oDoc.Tables(1).Cell($i, $j).Range.Text, 2)
    $array[$i-1][$j-1] = $txt
    Next
    Next

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

    ;~ _ArrayDisplay($array)

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

    $oDoc.Close
    $oWord.Quit

    [/autoit]
    Zitat

    Wie bekomm ich es jetz hin, dass er Word nicht öffnet?

    Gar nicht :D
    Word muß ja geöffnet werden - nur halt nicht sichtbar. Für das Word Objekt gibt es da nur: $object.Visible = False
    Kann mir nicht vorstellen, dass das fehlschlägt. Welche Office Version hast du denn?

  • Hilfe mit eigener Software (Suche nach bestimmten "Parametern" in Worddokument)

    • BugFix
    • 22. Februar 2010 um 18:26

    :D
    Ganz simpel ist der Weg dahin:
    VBA-Makrorecorder einschalten, alles einmal von Hand ausführen - Code ablesen (und etwas anpassen). ;)

  • Hilfe mit eigener Software (Suche nach bestimmten "Parametern" in Worddokument)

    • BugFix
    • 22. Februar 2010 um 18:18

    Ganz simpel:

    [autoit]

    #include <Array.au3>
    $oWord = ObjCreate("Word.Application")
    $oWord.Visible = False
    $oDoc = $oWord.Documents.Open ('C:\Dein_Pfad.doc')
    Local $array[10][5] ; hier die Größe deines Ziel-Arrays [Zeilen][Spalten] eintragen
    Local $txt

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

    For $i = 1 To 10 ; entsprechend Zeilenzahl
    For $j = 1 to 5 ; entsprechend Spaltenzahl
    $txt = StringTrimRight($oDoc.Tables(1).Cell($i, $j).Range.Text, 2)
    ; ConsoleWrite($txt & @CRLF)
    $array[$i-1][$j-1] = $txt
    Next
    Next

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

    $oDoc.Close
    $oWord.Quit

    [/autoit]

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™