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

  • 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]
  • Suche mit LIKE

    • BugFix
    • 21. Februar 2010 um 22:27

    Erweiterung:
    Der zu prüfende String kann jetzt auch Zeilenumbrüche (@CR oder @CRLF) enthalten.
    s. Post1

  • Details auslesen????

    • BugFix
    • 21. Februar 2010 um 19:04

    Findest du hiermit: Erweiterte Dateiinfo (eine Datei od. alle eines Ordners)

  • StringRegExp - Zeilenumbruch mit einbeziehen

    • BugFix
    • 21. Februar 2010 um 17:33

    \s = Leerzeichen
    Zeilenumbruch (CRLF) wird mit \r\n maskiert.

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™