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

Beiträge von nuts

  • Listbox suchen [SektionsName]

    • nuts
    • 30. Oktober 2009 um 14:12

    Hm welcher Schritt genau ist unklar?

  • Listbox suchen [SektionsName]

    • nuts
    • 30. Oktober 2009 um 13:50

    Deine Listbox ist doch mit Dateinamen der .ini's gefüllt.
    Diese auszulesen klappt ja oder?

    [autoit]


    $name = "" ; Kommt von deiner Listbox
    $searchstring = "" ;der gesuchte Sektionsname
    $ergebnis ;hier werden treffer zwischen gespeichert
    $asections=IniReadSectionNames($name)
    for $i = 0 to UBound($asections)-1
    if $asections[$i] = $searchstring then $ergebnis &= $asections[$i] & "|"
    next

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

    ;$ergebnis enthält jetzt alle .ini Namen mit der gesuchten Sektion, abgetrennt von einem "|"

    [/autoit]
  • Listbox suchen [SektionsName]

    • nuts
    • 30. Oktober 2009 um 13:28

    Für jede Ini ein Array mit allen Sektionsnamen erstellen (Inireadsektionnames).
    Jeden Eintrag dieses Array mit dem Suchstring vergleichen und bei einem Treffer das Ergebnis zwischen speichern.

    Am Ende die Listbox leeren und mit den Treffern wieder befüllen.

  • >>> Dienstplanprogramm fertig für jeder man nutzbar <<<

    • nuts
    • 30. Oktober 2009 um 13:14

    Ja habe nur schnell auf die .exe geklickt und den Source im Forum überflogen.

    edit \ Bei "Berechnen M-1" tritt der Fehler auf.
    Ist auch ein kleiner optischer Fehler, da 1,2 usw. auf diesen Buttons nicht ganz dargestellt werden.

  • >>> Dienstplanprogramm fertig für jeder man nutzbar <<<

    • nuts
    • 30. Oktober 2009 um 13:00

    Das Skript bricht ab sobald man den angesprochenen Button drückt und noch gar keine Wert eingegeben hat.

    Die Zeilen könnte man auch for ... next Schleifen verkürzen.
    Würde ich mal behaupten, habs nur überflogen.

  • >>> Dienstplanprogramm fertig für jeder man nutzbar <<<

    • nuts
    • 30. Oktober 2009 um 12:40

    Hey,

    du solltest auf jeden Fall ein besseres @error-handling einbauen.
    z.B. wenn man nach dem Start auf en Button "'Berechnen M-" drückt bricht das Skript ab.
    Immer wenn man den Input nicht vorhersehen (User-Eingabe) kann, sollte ein Abfrage folgen.
    Das ist ggf. aufwendiger als das eigentliche Skript, trotzdem sehr wichtig :)

    Zeile 245 bis 385 könnte man vermutlich extrem kürzen.

  • Wieso funktioniert StringInStr nicht?

    • nuts
    • 30. Oktober 2009 um 11:15
    Zitat von ojo


    P.S: Ich arbeite trotzdem mit der Syntax If StringInStr($Name, "tag") <> 0 Then


    Und wieso?
    In Autoit "bedeutet" true 1 und false 0.
    If XY then YZ ausgeschrieben: Falls XY wahr ist dann mache YZ
    Zumindest habe ich das so verstanden.

  • Wieso funktioniert StringInStr nicht?

    • nuts
    • 30. Oktober 2009 um 10:54

    Erst Filefindfirstfile verwenden.

    [autoit]


    ; Shows the filenames of all files in the current directory
    $search = FileFindFirstFile("*.*")

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

    ; Check if the search was successful
    If $search = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
    EndIf

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

    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop

    MsgBox(4096, "File:", $file)
    WEnd

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

    ; Close the search handle
    FileClose($search)

    [/autoit]
  • bis 30.10 habe ich zeit dafür hilfe bitte

    • nuts
    • 29. Oktober 2009 um 18:54

    Filewrite möchte das entsprechende Filehandle (bekommst du über Fileopen -> s. Hilfe).

    edit \ bzw. nimm doch einfach _FileWriteFromArray

  • bis 30.10 habe ich zeit dafür hilfe bitte

    • nuts
    • 29. Oktober 2009 um 17:13
    Code
    Anfang: uid=m-1254843856">
    Suchstring
    Ende: </a><br>


    Bilden immer eine Zeile im .txt file?
    Wie ist das genau aufgebaut? Kannst ja mal einen Ausschnitt davon anhängen.

  • [Iniread] Keiner mag lesen!

    • nuts
    • 28. Oktober 2009 um 20:26

    Wie klappt nichts?
    Was zeigt die msgbox denn?

  • [Iniread] Keiner mag lesen!

    • nuts
    • 28. Oktober 2009 um 20:19

    Auf jeden Fall keine Leerzeichen vor und hinter dem "=" in einer .ini verwenden.
    Sowas führt ggf. zu Problemen.

    [autoit]


    $a = InputBox ("Vokabel","Vokabel eingeben")
    $input_ini = IniRead("C:\Users\Robert\Desktop\LateinRobb.ini", "Latein", $a, "Gibts (noch) nicht")
    MsgBox(0,"",$a & " = " &$input_ini)

    [/autoit]
  • Array Problem

    • nuts
    • 28. Oktober 2009 um 14:50

    Mach doch mal eine @error-Abfrage nach Inireadsectionnames.

  • _arrayUnique funktioniert nicht

    • nuts
    • 28. Oktober 2009 um 14:12

    Poste doch mal dein Skript mit deinem Array.
    Kann ja nicht sein 8)

  • _arrayUnique funktioniert nicht

    • nuts
    • 28. Oktober 2009 um 14:03

    Die _Arraydelete Zeile verwirrt etwas.

    _Arrayunique funktioniert aber :)

    [autoit]


    #include <Array.au3>

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

    Dim $aArray[10] = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
    _ArrayDisplay($aArray, "$aArray")
    $aNewArray = _ArrayUnique($aArray) ;Using Default Parameters
    _ArrayDisplay($aNewArray, "$aNewArray represents the 1st Dimension of $aArray")

    [/autoit]
  • Merkwürdiger Fehler - Spinnt AutoIt ?

    • nuts
    • 26. Oktober 2009 um 20:53

    Mach doch mal eine @error-Abfrage nach Inireadsection.
    Das Array wird erst gar nicht erstellt (ini nicht gefunden, Section nicht gefunden usw.)

  • ReDim bei Array löscht Array-Einträge

    • nuts
    • 26. Oktober 2009 um 20:35

    Also so richtig hängt das vom genauen Problem ab. Viele Wege führen nach Rom ;)
    z.B. könnte man in einer For ... next Schleife jeden Eintrag vom 1D Array durchgehen und das 2D Array befüllen.

  • ReDim bei Array löscht Array-Einträge

    • nuts
    • 23. Oktober 2009 um 23:11

    Besser wäre es erst alle 1D Arrays zu erstellen (Stringsplit, whatever) und anschließend das 2D Array gleich in der richtigen Größe zu deklarieren.
    Redim ist laaaaangsam ;)

  • StringRegExp Problem

    • nuts
    • 23. Oktober 2009 um 14:17

    Möglicherweise. ;)
    Auf jeden Fall ist Schnitzel auch gut dabei.

    Das lässt sich aber bestimmt noch optimieren.

  • StringRegExp Problem

    • nuts
    • 23. Oktober 2009 um 13:45
    Spoiler anzeigen
    [autoit]


    ;( * egal was ) T<Nummer (auch mehrere Zahlen) ( * egal was ) <Klammer auf> ( * egal was) <Klammer zu>
    #include <Array.au3>
    #include <File.au3>
    #include <string.au3>
    Global $aTest
    _FileReadToArray(@ScriptDir & "\test.txt", $aTest)
    _ArrayDisplay($aTest)
    #cs
    [ _
    'N182 G74 Z-1 L1', _
    'N183 G74 x200 Y-1 L1', _
    'N184 G7', _
    'N83 (2: T1 2D ANSCHLAGKANTE FRAESEN)', _
    'N186 S1800 T3 M6 (HM - Schlichtfraeser D=20,0)', _
    'N187 G39 C3=1', _
    'N188 G74 Z-1 L1']
    #ce

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

    $pattern = '(T\d+)(.*)(\(.*\))' ;nuts
    $pattern2 = '(T\d+)(?:[^(^\r]*)(\([^)]*)' ;bugfix
    $pattern3 = '(T\d+)(?:[^(^\r]*)(\([^)]*\))' ;bugfix seins mit Klammer am Ende

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

    $time = TimerInit()
    For $i = 0 To $aTest[0]
    $ret = StringRegExp($aTest[$i], $pattern3, 3)
    If @error Then ContinueLoop
    ;ConsoleWrite('Werkzeug: ' & $ret[0] & ' ' & $ret[1] & @CRLF)
    Next
    ConsoleWrite("Bugfix mit Klammer :" & $time & @CRLF)

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

    $time1 = TimerInit()
    For $i = 0 To $aTest[0]
    $ret = StringRegExp($aTest[$i], $pattern2, 3)
    If @error Then ContinueLoop
    ;ConsoleWrite('Werkzeug: ' & $ret[0] & ' ' & $ret[1] & ')' & @CRLF)
    Next
    ConsoleWrite("Bugifx :" & $time1 & @CRLF)

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

    $time2 = TimerInit()
    For $i = 0 To $aTest[0]
    $ret = StringRegExp($aTest[$i], $pattern, 3)
    If @error Then ContinueLoop
    ;ConsoleWrite('Werkzeug: ' & $ret[0] & ' ' & $ret[2] & @CRLF)
    Next
    ConsoleWrite("Nuts :" & $time2 & @CRLF)

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

    $time3 = TimerInit()
    Dim $ergebnis[1]
    For $i = 1 To $aTest[0]
    $between = _StringBetween($aTest[$i], ' (', ')')
    If Not @error Then
    $aTest[$i] = StringTrimRight($aTest[$i], StringLen($between[0]))
    $anweisungen = StringSplit($aTest[$i], ' ')
    For $h = 1 To $anweisungen[0]
    If StringLeft($anweisungen[$h], 1) = 'T' Then
    $zahl = StringRight($anweisungen[$h], StringLen($anweisungen[$h]) - 1)
    _ArrayAdd($ergebnis, $anweisungen[$h] & ' (' & $between[0] & ' )')
    $ergebnis[0] = UBound($ergebnis) - 1
    EndIf
    Next
    EndIf
    Next
    ConsoleWrite("Schnitzel :" & $time3 & @CRLF)

    [/autoit]


    So habe mein Pattern auch angepasst und mal einen Speedtest durchgeführt.
    Es zeigt sich, dass RegExp nicht wirklich schnell ist.
    Gewonnen hat bei mir mit hauchdünnem Vorsprung die Lösung von Bugfix.

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™