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

Beiträge von schandor

  • mein erstes Projekt

    • schandor
    • 2. März 2007 um 11:24

    ah, ich glaub jetzt hab ich es verstanden, eins ist mir aber immer noch unklar,

    warum muß denn der status in $arFile[$i][1] auf 0 gesetzt werden,
    welchen wert hätte denn das element wenn ich das nicht tu,
    NULL ?? oder "" ?? also leer

    das könnte dann bei der abfrage dann doch so aussehen

    If $arFiles[$i][1] <> 1 Then FileCopy($S_Pa...........

    also wenn das so wäre, hätte ich es ja verstanden, oder nicht ??


    Gruß

  • mein erstes Projekt

    • schandor
    • 1. März 2007 um 23:18

    ui ui ui, da hat mich einer direkt an meinem wunden punkt erwischt "Arrays"

    mit den (sagen wir mal) normalen arrays komme ich auch nur so halbwegs klar,
    aber ich versuchs mal.

    wenn ich richtig verstanden habe setzte ich erst alle dateien in ein array

    $arFiles[1][0] = "datei1.ini"
    $arFiles[2][0] = "datei2.ini"
    $arFiles[3][0] = "datei3.ini"
    usw.

    und jetzt würde ich so weiter machen:

    if Not FileExists( $local_pfad & "\" & $arFiles[1]) Then
    $arFiles[1][0]
    else
    $arFiles[1][1]

    aber das sieht so kacke aus, das kannst du so nicht gemeint haben, da fehlt mir einfach das wissen, oder ich denke in die falsche richtung. Ich schau mich nochmal hier im board um, ich finde bestimmt etwas mit arrays womit ich was üben kann, ich muß/möchte es ja auch verstehen können was ich da mache.

    Besten dank erstmal

    PS. ich denke man kann an meinem script erkenne das ich absoluter Anfänger bin.

  • mein erstes Projekt

    • schandor
    • 1. März 2007 um 21:13

    Hallo zusammen,

    ich würde gerne mein kleines Projekt verbessern bzw. effizienter gestallten
    und bitte euch hiermit um unterstützung.

    Ich sag erstmal worum es geht.

    Mit einer Installationsroutine die mit InnoSetup erstellt wurde, werden
    mehrere Dateien inkl. uninstall installiert.
    Der Installationspfad wird in eine .ini Datei ins @WindowsDir geschrieben.
    Installiert werden folgende Dateien.
    eine MS Access.mdb (für Backend + Frontend betrieb)
    eine mousehook.dll (Installpfad) (mouserad ein/aus für mdb file)
    eine pfad.ini (@WindowsDir)
    eine version.ini (installpfad)
    eine readme.txt (Installpfad)
    eine hourglass.jpg (Installpfad) für GuiCtrlCreatePic
    und natürlich eine AutoIt_Projekt.exe (Installpfad)

    1. AutoIt_Projekt.exe prüft ob DriveStatus( "S:\" ) vorhanden, ansonsten
    wird DriveMapAdd("S:"... erstellt
    2. prüft ob bestimmte Dateien im InstallPfad vorhanden sind, wenn nicht werden ALLE von LW S: kopiert.
    3. vergleicht inhalt von version.ini (local) mit version.ini (Netzwerk LW S: )
    wenn gleich wird die access.mdb gestartet, ansonsten wird von
    Netzwerk LW S: kopiert.

    ZIEL:
    Punkt 2, nur die Datei kopieren die fehlt und nicht alle
    Punkt 3, die Version (Local) sollte irgendwie aus der Windows-registrierung gelesen, bzw geschrieben werden.

    Der Installationspfad sollte ebenfalls aus der Windows-Registrierung gelesen werden.

    Puh, garnicht so einfach das zu beschreiben.
    Achso, bei der Version handelt es sich um eine Änderung in der MDB Datei,
    die der User dann per Update (filecopy) von LW S: kopiert.

    Ich habe jetzt nicht alles Haarklein beschrieben, ihr werdet bestimmt lachen wenn ihr das script seht, es ist immerhin mein erstes und alles von hier
    zusammengesucht.

    hier mal das script:

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

    #include <Process.au3>
    #include <GUIConstants.au3>

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

    If WinExists("TOP-Check-DataBase") Then
    WinActivate("TOP-Check-DataBase", "")
    Else
    $local_pfad = FileReadLine(@WindowsDir&"\Chk_DB_local.ini")
    $var = DriveStatus( "S:\" )
    if $var = "INVALID" then
    If Not IsDeclared("iMsgBoxAnswer") Then Dim $iMsgBoxAnswer
    $iMsgBoxAnswer = MsgBox(36,"Laufwerk S:","Laufwerk S: steht nicht zur Verfügung." & @CRLF & "Soll eine Verbindung zu Laufwerk S: hergestellt werden ?")
    Select
    Case $iMsgBoxAnswer = 6 ;Yes
    DriveMapAdd("S:", "\\xx.xxx.xxx.xx\top", 0, @UserName, "Name")
    Case $iMsgBoxAnswer = 7 ;No
    Exit
    EndSelect
    EndIf

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

    $notexists_files = 0

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

    if Not FileExists( $local_pfad & "\version.ini") Then
    $notexists_files = 1
    EndIf
    If Not FileExists( $local_pfad & "\Check_DataBase.mdb") Then
    $notexists_files = 1
    EndIf
    if Not FileExists( $local_pfad & "\Readme.txt") Then
    $notexists_files = 1
    EndIf
    If Not FileExists( $local_pfad & "\MouseHook.dll") Then
    $notexists_files = 1
    EndIf
    If Not FileExists( $local_pfad & "\hourglass.jpg") Then
    $notexists_files = 1
    EndIf

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

    if $notexists_files > 0 Then

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

    If Not IsDeclared("iMsgBoxAnswer") Then Dim $iMsgBoxAnswer
    $iMsgBoxAnswer = MsgBox(36,"missing File..","Es fehlen Dateien im Installationsordner." & @CRLF & "Sollen die Dateien von LW S: kopiert werden ?")
    Select
    Case $iMsgBoxAnswer = 6 ;Yes

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

    $SPLASH = GUICreate("Check-Database automation",250,140,-1,-1,1)
    GUICtrlCreateLabel("FileCopy wird durchgeführt...", 15, 40)
    GUISetState()
    GuiCtrlCreatePic($local_pfad & "\hourglass.jpg",200,35, 13,22)
    GUICtrlCreateLabel("TOP-Check-DataBase wird gestartet...", 15, 65)

    FileCopy("S:\TOP\Check_DataBase\Programme\Check_DataBase.mdb", $local_pfad & "\Check_DataBase.mdb", 1)
    FileCopy("S:\TOP\Check_DataBase\Programme\version.ini", $local_pfad & "\version.ini", 1)
    FileCopy("S:\TOP\Check_DataBase\Programme\Readme.txt", $local_pfad & "\Readme.txt", 1)
    FileCopy("S:\TOP\Check_DataBase\Programme\MouseHook.dll", $local_pfad & "\MouseHook.dll", 1)
    FileCopy("S:\TOP\Check_DataBase\Programme\hourglass.jpg", $local_pfad & "\hourglass.jpg", 1)

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

    GUICtrlCreateLabel("",200,35,13,22)
    GUICtrlCreateLabel("OK", 200, 40)
    GUICtrlSetColor(-1,0xff0000)
    GuiCtrlCreatePic($local_pfad & "\hourglass.jpg",200,60, 13,22)
    GUICtrlCreateLabel("",200,60,13,22)
    GUICtrlCreateLabel("OK", 200, 65)
    GUICtrlSetColor(-1,0xff0000)
    GUISetFont (12,400)
    GUICtrlCreateLabel("Complete", 85, 80,-1,-1,-1,-1)
    GUICtrlSetColor(-1,0xff0000)
    GUIDelete($SPLASH)
    ;Sleep(5000)
    Case $iMsgBoxAnswer = 7 ;No
    GUIDelete()
    Exit
    EndSelect
    EndIf

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

    $abf_g = FileReadLine("S:\TOP\Check_DataBase\Programme\version.ini")
    $abf_l = FileReadLine( $local_pfad & "\version.ini")

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

    if $abf_l <> $abf_g Then
    GUICreate("Update Check-DataBase", 310, 130,-1,-1,1)
    $Label = GUICtrlCreateLabel("Aktuelle Version " & $abf_g & ", Installierte Version " & $abf_l & "", 10, 10)
    $Label = GUICtrlCreateLabel("Soll das Update durchgeführt werden ?", 10, 40)
    $YesID = GUICtrlCreateButton("Yes", 90, 70, 50, 20)
    $NoID = GUICtrlCreateButton("No", 160, 70, 50, 20)
    GUISetState()
    Do
    $msg = GUIGetMsg()
    Select
    Case $msg= $YesID
    GUIDelete()
    $SPLASH = GUICreate("Check-Database automation",250,140,-1,-1,1)
    GUICtrlCreateLabel("Update wird durchgeführt...", 15, 40)
    GUISetState()
    GuiCtrlCreatePic($local_pfad & "\hourglass.jpg",200,35, 13,22)
    GUICtrlCreateLabel("TOP-Check-DataBase wird gestartet...", 15, 65)
    FileCopy("S:\TOP\Check_DataBase\Programme\Check_DataBase.mdb", $local_pfad & "\Check_DataBase.mdb", 1)
    FileCopy("S:\TOP\Check_DataBase\Programme\version.ini", $local_pfad & "\version.ini", 1)
    GUICtrlCreateLabel("",200,35,13,22)
    GUICtrlCreateLabel("OK", 200, 40)
    GUICtrlSetColor(-1,0xff0000)
    GuiCtrlCreatePic($local_pfad & "\hourglass.jpg",200,60, 13,22)
    $rc = _RunDos("start " & $local_pfad & "\Check_DataBase.mdb /prefetch:1")
    WinWait("TOP-Check-DataBase")
    GUICtrlCreateLabel("",200,60,13,22)
    GUICtrlCreateLabel("OK", 200, 65)
    GUICtrlSetColor(-1,0xff0000)
    GUISetFont (12,400)
    GUICtrlCreateLabel("Complete", 85, 80,-1,-1,-1,-1)
    GUICtrlSetColor(-1,0xff0000)
    GUIDelete($SPLASH)
    Sleep(5000)
    Case $msg= $NoID
    GUIDelete()
    Exit
    EndSelect
    Until $msg = $YesID or $msg = $NoID
    Else
    $rc = _RunDos("start " & $local_pfad & "\Check_DataBase.mdb /prefetch:1")
    WinWait("TOP-Check-DataBase")
    sleep(5000)
    EndIf
    EndIf

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


    Ich hoffe ihr blickt da durch was ich hier geschrieben habe.

  • Datei mit Array aufbereiten

    • schandor
    • 1. März 2007 um 19:48

    och ich hätte da schon etwas, ich bin mir zwar nicht sicher aber ich denke ich müßte dafür einen neuen post aufmachen... ich mach einfach mal

  • Datei mit Array aufbereiten

    • schandor
    • 28. Februar 2007 um 18:32

    Danke und sorry nochma für die unannehmlichkeiten wegen meiner Blödheit
    mit der StringBetween Funktion

    ich hab jetzt noch mal alles neu installiert,

    AutoIt Version 3.2.2.0
    SciTE Version 1.72

    es läuft jetzt perfekt mit den emails, vielen vielen dank

  • Datei mit Array aufbereiten

    • schandor
    • 27. Februar 2007 um 22:22

    mh, ich habe die version 3.2.1.14, die hab ich erst vor 2 tagen installiert,

    und unter programme\autoit\beta mache ich dann toggle AU3 beta,
    es erscheint kurz ein fenster "using beta 3.2.1.14"

    wenn ich die function rausnehme kommt folgende fehlermeldung:

    ERROR: _StringBetween(): undefined function.

    ich glaub irgendetwas stinkt ganz gewalltig bei mir auf dem rechner ????

  • Datei mit Array aufbereiten

    • schandor
    • 27. Februar 2007 um 20:58

    doch, eigendlich genau das...

    ich habe nochmal deinen codeabschnitt kopiert und deinen letzten spoiler
    als datei genommen,

    ich erhalte weiterhin den fehler:
    (15) : ==> Subscript used with non-Array variable.:
    If Not @error And $email[0] <> '' Then
    If Not @error And $email^ ERROR

    in zeile 15 steht:
    If Not @error And $email[0] <> '' Then


    kann das evtl an der _StringBetween liegen ???

    Spoiler anzeigen


    Func _StringBetween($s_String, $s_Start = 0, $s_End = 0)
    $s_Start = StringInStr($s_String, $s_Start) + StringLen($s_Start)
    Return StringMid($s_String, $s_Start, StringInStr($s_String, $s_End) - $s_Start)
    EndFunc

  • Datei mit Array aufbereiten

    • schandor
    • 27. Februar 2007 um 19:16

    mh, bei mir läufts nicht

    hier ein paar zeilen aus denen ich ich die email adressen haben möchte

    Spoiler anzeigen


    "ID:" <b1fc0$650aa8c0@52232>
    "Result:" <neutral> (kein Eintrag)
    "TEL:" <xxxx-xxxx> (52232)
    "NAME:" <Name, Vorname>
    Object: x43
    "ID:" <b1fc0$650aa8c0@52232>
    "EMAIL:" <xxxx@post.de>
    Produced By xxxxxxxxxxxxxxx
    "DATUM:" Mon, 26 Feb 2007 16:14 =-=
    Strasse/PLZ/ORT: Hauptstrasse_&_[54] / [12345] / IRGENDWO


    "ID:" <b1fc0$650aa8c0@52232>
    "Result:" <neutral> (kein Eintrag) "NAME:" <Name, Vorname>
    Object: x43
    "ID:" <b1fc0$650aa8c0@52232>
    "EMAIL:" <xxxx@post.de> Produced By xxxxxxxxxxxxxxx
    "DATUM:" Mon, 26 Feb 2007 16:14 =-=
    Strasse/PLZ/ORT: [12345] / IRGENDWO

    "ID:" <b1fc0$650aa8c0@52232>
    "Result:" <neutral>
    (kein Eintrag)
    "TEL:" <> ()
    "NAME:" <Name, Vorname>
    Object: x43
    "ID:" <b1fc0$650aa8c0@52232>
    "EMAIL:" <xxxx@post.de>

    "DATUM:" Mon, 26 Feb 2007 16:14 =-=

  • Datei mit Array aufbereiten

    • schandor
    • 27. Februar 2007 um 16:16

    das sieht ja eigendlich ziemlich einfach aus wenn man weiß wie es geht,
    irgendwann kann ich vieleicht auch mal sowas aus dem ärmel schütteln.


    leider bekomme ich einen fehler:

    (15) : ==> Subscript used with non-Array variable.:

    und in zeile 15 steht: If Not @error And $email[0] <> '' Then

    mir ist nicht klar warum das immer $email[0] ist bei jedem schleifendurchgang
    mit $email[$i] das gleiche ergebnis, nehme ich aber nur $email wird auch
    etwas verarbeitet aber das ergebnis sieht aus wie einfach nur durcheinandergewürfelter buchstaben und zwischendrin mal die emails, ebenso in der mailstemp.ini

  • Datei mit Array aufbereiten

    • schandor
    • 27. Februar 2007 um 10:55

    Hallo,

    nein, die Zeilen sind alle unterschiedlich.

    Beispiel:

    "Name:" <Müller, Petra> "Tel:" <> "EMAIL:" <müller@mail.de>
    kjlrsngfvlknxvnvnkjnvjnvjnsdjvnjnvjnbvjknbvjkn
    lkvnlkn langer text irgendetwas
    lkvmlkmvldmvmv

    "Name:" <> "Tel:" <> "EMAIL:" <>
    "Name:" <> "Tel:" <> <123456gd7890$abcde@hgdkkez.fhje>
    kkjvdkj langer text irgendetwas
    "Name:" <> "Tel:" <0123-412556> "EMAIL:" <mail@xyz.de>

    so ungefähr sieht das aus, und ich möchte nur die <echte_email@post.de>
    haben, ich sehe da ein problem mit dem <123456gd7890$abcde@hgdkkez.fhje>, was das ist weiß ich nicht, da steht
    aber auch kein "EMAIL:" davor.

  • Datei mit Array aufbereiten

    • schandor
    • 26. Februar 2007 um 20:36

    waaaa, ich glaub das ist etwas zu mächtig für den Anfang, aber danke
    für die Beschreibung, werde da mal etwas mit üben und rumspielen.


    meine eigendliche .txt quelldatei besteht aus n Zeilen, mit viel Text
    und zwischendrin mal irgendwo ein "EMAIL: <email@post.de>", also inkl.
    "<" und ">"

    ich starte ein script welches mir nur die Zeilen mit "EMAIL:" ausliest
    If StringInStr($aArray[$x], "EMAIL")Then
    dann starte ich ein script mit einer _StringBetween Function
    _StringBetween1($aArray[$x],'<', '>')
    um nur die email adressen zu erhalten
    dann das script von Aspirin Junkie für doppelte und leere Zeilen.
    jetzt gillt es für mich das alles in ein script zu bekommen.

    Ich danke aber erstmal für die Infos und wenn ich nicht weiterkomme
    melde ich mich wieder.

  • Datei mit Array aufbereiten

    • schandor
    • 26. Februar 2007 um 19:32

    ui, das ging aber schnell....

    ich habs einfach mal so genommen wie du es geschrieben hast und es macht
    genau das was ich wollte, wobei ich nicht verstehe wieso das keine elegante
    lösung ist, naja bin ja auch noch anfänger, ich finds auf jeden fall spitze.

    ich habe mir natürlich direkt die hilfe zur hand genommen und geschaut was
    du da für befehle verwendest, z.B StringRegEx kann ich da nicht finden.

    ich habe die neuste beta 3.2.1.14 und die Hilfe ist wohl von SciTE Version 1.71.


    Ich danke Dir für die schnelle hilfe !

  • Datei mit Array aufbereiten

    • schandor
    • 26. Februar 2007 um 18:39

    Hallo zusammen,

    ich bin neu hier und habe erst 2 - 3 kleine sachen mit AutoIt dank der ausgezeichneten Unterstützung hier im Forum gemacht.
    Ich habe hier schon so einiges gefunden was mir weitergeholfen hat,
    dafür schonmal ein riesen dankeschön.


    Und jetzt komme ich doch nicht mehr weiter und denke mir kann recht
    schnell geholfen werden.

    ich habe eine Datei mit ganz vielen eMail-Adressen, jede eMail steht in einer
    neuen Zeilen, es gibt auch Leerzeilen zwischendrin oder eMails sind
    mehrfach vorhanden.

    aber alle Versuche die doppelt und dreifachen Einträge oder die Leeren
    Einträge zu löschen will mir einfach nicht gelingen.

    Ich lese die Datei in ein Array und lasse das durch eine Schleife laufen,
    einmal mit:

    $x = 0
    for $element in $aFileArray
    if $element = ""
    _ArrayDelete($aFileArray,$x)
    usw.
    oder mit
    For $x = 0 to $aFileArray[0]
    if $aFileArray[$x] = ""
    _ArrayDelete($aFileArray,$x)
    usw.

    mir ist klar, das wenn Array[0] gelöscht wird, Array[1] zu Array[0] wird
    und das bleibt dann stehen weil mit next ja das nächste genommen wird.
    Das gleiche Problem hab ich natürlich mit den mehrfach vorhanden Einträge.
    Ich könnte mir vorstellen, das wenn ein Element im Array gelöscht wurde
    ich die die Schleife wieder von vorne beginnen lassen muß.

    Ich hoffe ihr könnt aus dem wirrwar was ich hier zurechtgetippt habe erkennen wo mein Problem liegt.

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™