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

Beiträge von shakoon

  • Alle Textdateien in einem Ordner durchsuchen nach Wert und alle Zeilen mit treffer ausgeben

    • shakoon
    • 27. September 2022 um 07:59

    Moin,

    ich verzweifel gerade ein bisschen am Script basteln :( mir fällt nicht ein, wie ich das lösen könnte.

    Ich habe bis zu 100 Textdateien in einem Ordner, möchte dort alle durchsuchen nach dem Wert MACNCTRL: 'e_StateProducing' <--- event: 'e_EventStartCycle' .

    Jede Zeile, die diesen Eintrag enthält, möchte ich am Ende in eine output.txt oder .csv speichern.

    Eigentlich recht simpel, aber hab grad irgendwie ne Blockade im Kopf :(

  • Textdatei Stringsplit Array

    • shakoon
    • 22. Januar 2020 um 13:27

    ich habe mir schon alles angeschaut, komme aber irgendwie auf keine Lösung im moment :(

  • Textdatei Stringsplit Array

    • shakoon
    • 22. Januar 2020 um 12:24

    Und so sieht die Ausgabe aus.

    Bilder

    • 2020-01-22 12_23_38-.jpg
      • 38,25 kB
      • 1.022 × 250
  • Textdatei Stringsplit Array

    • shakoon
    • 22. Januar 2020 um 12:23
    Code
    $csv = FileRead("1.txt")
    $csv = StringStripWS($csv, 100)
    $rows = StringSplit($csv, @CRLF)
    Dim $aDetail[$rows[0] + 1][100 + 1]
    $aDetail[0][0] = $rows[0]
    For $i = 1 to $rows[0]
        $temp = StringSplit($rows[$i], ",", 2)
        For $j = 0 to UBound($temp) - 1
           $aDetail[$i][$j] = $temp[$j] ;
        Next
    Next
    _ArrayDisplay($aDetail)
    Alles anzeigen
  • Textdatei Stringsplit Array

    • shakoon
    • 22. Januar 2020 um 12:15

    Moin,

    ich komme einfach nicht weiter :(

    habe folgenden text in meiner Textdatei. (die ist auch im Anhang)

    code ,pos ,kst ,status

    ----------,----------,----------,----------

    1 ,10 ,250001 ,0

    2 ,20 ,250002 ,0

    3 ,30 ,250003 ,2

    4 ,40 ,250004 ,2

    (4 Zeilen betroffen)


    Ich möchte nun die Werte ( 1,2,3,4 & 10,20,30,40 usw als Array haben.

    Wie kann ich sowas machen? StringSplit mit dem "," getrennt bekomme ich hin, aber die nächste zeile geht irgendwie nicht.

    Dateien

    1.txt 294 Byte – 316 Downloads
  • GUI mit FileRead aktualisieren und Opt("GUIOnEventMode", 1)

    • shakoon
    • 9. Januar 2020 um 08:07

    Wunderbar :)

    habt mir beide sehr geholfen ;)

    Habs jetzt erstmal mit der Schleife gelöst.

    Aber deine Lösung Kanashius, werde ich jetzt mal versuchen zu verstehen ;) nur so lernt man :)

    Wird dann die langfristige Lösung :)

  • GUI mit FileRead aktualisieren und Opt("GUIOnEventMode", 1)

    • shakoon
    • 8. Januar 2020 um 20:48

    und die ersetze ich quasi einfach mit meiner Whlie schleife? und passe den rest an?

  • GUI mit FileRead aktualisieren und Opt("GUIOnEventMode", 1)

    • shakoon
    • 8. Januar 2020 um 14:57

    Danke ;)

    die namen muss ich leider so lassen, da die Dateien aus einem anderen programm kommen und ich sie nicht umbenennen kann in diesem :(


    Das einlesen nach Änderungsdatum wäre schon ganz cool.

    Schleife wäre aber auch ok.

    Nur wie baue ich sowas auf?

    Ich habe schonmal mit schleifen herumgespielt, aber irgendwie bekomme ich es nicht hin.

  • GUI mit FileRead aktualisieren und Opt("GUIOnEventMode", 1)

    • shakoon
    • 8. Januar 2020 um 07:19

    Guten Morgen,

    ich komme gerade bei einem Programm nicht weiter.

    Ich möchte etwas aus einer .csv Datei auslesen und in diesem programm anzeigen und danach verarbeiten.

    habe euch mal einen gekürzten Code geben um es übersichtlicher zu machen.


    Plan ist, das Programm soll den ganzen Tag offen bleiben und die Informationen aus den .csv Dateien sollen alle 10 minuten oder so aktualisiert werden, da sich die .csv Dateien ständig aktualisieren.

    ist sowas irgendwie einfach möglich?


    Code
    Opt("GUIOnEventMode", 1) ; Change to OnEvent mode
    
    Global $hARTIKELDISPOGUI = GUICreate("GUI", $guibreite, $guihoehe,0,0,$WS_POPUP)
    ;GUISetOnEvent($hGUI, "GUI")
                GUISetBkColor(0xFFFFFF)
    
    
    
    ;###### Buttons um die einzelnen Tabs anzuwählen
    
    Local $tab1Button = GUICtrlCreateButton("1", 100, 0, 100,50)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x56085e)
    GUICtrlSetFont(-1, $fontsizebuttonunten, $FW_BOLD)
    GUICtrlSetOnEvent($tab1Button, "tab1Button")
    
    Local $tab2Button = GUICtrlCreateButton("2", 300, 0, 100,50)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x56085e)
    GUICtrlSetFont(-1, $fontsizebuttonunten, $FW_BOLD)
    GUICtrlSetOnEvent($tab2Button, "tab2Button")
    
    Local $tab3Button = GUICtrlCreateButton("3", 500, 0, 100,50)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x56085e)
    GUICtrlSetFont(-1, $fontsizebuttonunten, $FW_BOLD)
    GUICtrlSetOnEvent($tab3Button, "tab3Button")
    
    Local $tab4Button = GUICtrlCreateButton("4", 700, 0, 100,50)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x56085e)
    GUICtrlSetFont(-1, $fontsizebuttonunten, $FW_BOLD)
    GUICtrlSetOnEvent($tab4Button, "tab4Button")
    
    Local $tab5Button = GUICtrlCreateButton("5", 900, 0, 300,50)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x56085e)
    GUICtrlSetFont(-1, $fontsizebuttonunten, $FW_BOLD)
    GUICtrlSetOnEvent($tab5Button, "tab5Button")
    
    
    ;######## FileRead
    
    $csv = FileRead("1.csv")
    $csv = StringStripWS($csv, 100)
    $rows = StringSplit($csv, @CRLF)
    Dim $aDetail[$rows[0] + 1][100 + 1]
    $aDetail[0][0] = $rows[0]
    For $i = 1 to $rows[0]
        $temp = StringSplit($rows[$i], ";", 2)
        For $j = 0 to UBound($temp) - 1
           $aDetail[$i][$j] = $temp[$j] ;
        Next
    Next
    ;_ArrayDisplay($aDetail)
    
    ;####################################################
    
    $csv1 = FileRead("2.csv")
    $csv1 = StringStripWS($csv1, 100)
    $rows1 = StringSplit($csv1, @CRLF)
    Dim $aDetaila[$rows1[0] + 1][100 + 1]
    $aDetaila[0][0] = $rows1[0]
    For $i1 = 1 to $rows1[0]
        $temp1 = StringSplit($rows1[$i1], ";", 2)
        For $j1 = 0 to UBound($temp1) - 1
            $aDetaila[$i1][$j1] = $temp1[$j1] ;
        Next
    Next
    ;_ArrayDisplay($aDetail)
    
    ;####################################################
    
    $csv2 = FileRead("3.csv")
    $csv2 = StringStripWS($csv2, 100)
    $rows2 = StringSplit($csv2, @CRLF)
    Dim $aDetailb[$rows2[0] + 1][100 + 1]
    $aDetailb[0][0] = $rows2[0]
    For $i2 = 1 to $rows2[0]
        $temp2 = StringSplit($rows2[$i2], ";", 2)
        For $j2 = 0 to UBound($temp2) - 1
            $aDetailb[$i2][$j2] = $temp2[$j2] ;
        Next
    Next
    ;_ArrayDisplay($aDetail)
    
    ;####################################################
    
    $csv3 = FileRead("4.csv")
    $csv3 = StringStripWS($csv3, 100)
    $rows3 = StringSplit($csv3, @CRLF)
    Dim $aDetailc[$rows3[0] + 1][100 + 1]
    $aDetailc[0][0] = $rows3[0]
    For $i3 = 1 to $rows3[0]
        $temp3 = StringSplit($rows3[$i3], ";", 2)
        For $j3 = 0 to UBound($temp3) - 1
            $aDetailc[$i3][$j3] = $temp3[$j3] ;
        Next
    Next
    ;_ArrayDisplay($aDetail)
    
    ;####################################################
    
    $csv4 = FileRead("5.csv")
    $csv4 = StringStripWS($csv4, 100)
    $rows4 = StringSplit($csv4, @CRLF)
    Dim $aDetaild[$rows4[0] + 1][100 + 1]
    $aDetaild[0][0] = $rows4[0]
    For $i4 = 1 to $rows4[0]
        $temp4 = StringSplit($rows4[$i4], ";", 2)
        For $j4 = 0 to UBound($temp4) - 1
            $aDetaild[$i4][$j4] = $temp4[$j4] ;
        Next
    Next
    ;_ArrayDisplay($aDetail)
    
    
    
    $tab = GUICtrlCreateTab(10, 85, 1900, 900)
    
    
    $tab1 = GUICtrlCreateTabItem("1")
    
    If IsDeclared("rows") And IsDeclared("i") Then
       If $i >= 3  Then
       $aDetailsaegen11 = $aDetail[2][0]
       $aDetailsaegen12 = $aDetail[2][1]
       $aDetailsaegen13 = $aDetail[2][7]
       $aDetailsaegen14 = $aDetail[2][8]
       $aDetailsaegen15 = $aDetail[2][10]
       $aDetailsaegen16 = $aDetail[2][11]
       $aDetailsaegen17 = $aDetail[2][12]
       $aDetailsaegen18 = $aDetail[2][15]
       $aDetailsaegen19 = $aDetail[2][16]
       $aDetailsaegen110 = $aDetail[2][17]
       $aDetailsaegen111 = $aDetail[2][2]
       Else
       $aDetailsaegen11 = ""
       $aDetailsaegen12 = ""
       $aDetailsaegen13 = ""
       $aDetailsaegen14 = ""
       $aDetailsaegen15 = ""
       $aDetailsaegen16 = ""
       $aDetailsaegen17 = ""
       $aDetailsaegen18 = ""
       $aDetailsaegen19 = ""
       $aDetailsaegen110 = ""
       $aDetailsaegen111 = ""
       EndIf
    Else
     $aDetailsaegen11 = ""
     $aDetailsaegen12 = ""
     $aDetailsaegen13 = ""
     $aDetailsaegen14 = ""
     $aDetailsaegen15 = ""
     $aDetailsaegen16 = ""
     $aDetailsaegen17 = ""
     $aDetailsaegen18 = ""
     $aDetailsaegen19 = ""
     $aDetailsaegen110 = ""
     $aDetailsaegen111 = ""
    Endif
    
       If $aDetailsaegen110 = "Offen"  Then
       $labelbgcolor1 = 0xF5A9A9
       Else
       $labelbgcolor1 = 0xA9F5A9
       EndIf
    
    GUICtrlCreateLabel($aDetailsaegen11, $labelxs1, $labelyz1, $labelbreites1, $labelhoehez1, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER))
             GUICtrlSetBkColor(-1, $labelbgcolor1)
                GUICtrlSetColor(-1, $labeltextcolor)
             GUICtrlSetFont(-1, $fontsizelabel, $FW_BOLD)
    
    GUICtrlCreateLabel($aDetailsaegen12, $labelxs2, $labelyz1, $labelbreites2, $labelhoehez1/2, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER))
             GUICtrlSetBkColor(-1, $labelbgcolor1)
                GUICtrlSetColor(-1, $labeltextcolor)
             GUICtrlSetFont(-1, $fontsizelabel, $FW_BOLD)
    
    GUICtrlCreateLabel($aDetailsaegen13, $labelxs3, $labelyz1+$labelhoehez1/2, $labelbreites3, $labelhoehez1/2, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER))
             GUICtrlSetBkColor(-1, $labelbgcolor1)
                GUICtrlSetColor(-1, $labeltextcolor)
             GUICtrlSetFont(-1, $fontsizelabel, $FW_BOLD)
    
    GUICtrlCreateLabel($aDetailsaegen14, $labelxs4, $labelyz1, $labelbreites4, $labelhoehez1/2, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER))
             GUICtrlSetBkColor(-1, $labelbgcolor1)
                GUICtrlSetColor(-1, $labeltextcolor)
             GUICtrlSetFont(-1, $fontsizelabel, $FW_BOLD)
    
    GUICtrlCreateLabel($aDetailsaegen15, $labelxs5, $labelyz1+$labelhoehez1/2, $labelbreites5, $labelhoehez1/2, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER))
             GUICtrlSetBkColor(-1, $labelbgcolor1)
                GUICtrlSetColor(-1, $labeltextcolor)
             GUICtrlSetFont(-1, $fontsizelabel, $FW_BOLD)
    
    GUICtrlCreateLabel($aDetailsaegen16, $labelxs6, $labelyz1, $labelbreites6, $labelhoehez1, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER))
             GUICtrlSetBkColor(-1, $labelbgcolor1)
                GUICtrlSetColor(-1, $labeltextcolor)
             GUICtrlSetFont(-1, $fontsizelabel, $FW_BOLD)
    
    GUICtrlCreateLabel($aDetailsaegen17, $labelxs7, $labelyz1, $labelbreites7, $labelhoehez1/2, BitOR($SS_LEFT, $SS_CENTERIMAGE, $WS_BORDER))
             GUICtrlSetBkColor(-1, $labelbgcolor1)
                GUICtrlSetColor(-1, $labeltextcolor)
             GUICtrlSetFont(-1, $fontsizelabel, $FW_BOLD)
    
    GUICtrlCreateLabel($aDetailsaegen18, $labelxs8, $labelyz1+$labelhoehez1/2, $labelbreites8, $labelhoehez1/2, BitOR($SS_LEFT, $SS_CENTERIMAGE, $WS_BORDER))
             GUICtrlSetBkColor(-1, $labelbgcolor1)
                GUICtrlSetColor(-1, $labeltextcolor)
             GUICtrlSetFont(-1, $fontsizelabel, $FW_BOLD)
    
    GUICtrlCreateLabel($aDetailsaegen19, $labelxs9, $labelyz1, $labelbreites9, $labelhoehez1/2, BitOR($SS_LEFT, $SS_CENTERIMAGE, $WS_BORDER))
             GUICtrlSetBkColor(-1, $labelbgcolor1)
                GUICtrlSetColor(-1, $labeltextcolor)
             GUICtrlSetFont(-1, $fontsizelabel, $FW_BOLD)
    
    GUICtrlCreateLabel($aDetailsaegen110, $labelxs9, $labelyz1+$labelhoehez1/2, $labelbreites9, $labelhoehez1/2, BitOR($SS_LEFT, $SS_CENTERIMAGE, $WS_BORDER))
             GUICtrlSetBkColor(-1, $labelbgcolor1)
                GUICtrlSetColor(-1, $labeltextcolor)
             GUICtrlSetFont(-1, $fontsizelabel, $FW_BOLD)
    
    GUICtrlCreateLabel($aDetailsaegen111, $labelxs10, $labelyz1, $labelbreites10, $labelhoehez1, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER))
             GUICtrlSetBkColor(-1, $labelbgcolor1)
                GUICtrlSetColor(-1, $labeltextcolor)
             GUICtrlSetFont(-1, $fontsizelabel, $FW_BOLD)
    
    
    usw........ für alle 5 Tabs gibts unmengen GUICtrlCreateLabel. Diese beziehen all ihre Daten aus den FileRead Arrays.
    
    
    ;###### Ende
    
    GUISwitch($hGUI)
    GUISetState(@SW_SHOW)
    
    
    While 1
        Sleep(100) ; Sleep to reduce CPU usage
     WEnd
    
    
    
    
    Func ZURUEKButton()
         Exit
      EndFunc
    
    Func tab1Button()
        ; Note: At this point @GUI_CtrlId would equal $iOKButton
    _GUICtrlTab_SetCurFocus($Tab, 0)
    EndFunc
    
    Func tab2Button()
        ; Note: At this point @GUI_CtrlId would equal $iOKButton
    _GUICtrlTab_SetCurFocus($Tab, 1)
    EndFunc
    
    Func tab3Button()
        ; Note: At this point @GUI_CtrlId would equal $iOKButton
    _GUICtrlTab_SetCurFocus($Tab, 2)
    EndFunc
    
    Func tab4Button()
        ; Note: At this point @GUI_CtrlId would equal $iOKButton
    _GUICtrlTab_SetCurFocus($Tab, 3)
    EndFunc
    
    Func tab5Button()
        ; Note: At this point @GUI_CtrlId would equal $iOKButton
    _GUICtrlTab_SetCurFocus($Tab, 4)
    EndFunc
    Alles anzeigen
  • Bestimmte zeilen aus Textdatei

    • shakoon
    • 26. August 2019 um 08:08
    Zitat

    450135;31-00-001;Beschreibung;B12 ...

    Ist das ein Tippfehler, oder enthalten Einträge an dieser Stelle auch das Minuszeichen ?

    Bisher war immer nur von Punkten die Rede.

    Es gibt auch einträge mit - dazwischen. muss aber niht unbedingt funktionieren. Wäre nice to have.


    Frage nebenbei, würdet ihr sowas mit mehreren GUI`s realisieren?

    Also GUI Hauptseite. Wenn Button dann GUI Hauptseite schließen und GUI Button 1 öffnen.

    Wenn GUI von Button 1 offen und dort OK, dann GUI von Button 1 schließen und diese Abfrage öffnen. usw.

    Ich hab mich jetzt auch mal an "GUISetOnEvent" herangetastet, habe da aber das Problem, das sich die Werte dann nicht zurücksetzen und alles per "GUISetState" wieder zurücksetzen, wäre hier glaube ich zu aufwändig.

  • Bestimmte zeilen aus Textdatei

    • shakoon
    • 23. August 2019 um 15:35

    Ich hab jetzt auch alles dank eurer Hilfe mehrfach umgebaut und mir ne andere Art und Weise überlegt wie am Anfang xD Bisschen verwirrend glaube ich.

    Also hier mal die einzelnen Schritte.


    Ich habe meine Hauptseite, dort habe ich 4 Buttons, die alle eine adere Funktion ausführen sollen.

    Mit den anderen 3 bin ich klar gekommen.


    Vorgang hier:

    Schritt 1: Ich Klicke auf der Hauptseite auf den Button 1.

    Schritt 2: Dort ist ein Inputfeld und ein Button. In das Inputfeld, wird per Barcodescanner folgendes eingefügt:

    450135;135.01.052.00;Beschreibung;B12/5/4/6;Menge; usw...

    450135;31-00-001;Beschreibung;B12/5/4/6;Menge; usw...

    alles mit ; getrennt denn die werte haben unterschiedliche Längen und Zeichen

    Wenn eingescannt, dann OK Button drücken.


    Mit dem eingescannten Wert, sollen aus einer .txt Datei alle Zeilen herausgefiltert werden, die den Wert enthalten.

    Diese möchte ich irgendwie angezeigt bekommen und dort dann einzelne oder mehrere Zeilen auswählen.

    Diese sollen dann in eine andere .txt Datei geschrieben werden, sozusagen die ausgewählten 1zu1 von TXT zu anderen TXT Datei kopieren.


    Das ganze soll aber per Touchpad gemacht werden, also ein normales Listview wäre da etwas klein.

    Die Werte anzeigen lassen und auswählen klappt glaube ich soweit ganz gut.


    Frage nebenbei, würdet ihr sowas mit mehreren GUI`s realisieren?

    Also GUI Hauptseite. Wenn Button dann GUI Hauptseite schließen und GUI Button 1 öffnen.

    Wenn GUI von Button 1 offen und dort OK, dann GUI von Button 1 schließen und diese Abfrage öffnen. usw.

    Ich hab mich jetzt auch mal an "GUISetOnEvent" herangetastet, habe da aber das Problem, das sich die Werte dann nicht zurücksetzen und alles per "GUISetState" wieder zurücksetzen, wäre hier glaube ich zu aufwändig.

  • Bestimmte zeilen aus Textdatei

    • shakoon
    • 23. August 2019 um 11:15

    Ihr überfordert mich gerade ein Wenig xD Ich bin doch blutiger anfänger :( :D

    Ich habe noch nie mit ConsoleWrite gearbeitet und werde nicht so ganz schlau aus der Hilfe Datei.

    Ist das sozusagen der zwischenspeicher? und mit consoleread kann ich den wert wieder holen?

  • Bestimmte zeilen aus Textdatei

    • shakoon
    • 23. August 2019 um 08:13

    Das mit der Anzeige und em Listview usw, das scheint gerade ganz gut so zu funktionieren wie ich es jetzt habe xD


    ich hab momentan nur das Problem, aus meinem Eingescannten Barcode, das richtige heraus zu filtern und das in die Suche ein zu bauen.

    Folgendes hab ich jetzt mal so halbwegs probiert xD


    Das ist der Input

    Code
    Global $input = GUICtrlCreateInput("", $guibreite/2-150, $guihoehe/2-25, 300, 50, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER))
             GUICtrlSetBkColor(-1, $labelbgcolorh)
                GUICtrlSetColor(-1, $labeltextcolorh)
             GUICtrlSetFont(-1, 30, $FW_BOLD)

    Hiermit wollte ich den 2ten Wert Filtern, durch ";" getrennt

    Code
    Global $input = "450162;135.01.052.00;Hallo;325235;t4t 43"
    
    
    If IsArray($input ) Then
        Local $aaDetail[30][30]
        Local $aaSplit
        For $ai = 0 To UBound($input ) -1
            $aSplit = StringSplit($input [$ai], ';', 2)
            For $aj = 0 To UBound($aaSplit) -1
                $aDetail[$ai][$aj] = $aSplit[$aj]
            Next
        Next
    EndIf
    Alles anzeigen

    Und so wollte ich die Suche angeben:

    Code
    Local $sFile = @ScriptDir & "\artikeldispo.txt"
    Local $sRead = FileRead($sFile)
    Local $sPattern = "\d+;" & $aaDetail[0][1] & "[^\n]+"
    Local $aLines = StringRegExp($sRead, $sPattern, 3)
    ; wenn Zeilen gefunden -> 2D Array mit allen Einzelwerten erstellen
    ; oder statt in 2D Array zu schreiben, gleich die Einzelwerte in deine GUI eintragen
    If IsArray($aLines) Then
        Local $aDetail[30][30]
        Local $aSplit
        For $i = 0 To UBound($aLines) -1
            $aSplit = StringSplit($aLines[$i], ';', 2)
            For $j = 0 To UBound($aSplit) -1
                $aDetail[$i][$j] = $aSplit[$j]
            Next
        Next
     ;   _ArrayDisplay($aDetail)
    EndIf
    Alles anzeigen


    Aber irgendwo hab ich nen Fehler drin :(

  • Bestimmte zeilen aus Textdatei

    • shakoon
    • 22. August 2019 um 14:54

    Und gleich noch ne andere Frage xD

    ich hab jetzt 2 Stunden lang herum probiert und bekomme es nicht hin :D


    ich habe ein Inputfeld, wo ich per barcode den suchbegriff einscanne.


    Der Code, der eingescannt wird, sieht folgendermaßen aus ( es gibt mehrere möglichkeiten, aber immer mit ";" getrennt :(

    510597;135.01.052.00;B12/1/1/1a;1396;BlaBlaBla

    510597;3.135.01.052.00;B12/1/1/1a;1396;BlaBlaBla

    510597;2.5000.0019;B12/1/1/1a;1396;BlaBlaBla

    510597;185.01.001.01.3;B12/1/1/1a;1396;BlaBlaBla

    Das rot markierte, ist immer der Wert, den ich benötige.

    Aber wie bekomme ich z.B. aus 135.01.052.00 ein    'd+;135\.01\.052\.00[^\n]+' ?

    Code
    '\d+;135\.01\.052\.00[^\n]+'


    Code
    Local $sFile = @ScriptDir & "\artikeldispo.txt"
    Local $sRead = FileRead($sFile)
    Local $sPattern = '\d+;135\.01\.052\.00[^\n]+'
    Local $aLines = StringRegExp($sRead, $sPattern, 3)
    ; wenn Zeilen gefunden -> 2D Array mit allen Einzelwerten erstellen
    ; oder statt in 2D Array zu schreiben, gleich die Einzelwerte in deine GUI eintragen
    If IsArray($aLines) Then
        Local $aDetail[30][30]
        Local $aSplit
        For $i = 0 To UBound($aLines) -1
            $aSplit = StringSplit($aLines[$i], ';', 2)
            For $j = 0 To UBound($aSplit) -1
                $aDetail[$i][$j] = $aSplit[$j]
            Next
        Next
     ;   _ArrayDisplay($aDetail)
    EndIf
    Alles anzeigen
  • Bestimmte zeilen aus Textdatei

    • shakoon
    • 22. August 2019 um 11:35
    Zitat von Musashi

    OK :thumbup:

    Man könnte im Grunde die Einzelfelder (je Zeile) zu einem Label/Listviewitem machen - dass würde einiges an Komplexität aus der Anwendung nehmen. Bliebe also die Bedienbarkeit der Scrollleiste und der Selektion.

    Es gibt eine Scrollbar-UDF von Melba23 mit einigen Beispielen :

    https://www.autoitscript.com/forum/topic/11…sion-13-may-18/

    Wirf dort mal einen Blick 'rein (speziell in die Beispiele).

    Gruß Musashi

    P.S. : Schaue, wenn Du einen Thread laufen hast, ruhig häufiger in's Forum :P

    Alles anzeigen

    Was ist denn ein "Label/Listviewitem" ? xD

    Wie macht man denn sowas? Gibts da eventuell auch Beispiele?

  • Bestimmte zeilen aus Textdatei

    • shakoon
    • 21. August 2019 um 20:33
    Zitat von Musashi

    Hi shakoon !

    Erst einmal abgesehen von den Punkten :

    1. Checkbox Button sehr ähnlich im unausgewählten und ausgewählten Zustand

    2. vertikale Scrollbar des ListViews ggf. schwer zu 'treffen'

    -> Funktioniert mein Beispiel aus Beitrag #21 den grundsätzlich auf dem Touchpad ?

    (ich kann es, wie gesagt, nicht selbst testen)

    -> Werden alle Tablets (falls mehrere) mit der gleichen Bildschirmauflösung betrieben ?

    Gruß Musashi

    Alles anzeigen

    Moin,

    ich kann per Touch die Checkboxen auswählen und Scrollen geht auch.

    Also Theoretisch ja :)

  • Bestimmte zeilen aus Textdatei

    • shakoon
    • 20. August 2019 um 07:09

    Es geht nur um die komplette zeile. Die muss auswählbar sein.

    Das funktioniert ja alles soweit ganz gut :) Ich brauch nur eine möglichkeit, wie ich eindeutig darstelle kann, ob die zeile gerade ausgewählt ist oder nicht. Weil der Checkbox Button sich sehr ähnlich sieht im unausgewählten und ausgewählten Zustand. Und meine Lösung über die Funktion, wird ja leider überall angezeigt und nicht nur im TAB.

    Oder kann man dort eventuell die Farbe anpassen in der Checkbox wenn sie ausgewählt ist?

    Hier nochmal der Checkbox Code.

    Code
    Global $idCheckbox1 = GUICtrlCreateCheckbox("1", 200, $labelyz1, 60, $labelhoehez1, $BS_PUSHLIKE)
    
    GUICtrlSetOnEvent($idCheckbox1, "OKCheckbox1")
  • Bestimmte zeilen aus Textdatei

    • shakoon
    • 19. August 2019 um 13:49

    Sowas wäre auch gut :) würde funktionieren.

    Der einzige haken an der Sache, das programm soll auf einem Tablet laufen mit Touchdisplay :D

    Kann man die Checkboxen größer machen? Und ob man den Scrollbalken immer so genau trifft :)

    Deshalb hatte ich erstmal die andere Version probiert. Da kann man alle größen anpassen.

    Bisher funktioniert auch alles bis auf die Funktionen in den Tabs

    Code
     Func OKCheckbox1()
      If BitAnd(GUICtrlRead($idCheckbox1),$GUI_CHECKED) = $GUI_CHECKED AND GUICtrlRead($tab) = "0"   Then
      Local $labelbgcolor = 0x00F700
      GUICtrlCreateLabel("Ausbuchen", 50, $labelyz1, 100, $labelhoehez1, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER))
             GUICtrlSetBkColor(-1, $labelbgcolor)
    Else
      Local $labelbgcolor = 0xF70000
      GUICtrlCreateLabel("Nicht Ausbuchen", 50, $labelyz1, 100, $labelhoehez1, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER))
             GUICtrlSetBkColor(-1, $labelbgcolor)
    EndIf
    EndFunc
    Alles anzeigen

    Diese Funktionen müssten irgendwie tabgebunden sein, damit sie nur in dem Tab angezeigt werden, indem sie sich befinden.

    Hängt das eventuell mit der Funktion zusammen? kann man die nicht in Tabs benutzen und dann nur dort anzeigen lassen??

  • Bestimmte zeilen aus Textdatei

    • shakoon
    • 19. August 2019 um 10:00

    Moin, habe das mit dem Tab ausprobiert und damit klappt es ganz gut.

    ich habe mir jetzt pro Tab 10 ergebnisse anzeigen lassen. Läuft auch alles soweit.

    Mit dem Listview bekomme ich es glaube nicht so ganz hin.

    Also, ich habe eine textdatei, in der stehen daten. Die möchte ich anhand einer Nummer filtern, und mir die ergebnisse anzeigen lassen. das haben wir ja schon hinbekommen.

    Dann möchte ich von diesen ergebnissen bestimmte zeilen auswählen und diese ausgewählten dann in eine andere textdatei schreiben.

    ich hänge euch mal mein momentan gebasteltes ding dran.

    das mit dem daten in die textdatei speichern am ende bekomme ich schon hin, soweit bin ich noch nicht.

    mein problem ist nun, wenn ich auf eine Checkbox in tab 1-10 klicke, wird links daneben ein grünes feld kommen, was mir der status der checkbox anzeigt. (grün=gedrückt, rot=nicht gedrückt)

    Diese Funktion die das Rot und Grün macht, wird dann aber in allen 3 Tabs sichtbar, ich möchte sie aber nur im ersten TAB haben. Also wenn ich eine Checkbox im ersten Tab drücke, soll die funktio nauch nur im ersten Tab angezeigt werden. Wenn ich die Chechbox im 2ten drücke, dann nur im 2ten tab... usw....


    Das problem mit dem Array Error, habe ich übrigens so gelöst, falls das mal jemand sucht hier :D


    Code
    Local $sFile = @ScriptDir & "\artikeldispo.txt"
    
    Local $sRead = FileRead($sFile)
    
    Local $sPattern = '\d+;135\.01\.052\.00[^\n]+'
    
    Local $aLines = StringRegExp($sRead, $sPattern, 3)
    
    ; wenn Zeilen gefunden -> 2D Array mit allen Einzelwerten erstellen
    
    ; oder statt in 2D Array zu schreiben, gleich die Einzelwerte in deine GUI eintragen
    
    If IsArray($aLines) Then
    
    Local $aDetail[UBound($aLines)][9]
    
    Local $aSplit
    
    For $i = 0 To UBound($aLines) -1
    
    $aSplit = StringSplit($aLines[$i], ';', 2)
    
    For $j = 0 To UBound($aSplit) -1
    
    $aDetail[$i][$j] = $aSplit[$j]
    
    Next
    
    Next
    
    ; _ArrayDisplay($aDetail)
    
    EndIf
    
    
    
    If Not IsDeclared("i") Then
    
    
    $aDetail11 = 0
    
    $aDetail12 = 0
    
    $aDetail13 = 0
    
    $aDetail14 = 0
    
    $aDetail15 = 0
    
    $aDetail16 = 0
    
    $aDetail17 = 0
    
    $aDetail18 = 0
    
    $aDetail19 = 0
    
    
    Else
    
    
    $aDetail11 = $aDetail[0][0]
    
    $aDetail12 = $aDetail[0][1]
    
    $aDetail13 = $aDetail[0][2]
    
    $aDetail14 = $aDetail[0][3]
    
    $aDetail15 = $aDetail[0][4]
    
    $aDetail16 = $aDetail[0][5]
    
    $aDetail17 = $aDetail[0][6]
    
    $aDetail18 = $aDetail[0][7]
    
    $aDetail19 = $aDetail[0][8]
    
    
    Endif
    Alles anzeigen

    Dateien

    artikeldispo.txt 579 Byte – 332 Downloads Artikeldisposition.au3 63,41 kB – 353 Downloads
  • Bestimmte zeilen aus Textdatei

    • shakoon
    • 15. August 2019 um 16:11

    Das könnte ich aber über das hier lösen:

    Function GUICtrlCreateTab

    Pro Tab 15 Zeilen.

    Aber wie löse ich das Array Problem?

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™