Beiträge von MojoeB

    Hallo zusammen,

    ich benötige mal wieder eure Hilfe :)

    Ich möchte gerne eine Tabelle anlegen lassen.

    Das heißt, ich lese Inputboxen aus, & verarbeite dies in einer Datei.


    bsp. erstens: Eine Akte wird entnommen.

    Die Akte sowie dazugehöriges wird mit einem Barcode Scanner abgescannt.
    Dieser überträgt die Zahlen und begriffe in die Input boxen.

    Durch bestätigen wird eine Datei erstellt. bzw.

    wenn die Datei existiert soll diese gefüllt werden.

    Mit folgendem Inhalt :

    Inhalt der erstellten *txt

    Code
                                   <Data><STATUS>nicht im Fach</STATUS><DATUM> $datum </DATUM><UHRZEIT> $uhrzeit </UHRZEIT><ART> Name-Akte </ART><SBO>alteSeriennummer</SBO><SBN> bleibt leer </SBN><LStatus>NOT</LStatus></Data>



    zweitens : Die Akte wurde entnommen, die Zentrale bekommt eine Pusch Nachricht.(von einem anderen script die die erstellte datei überwacht.)


    die zentrale trägt alteSeriennummer ins system ein.Nun möchte ich die Datei verändern lassen.


    von <LStatus>NOT</LStatus> soll nun nach dem bestätigen in <LStatus>YES</LStatus>,


    umgetragen werden.



    drittens : die Akte ist zurück, nun soll <STATUS>‘zurück im fach‘</STATUS>


    & <SBN>‘neueSeriennummer‘</SBN> geändert werde und das wieder zu <LStatus>Wait</LStatus> bis die neue nummer von der zentrale wieder bestätigt wurde.


    Wie mache ich das? als Anhaltspunkt sind <STATUS>nicht im Fach</STATUS> & <SBN></SBN> leer sowie der Aktenname <ART> Name-Akte </ART>.

    Ich habe etwas mit StringRegExpReplace rumgetestest bin aber zu keinem vernünftigem Ergebnis gekommen. Die enddatei soll natürlich immer weiter geführt werden wie ein Logbuch.
    Hier mal meine dateien die ich bisher habe, wenn ihr es ausführt habt ihr vielleicht ein besseres Bild davon was ich machen will.

    Die rumexperimentation mit StringRegExpReplace habe ich mal rausgenommen um euch die übersicht zu wahren. bisher läuft nur die GUI die Txt datei muss man selber erstellen um es zu testen.
    Da ich noch nicht weiß ob genau so die Enddatei aufgebaut wird wie es grad der fall ist oder noch was hinzukommtsteht noch aus

    Ihr würdes mir schon helfen wenn ich das Array durch gehe, darin den selben akten namen finde prüfe auf welchem status <STATUS></STATUS> & <LStatus></LStatus> steht und diese werte dann ensprechend mit

    StringRegExpReplace ändern kann ohne die anderen zeilen anzutasten oder es komplett neu in die datei zu schreiben.


    Ich danke schon mal für eure weißheiten :)


    #include : 1.au3


    Script Datei 2.au3:

    im Haupt Script werden die variablen genutzt noch nicht alle aber das ändere ich noch. :)



    jain hat es schon, im hauptscript schleife habe ich
    in While schleife stehen.
    ________START_________()



    & in dem such include halt

    _Suche_finde_() kommt davor halt weil seite 1 ja schon aufgerufen ist und schon durchsucht werden kann.

    ____suche__starten___() ich weiß einfach nicht wie ich es benennen sollte ^^


    Edit;

    SciTE4AutoIt benutze ich, auf arbeit nur eine ältere Version von SciTE4AutoIt3_Portable.zip kann jetzt gard aber nicht sagen welche genau.

    ISN Studio kann ich nicht benutzen auf Arbeit, aber hatte es getestet ist nicht schlecht aber beim rumtesten ist mir das Programm zu oft abgestürzt.

    Wahrscheinlich hätte ich da von Grund auf neu Coden müssen, direkt in ISN Studio damit diese abstürze nicht geschehen.


    Hay ich wollte euch mal das Ergebnis zeigen, hatte mehre Varianten, und am ende muss ich die Zahlen Garnichts trennen weil diese schon in einem Array gespeichert werden :).


    Das ist mein Ergebnis, es kann sein das #includes fehlen, da ich diese in meinem Hauptscript habe.


    Das Script geht nun alle Seitenzahlen durch bis es ein Schlüsselwort gefunden hat dann schaltet sich dann auf

    Code
    $oGefunden = 1

    Dies bewirkt in der hauptschleife des hausscriptes das die schleife beendet wird.

    Lasst euch nicht von den Kommentaren stören. Es kann auch etwas falsch aufgefasst sein.



    Freut mich das mit der Analogen Uhr hab ich auch nicht gewusst, das es da schon eine gibt^^.

    Da du aber im Autoit Forum gefragt hast habe dir einen Lösungsansatz zusammen mit Autoit mitgegeben. ;)

    dann mach das mit OBS ->


    OBS starten (OBS Studio)

    ist kostenlos.


    Quelle -> Viedoaufnahmegerät ->deine Webcam


    Dann kannst du deine Webcam auf die gewünschte Größe ziehen und neben hin ein Text GDI+2 -> Textdatei in meinem beispiel : Uhrzeit.txt


    In Zoom musst du dann halt OBS Virtual Camera wählen. Dann hast du dein Uhrzeit effekt beim Camen/Konferenzen was auch immer.


    schließen ohne speichern?


    ProcessClose('EXCEL.EXE')


    Das Killt den Prozess, Nachteil es werden alle deine offenen EXCEL Tabellen geschlossen.


    @Edit :

    Du könntest auch das Fenster suchen Class: NUIDialog | "Speichern: Ja/nein".


    Wenn da kein Controlclick funktioniert, dann mach es mit (MouseCoordMode 2 oder CaretCoordMode 2)

    block deine Maus & Tastatur mit BlockInput ( 1 ) & nehme die Fenster Koordinaten, von Class: NUIDialog & bestätige nicht speichern mit (Mousemove & Mouseclick).


    Danach natürlich BlockInput wieder auf ( 0 ) setzen.

    Ich habe es fast mit dem durchklicken der Zahlen wo ich das Problem hatte in einem anderem Thread, mir fehlt nur noch ein Teil den Loop zu beendet wenn etwas bestimmtes eintritt.


    Zahlen trennen - Hilfe & Unterstützung - AutoIt.de - Das deutschsprachige Forum.


    So Lese ich jedes mal wenn das Ende erreicht ist die Zahlen erneut aus :



    Code
    $oSeitenZahl2 = _IETableGetCollection($oIE, 4)
    If @Error then _WriteLog('Fehler'&'- '&'Es ist ein Fehler aufgetretten @_IETableWriteToArray');MSGBOX(5, 'Fehler', 'Es ist ein Fehler aufgetretten @_IETableGetCollection')
    $aSeitenZahlData2 = _IETableWriteToArray($oSeitenZahl2, True)
    If @Error then   _WriteLog('Fehler'&'- '&'Es ist ein Fehler aufgetretten @_IETableWriteToArray')



    Kann ich mit _Arrayadd col 22 mit einem anderen Wert hinzufügen wenn Row 0, col 22 nicht existiert?


    Ich habe versucht mit _Arrayadd($aSeitenZahlData2, 'test')

    aber dann bekomm ich nur Row 1, Col 0 = 'test'

    Ich hab auch andere Kombinationen versucht lade aber irgendwie immer wieder auf Row1 Col 0.

    Ich denke ich könnte das Problem so lösen wenn ich in jedem Durchlauf einfach Row 0 Col 22 oder col 23 durch arrayadd erstellen lasse.
    & wenn dann der Wert in Col 22 abfrage & es dann der wert ist den man selbst hinzugefügt hat dann beende den loop.


    kann mir einer sagen wie genau ich Row0 Col 22 hinzufüge wenn es nicht existiert?


    Ergebnisse mit _Arraydisplay :


    So sieht es aus wenn es bei 0 bzw einer zehner zahl endet. ich kann dann meinen Loop nicht beenden weil Col 22 nicht abgefragt werden kann. Somit lande ich entweder bei einem error

    oder in der dauerschleife

    *ich habe momentan noch die Dauerschleife drin.^^




    So sieht es aus wenn es nach der zehner zahl noch weiter geht da existiert dann col 22.






    Ich nehme verschiedene Abzweigungen & die dann andere Funktionen auslösen damit ich bis zur Letzen Seite komme das klappt auch aber wenn das eintrifft wie in Bild 1 komme ich immer wieder in die schleife zurück und bin im endlos loop.


    Wäre super nett wenn Ihr für mich einen guten Rat habt, wie das genau funktionieren könnte. :)


    _ArrayAdd <- wie funktioniert das genau zusammen mit -> _IETableWritetoArray


    Mfg.

    Mojoe

    eher unrealistisch


    du könntest Office installieren. Dann schauen wie groß das Ordner ist.


    Praxis 1: Wenn du weißt wie groß der Ordner nach der Installation ist. Kannst während der silent Installation den Ordner auf diese größe überprüfen lassen und somit deine progressbar aufbauen.


    Praxis 2: Du findest heraus wo die temporären Dateien beim Installieren hin kopiert werden & dort die die MB, GB überprüfen wie groß der Ordner ist & dadurch deine progressbar steigen lassen.


    Aber was das für ein Nutzen dann haben sollte, ergibt sich mir nicht.


    Sry Google Translator^^ :

    Ja ich hatte mehr Varianten, aber alle nicht erfolgreich, bzw. am ende lief es immer darauf hinnaus das er nach 21 wieder auf 20 zurück ist.

    do you mean so ? :)

    @  Moombas


    ja du hast recht, es liegt an diesem Element |...|.


    Ich habe das Problem leider immer noch nicht gelöst. Leider habe ich grad nicht den Quellcode hier.


    ich kann zwar die links auf der Webseite herausfinden und dann den Index durch gehen. aber anscheint verändert sich der Index.


    Ich kann mir das Array auch irgendwie nicht anzeigen lassen. ich habe versucht mit dem autoit Tool IE_Builder2.0.1 gegenzuprüfen.


    Wenn ich mich jetzt nicht Irre war der letzte Index immer auf 63 & das war das letzte |...| auf der Seite & wird im Link auf bsp mit der 21 .. 41 angezeigt.


    Erklärung :

    Die reihenfolge ist so : 1 | 2 |3 bis 20 | ... |

    Sobald Index |...| gedrückt würd, geht die neue Seite auf |...|21|22|23 bis 40|...|


    Das klappt auch aber, das Problem ist nicht direkt das durchgehen mit einer schleife es ist das nach 20 ... gedrückt wird aber der nächste index wieder ... ist, weil 21 gedrückt ist & er somit wieder auf die ... drückt & wieder auf auf die Seite 1 - 20 zurückspringt.


    Idee 1 :

    _IEClickbytext For schleif 1-500

    Wenn @error dann _IEClickbytext($ie, '...')


    Idee 2

    Wenn @error dann _IEclickbyindex ($ie, 63, 1)


    Verschiedene Szenarien wurden beim rumtesten beobachtet:

    1. entweder findet er nicht den IEindex 63

    2. oder er klickt auf den falschen Link manchmal aufs Impressum, manchmal wieder zurück zu Seite 1 - 20



    & ich habe versucht mit _IENavigate zum Seiten link zu navigieren geht leider auch nicht da der link so aussieht : javascript: .... ..... ... ('....$page21') | ich weiß grad nicht genau wie der link heißt er ist auf jeden fall so aufgebaut.



    quellcode nur als beispiel für das sammeln der links.

    Du hast vollkommend recht. :)


    & quasi hast du meine Frage beantwortet, ich habe jetzt eine Lösung gefunden.



    Ich habe es so gelöst :



    Die einzelnen Seitenzahlen auslesen & mit IF die Bedingung gesetzt wenn = '...' dann von



    code davor :

    Ich habe erstmal _ArraySuche_ rausgenommen.

    Muss da muss ich noch schauen wie ich das hinbekomme das es auch richtig funktioniert.


    Dann die Funktion die Funktion zum auslesen geändert & zusammengefasst.


    Ergebnis :

    hatte das Fenster schon mega lange offen.. deswegen die durchgestrichenen Lienen

    Ich dachte ich hätte es gelöst und wollte grad das Ergebnis mitteilen dann hatte ich nochmal getestet & gemerkt das ich nur bis Seite 39 komme, egal wie ich ändere ich denke es liegt an UBound($aIEbodyIndexSuche)

    weil wenn er bei 1 oder 0 ankommt ist ja dann ist ja Schluss.


    Dennoch danke für eure Hilfsbereitschaft.


    ich werde morgen mal mit For & DO schleifen rumspielen keine Ahnung ob man die ineinander laufen lassen kann.


    Ich setze das Thema mal auf beendet, falls ich nicht weiter komme mache ich nochmal ein Thread auf. :)

    @Musashi

    |Danke hab´s mir mal angesehen, das ist leider nicht das was ich brauche oder falls doch weiß ich nicht ich das damit verknüpfen soll soll ich hab noch nicht ganz durchgeblickt ... :Face:mein Problem ist eher das nach 20 ein |...| kommt.


    es ist glaub ich nicht ganz das was ich brauche, ich habe meine Start frage völlig falsch gestellt, aber auf Grund dessen da ich noch eine andere funktionsweiße verfolgt habe.


    Nun ist es so ich ich haberausgefunden wie ich den Index des IE durchgehen kann, bzw. vorher auslesen & dann clickbytext mit einer schiefe durchlaufen lassen kann


    Ich hatte mehrere Möglichkeiten.

    Ich hab noch eine Idee aber ich geh nun schlafen.

    melde mich morgen wieder


    Trotzdem danke für den Hilfe versuch.


    Das Problem ist nur noch die Zeichen |...|...| .


    Sry ich bin zu müde ^^ ich schreibe morgen wieder.

    So ich habe es leider nicht mehr geschafft, aber nun eine abgeänderte Version Basierend auf der Demo Page.


    Da ich mit einer anderen Datei Ordner Struktur & manche Variablen, erstellen lasse, stehen für dieses Beispiel alle Variabel im Skript voll ausgeschrieben.



    Es wird nur die Demo Seite gezeigt. Damit Ihr sehen könnt was ich vor habe.



    Um das laufen zu lassen müssen folgende dinge erfüllt werden :

    - Ordnerstruktur @Scriptdir \Datensatz

    @Scriptdir \BS.ini

    @Scriptdir \Datensatz\DB\DB.lvdb

    @Scriptdir \Datensatz\TXT\CarsucheNach.txt



    Inhalt :

    BS.ini

    Code
    [tel]
    =

    DB. lvdb

    Code
    <data>MKK-PT 62 (4916090807759)</data>=<SIM>4916090807759</SIM><TYP> (4916090807759)</TYP><BS>tel</BS>
    <data>Service Vito (4916092178795)</data>=<SIM>4916092178795</SIM><TYP>to (4916092178795)</TYP><BS>tel</BS>
    <data>Test AS</data>=<SIM>4915115152326</SIM><TYP></TYP><BS>tel</BS>


    CarsucheNach.txt

    Code
    Suchstring1|suchsting2|[Time stamp] (60000): 11.03.2020 15:01:19|


    au3 quelle :



    Das Login ist schon eingestellt, einfach auf LOGIN klicken.

    Erklärung :

    1 . LOGIN drücken.

    2. das Datum ist extra auf 2016 gestellt damit wir Testdaten zur Verfügung haben.

    3. Menü-Taste Datenbank laden : die selbst erstellte *lvdb datei auswählen.

    4. Dann Test AS auswählen (dort sind die meisten TEST daten vorhanden.

    Button BT4 klicken.


    Dann kann man sehen was ich vor habe.

    Funktionen um die es geht :

    _btn4_()

    _1_2_3_($sPosSplitt)

    _ArraySuche_



    Ich suche auf der aufgerufenen Seite mit der Datei : CARsucheNach.txt, nach Strings, die in der Datei mit | getrennt sind. auf dem IEhtml/Bodytext (leider funktioniert das so im oberen Beispiel nicht.(das Suchen)


    Man kann beobachten das die Zahlen oben & unten gelesen werden & dann geklickt. Das Problem bei 20 Seiten kommt '...' wenn '...' geklickt ist kommt man zur Seite 21 aber vor der 21 steht dann wieder '...' & das wird dann wieder angeklickt anstatt 22.


    Einfach mal ausführen dann kann man sehen was ich meine.

    Das ist ja nur eine Beispielseite, bei uns im Netz, suchen wir manchmal nach bestimmten Wörtern, dort kann es auch vorkommen das 1 Fahrzeug mehrere tausend Seiten am Tag hat.

    Deshalb wollte ich fragen wie man die Zahlen Trennt, weil ich erst den Quelltext geparst in einzelne Array hatte und dann 1234567891011121314151617181920... bei raus kam.



    Ich hoffe ich muss kein neuen Thread aufmachen dafür .


    Mit freundlichen Grüßen

    Mojoe

    Ja da hast du recht, nachdem ich das abgeschickt hatte, dachte ich mir das so eine Frage kommt.



    ich bin grad auf dem Sprung ich werde die Frage mit Beispiel noch mal präzisieren, mit beispiel seite wo & wie das ganze geschehen soll.


    ich hoffe das ich es heute Abend noch schaffe.