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

Beiträge von MrB

  • StringRegExp Frage

    • MrB
    • 2. Mai 2011 um 21:34

    Ja, hast schon recht, in dem Post war´s falsch ausgedrückt. Zitier mich mal selber aus meiner genaueren Erklärung (Post 2 von mir)

    Zitat

    Und wenn alle Teile von $search in $text enthalten sind, egal in welcher Reihenfolge, dann soll das Pattern greifen.

    Aber hast schon recht. Asche auf mein Haupt ;)

    P.S.: Danke an alle. Denke mal ich kann mit der Lösung leben ;)

  • StringRegExp Frage

    • MrB
    • 2. Mai 2011 um 21:08

    Schon, aber mit StringRegExp lässt sich auch mehr verwirklichen (wenn ich das zumindestens richtig gelesen hab). Wenn man bei i2c´s Script z.B. den Suchstring "kein Welt" eingibt, ergibt sich ein Treffer für Welt.

    Klar und auch richtig aber nicht gewollt, da ja "kein" nicht beachtet wurde. Richtig wäre gewesen, dass kein Treffer angezeigt wird. Mal schauen, was man da noch machen kann

    P.S.: kleine Änderung und es läuft nach meinen Vorstellungen

    Spoiler anzeigen
    [autoit]

    #region - Timestamp
    ;2011-05-02 20:43:24
    #endregion - Timestamp

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

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <array.au3>
    Opt("GUIOnEventMode", 1)

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

    $sString = "Hallo Welt! Das ist ein Teststring"

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

    $Form1 = GUICreate("Form1", 307, 74, 228, 148)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
    $Input1 = GUICtrlCreateInput("Input1", 8, 8, 201, 21)
    $Button1 = GUICtrlCreateButton("Button1", 216, 8, 75, 25)
    GUICtrlSetOnEvent(-1, "_check")
    $Label1 = GUICtrlCreateLabel("Label1", 8, 40, 284, 17)
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func _check()
    Local $aResult[1] = [0]
    $aWords = StringSplit(GUICtrlRead($Input1), " ")
    For $i = 1 To $aWords[0]
    If StringInStr($sString, $aWords[$i]) Then
    _ArrayAdd($aResult, $aWords[$i])
    EndIf
    Next
    If UBound($aResult) >= UBound($aWords) Then ;<----- Änderung
    GUICtrlSetData($Label1, "Treffer für: " & StringTrimLeft(_ArrayToString($aResult), 2))
    Else
    GUICtrlSetData($Label1, "Keine Treffer")
    EndIf
    EndFunc ;==>_check

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

    Func _exit()
    Exit
    EndFunc ;==>_exit

    [/autoit]
  • StringRegExp Frage

    • MrB
    • 2. Mai 2011 um 20:55

    name22

    *grins* die Wörter, die von dem *peep* erstetzt werden, wollte ich nicht wirklich hier hin schreiben.

    mal ohne *peep*

    Spoiler anzeigen
    Zitat

    Ich weis, dass dazu schon X-Fragen gestellt wurden und auch das es ein Tut dazu gibt. Fakt ist der stark riechende Unrat und ich lieben uns einfach nicht und ich kapier den stark riechenden Unrat einfach nicht.

    Ich möchte nach Wörter in einem String suchen. Lass den Text einer Datei ein und man muss die zu suchenden Wörter dann in einer InputBox eingeben z.B. "irgendwas Funktion".

    Es soll also nach "irgendwas" und nach "Funktion" gesucht werden, ohne Groß/Kleinschreibung zu beachten und alles unter Flag=0 (Rückgabe 0 oder 1). Wenn beide Wörter, einzeln betrachtet, irgendwo in dem String gefunden werden, soll die Funktion greifen.

    Pls Hilfe mit dem stark riechenden Unrat

    Und jetzt mal ordentlich ;)

    Also ich hab irgendeinen beliebigen Text in einer Variablen ($text) abgelegt und habe in einer anderen Variable einen beliebigen Suchtext ($search) der aus mehreren Wörtern oder Zahlen bestehen kann und durch eine oder mehrere Leerzeichen getrennt ist. Und wenn alle Teile von $search in $text enthalten sind, egal in welcher Reihenfolge, dann soll das Pattern greifen.

    [autoit]

    $text = "Dies ist mein 113 Versuch, dass hier zu kapieren ^^"
    $search = "11" ;Ergebnis 0 (wäre schön muss aber nicht sein)
    $search = "113" ;Ergebnis 1
    $search = "dies hier mein" ;Ergebnis 1
    $search = "die ier ein" ;Ergebnis 0 (wäre schön muss aber nicht sein)

    [/autoit]

    Hoffe hab mich verständlich ausgedrückt

    @ i2c
    Jop, prinzipiell richtig

    i2c & BadBunny

    Hab nur ich das Gefühl, dass die Methode mit StringSplit/StringInString bei größeren Texten (15MB) doch recht langsam ist. Zusätzlich muss ich auch noch mehrere Dateien durchsuchen mit unbekannter Größe und da sollte doch StringRegExp schneller sein, oder täusche ich mich da ?

    LG
    MrB

  • StringRegExp Frage

    • MrB
    • 2. Mai 2011 um 20:15

    Moin zusammen,

    Ich weis, dass dazu schon X-Fragen gestellt wurden und auch das es ein Tut dazu gibt. Fakt ist der *peep* *peep* und ich lieben uns einfach nicht und ich kapier den *peep* einfach nicht.

    Ich möchte nach Wörter in einem String suchen. Les den Text einer Datei ein und man muss die zu suchenden Wörter dann in ene InputBox eingeben z.B. "*peep* Funktion".

    Es soll also nach "*peep*" und nach "Funktion" gesucht werden, ohne Groß/Kleinschreibung zu beachten und alles unter Flag=0 (Rückgabe 0 oder 1). Wenn beide Wörter, einzeln betrachtet, irgendwo in dem String gefunden werden, soll die Funktion greifen.

    Pls Hilfe mit dem *peep*

    LG
    MrB

    P.S.: Genug ge*peept* grr... :D

  • RichEdit Frage

    • MrB
    • 1. Mai 2011 um 11:51

    Sonst keiner ne Idee??
    Wie gesagt, so wie unten wird nur der erste Text angezeigt.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiRichEdit.au3>

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

    $Form1 = GUICreate("Form1", 625, 443, 192, 124)
    $hRichEdit = _GUICtrlRichEdit_Create($Form1, "", 5, 5,500 , 300, BitOR($ES_READONLY, $ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    GUISetState(@SW_SHOW)

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

    $file1 = FileOpen(@ScriptDir & "\test1.txt",0)
    $file2 = FileOpen(@ScriptDir & "\test2.txt", 0)

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

    $data1 = FileRead($file1)
    $data1 = StringReplace($data1,"#_",@CRLF)
    $data1 = StringReplace($data1,"-END-","")
    $data2 = FileRead($file2)
    $data2 = StringReplace($data2,"#_",@CRLF)
    $data2 = StringReplace($data2,"-END-","")
    FileClose($file1)
    FileClose($file2)

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

    _GUICtrlRichEdit_SetText($hRichEdit,$data1 & $data2)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]

    P.S.: Habs dann selber hinbeokmmen. Wer lesen kann ist klar im Vorteil

  • RichEdit Frage

    • MrB
    • 30. April 2011 um 16:48

    Also wenn ich das so mache wird einfach nur der Quelltext der Formatierung eines RichEdits in einem Edit angezeigt.
    Stehen sollte da ja nur in der ersten Zeile "test1" und in der zweiten Zeile "test2" beides mittig ausgerichtet und glaub in Schriftgröße 10

  • RichEdit Frage

    • MrB
    • 30. April 2011 um 09:25

    Moin Douky,

    Ja, klar das geht. Nur ist mir dann die Formatierung des Textes abhanden gekommen.

  • RichEdit Frage

    • MrB
    • 29. April 2011 um 22:03

    Moin,

    Hab schon wieder ein Prob.

    Ich hab den Inhalt von 2 RichEdits als Datei (s. Anhang) vorliegen und möchte den Inhalt gerne zusammenführen und wieder in einem RichEdit samt Formatierung anzeigen.

    Hat da einer eine Idee? Hab da noch nicht mal einen Ansatz.

    LG
    MrB

    P.S.: #_ wird durch @CRLF ersetzt und -END- fällt komplett weg

    Dateien

    test2.txt 179 Byte – 279 Downloads
  • SQLite Abfrage erstellen

    • MrB
    • 29. April 2011 um 18:20

    Thema Arrays ist erledigt!


    Nur bekomm ich nach dem Compilieren immer eine Fehlermeldung von _SQLite_Open und zwar:


    @error = 1
    @extendend = 21


    21 heist doch Library used incorrectly oder? Wenn ja, dann versteh ichs nicht, da es die selbe DB ist (nur kopiert in einen anderen Ordner), wie vorher. Die Pfade stimmen alle.


    Einer eine Idee?

    Gelöst: #include<SQLite.dll.au3> muss includiert sein, dann gehts auch nachdem kompilieren

  • SQLite Abfrage erstellen

    • MrB
    • 28. April 2011 um 23:02

    *grins* Schade ^^

    Jetzt wird deine Vorstellungskraft gefordert, welche an meinem Erklärungsversuch scheitern wird :

    Stell dir mal folgendes vor

    [autoit]

    $array[250][15]

    [/autoit]


    und den Ergebnisarray ($aResult) aus der SQL Abfrage.
    Ich weis, dass die Werte aus $aResult Spalte a und b irgendwo in $array[?][2] stehen. Allerdings mit einem Zeichen (_) dazwischen (150_300). Jetzt möchte ich gerne den Wert aus $aResult Spalte c an der richtigen Stelle in $array[?][14] einfügen.

    Komme da nur nicht zu einer vernünftigen Lösung

    P.S.: Die Methode mit der For/Next-Schleife (alles miteinander vergleichen) hab ich natürlich. Suche nur etwas nicht ganz so Leistungsintensives

  • SQLite Abfrage erstellen

    • MrB
    • 28. April 2011 um 22:48

    Der Hinweis hat doch schon gereicht :thumbup:

    Hab´s eben in INTEGER geändert und schwups, es passt.

    Wenn du jetzt noch Ahnung von Arrays bzw. dem Arbeiten damit hast, würd ich mir wünschen du wärst eine Frau :love:

  • SQLite Abfrage erstellen

    • MrB
    • 28. April 2011 um 22:32

    Oh Mann, so einfach....

    Leider nur wenn man´s weis ;)

    Wenn du mir jetzt noch sagst warum folgendes nicht eindeutig ist, sondern immer nur die Spalten einzeln betrachtet werden.

    [autoit]

    $iRval = _SQLite_GetTable2d(-1, 'SELECT a, b, c FROM "test" where "a" > "153" and "a" < "173" and "b" > "475" and "b" < "491";', $aResult, $iRows, $iColumns)

    [/autoit]

    Wie können solche Ergebnisse raus kommen?
    Spalte a=49 Spalte b=476 bzw. Spalte a=154 Spalte b=49

    Hoffe auch, dass es die letzte Frage ist.

    LG
    MrB

  • SQLite Abfrage erstellen

    • MrB
    • 28. April 2011 um 20:40

    Thx, das geht schneller ^^

    Nur geht mir da die Zuordnung flöten. Ich müsste als Ausgabe diese Form haben : Spalte1_Spalte2=Spalte3 oder mehr Infos im Array ....

    Irgendwie halt eine Zuordnung zu Spalte 1 und 2.

  • SQLite Abfrage erstellen

    • MrB
    • 28. April 2011 um 20:07

    Uuups, jetzt merk ich mal wieder das ich nur ne 1700 Leitung mit passendem Upload (max. 17KB/s) hab. Datt dauert....

    Die Datei findest du hier.

    Zwar kein FileHoster, aber so gehts auch ^^

  • SQLite Abfrage erstellen

    • MrB
    • 28. April 2011 um 19:43

    Moin zusammen,

    Ich setz mich im Mom mit dem Thema SQLite auseinander und hab da das Problem, dass ich keine sinnvolle Möglichkeit finde Daten auszulesen. Im Mom mach ich es so:

    Spoiler anzeigen
    [autoit]


    #include <SQLite.au3>

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

    $counter = 0
    Local $aResult, $iRows, $iColumns, $iRval, $test

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

    _SQLite_Startup()
    _SQLite_Open(@ScriptDir & "\test2.db")
    If @error Then MsgBox(0, "SQL Open", @error)

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

    For $i = 600 To 770
    ToolTip($i)
    $iRval = _SQLite_GetTable(-1, 'SELECT "c" FROM "test" where "a" like "200" and "b" like "' & $i & '";', $aResult, $iRows, $iColumns)

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

    If $iRval = $SQLITE_OK And UBound($aResult) >= 3 Then
    $test &= $aResult[2] & @CRLF
    Else
    $counter = $counter + 1
    EndIf

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

    Next

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

    MsgBox(0, "SQLite " & $counter, "Durch Abfrage ermittelte Daten: " & @CR & @CR & $test)

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

    _SQLite_Close(@ScriptDir & "\test2.db")
    _SQLite_Shutdown()

    [/autoit]

    So erstell ich ja immer einen Array und das will ich ja eigentlich nicht. Fakt ist, ich steh da voll auf´m Schlauch. Dauert außerdem ewig die Methode mit dem Array.

    Kann mir einer bitte mal sagen, wie ich eine einfache Abfrage (s. Script) mache ?

    Datenbank kann ich leider nicht hochladen, da größer wie 1,02MB.

    LG
    MrB

  • schnellste Möglichkeit gesucht, Daten in ein Array einzulesen

    • MrB
    • 27. April 2011 um 17:38

    Danke dir Magnus für deine Hilfe !

    Hab da nur ein paar kleine Fragen :D

    1. Der Wert 16-133 ist als String anzusehen und sollte als ganzes eingetragen werden. Klar könnte ich den splitten, würde nur gern wissen, ob es einfach ein Mißverständnis zwischen uns beiden ist oder ob da ein tieferer Sinn hinter steckt.

    2. kennst ne Seite, wo ich was zum Thema SQL lesen kann. Mit nichts was erreichen ist irgendwie frustrierend ^^

    3. wie funktioniert die Abfrage genau bzw. wie bekomme ich den Wert in eine Variable. So gehts ja nicht.

    [autoit]

    $data = _SQLite_Exec(-1,"SELECT 3 FROM test WHERE 2 LIKE 100|100")

    [/autoit]

    4. Fertig

    LG
    Balti

  • schnellste Möglichkeit gesucht, Daten in ein Array einzulesen

    • MrB
    • 27. April 2011 um 08:46

    peethebee

    Ausprobiert hatte ich´s schon. Dachte man könnte das aus der Schreibweise entnehmen.

    Magnus
    Upps, dachte das hätte ich gemacht. Kannst mir das mal näher erklären was du meinst bzw. ein Beispiel geben? Wie gesagt SQL und Ich kennen uns noch nicht lange.

    LG
    Balti

  • schnellste Möglichkeit gesucht, Daten in ein Array einzulesen

    • MrB
    • 26. April 2011 um 22:17

    Einfaches Ja oder Nein reicht auch !! :S

  • schnellste Möglichkeit gesucht, Daten in ein Array einzulesen

    • MrB
    • 25. April 2011 um 18:05

    Sorry,

    Durch Ostern und Besuch zu nichts gekommen.

    Also, die DB hab ich wie folgt erstellt :

    Spoiler anzeigen
    [autoit]


    #include <SQLite.au3>
    #include <SQLite.dll.au3>

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

    $counter = 0
    Local $hQuery, $aRow, $sMsg
    _SQLite_Startup()

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

    _SQLite_Open(@ScriptDir & "\test.db") ; Öffne :memory: Datenbank
    _SQLite_Exec(-1, "CREATE TABLE test (1,2,3);") ; Erzeugt Tabelle
    For $i = 0 To 1000
    ToolTip($i)
    For $i2 = 0 To 1000
    $ini_read = IniRead(@ScriptDir & "\test\test2\test.ini", "test", $i & "|" & $i2, "_")
    _SQLite_Exec(-1, "INSERT INTO test VALUES ('" & $counter & "','" & $i & "|" & $i2 & "','" & $ini_read & "');") ; Fügt Daten ein
    $counter = $counter + 1
    Next
    Next
    _SQLite_Close()
    _SQLite_Shutdown()

    [/autoit]

    Hoffe ist richtig so.

    Eine Abfrage mach ich grad einfach mal so, nur um zu sehen, wie die Geschwindigkeit ist.

    Spoiler anzeigen
    [autoit]


    #include <SQLite.au3>
    #include <SQLite.dll.au3>

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

    $counter = 0
    Local $hQuery, $aRow, $sMsg

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

    _SQLite_Startup()
    _SQLite_Open(@ScriptDir & "\test.db") ; Öffne :memory: Datenbank
    _SQLite_Query(-1, "SELECT 3 FROM test ORDER BY 1;", $hQuery)
    Do
    _SQLite_FetchData($hQuery, $aRow)
    $sMsg &= $aRow[0] & @CRLF
    $counter = $counter + 1
    ToolTip($counter)
    Until $counter = 170

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

    MsgBox(0, "SQLite " & $counter, "Durch Abfrage ermittelte Daten: " & @CR & @CR & $sMsg)
    _SQLite_Close(@ScriptDir & "\test.db")
    _SQLite_Shutdown()

    [/autoit]

    Frage: Ist das so richtig?

    LG
    Balti

    P.S.: Frohe Ostern an alle !

  • schnellste Möglichkeit gesucht, Daten in ein Array einzulesen

    • MrB
    • 20. April 2011 um 18:25

    Also mit IniRead brauche ich ca. 3-4 Sek um alle 170 Datensätze zu erstellen. Ich denke mal, dass es ja daran liegt, dass in der *.ini ja, obwohl ich nur 170 Datensätze brauche, ca. 100000 Zeilen drin sind. Die müssen ja alle durchsucht werden, bis der passende Datensatz gefunden wurde.

    Hab mal ein bisschen im SQLite Bereich gestöbert und würde gern mal bestätigt haben, ob ich da alles richtig verstanden habe.

    Als erstes müsste ich doch die Datensätze (1000000 in Worten einemillionen^^) in eine SQL Datenbankdatei importieren und danach dann mit Autoit und den passenden Befehlen auf die Datenbankdatei zugreifen.

    Frage 1: Ist das wirklich erheblich schneller als IniRead
    Frage 2: versteh ich das richtig, das keine zusätzliche Software benötigt wird?

    Hoffe nerve nicht zu stark :S . Wenn beide Fragen mit Ja beantwortet werden bin auch "erstmal" wieder weg.

    LG
    Balti

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™