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

Beiträge von Ilse

  • Array Problem

    • Ilse
    • 5. Juli 2011 um 17:33

    Hallo Misterspeed,

    ...mußte leider nochmal los.
    Ich werde deinen Rat befolgen auf Fehler zu prüfen.
    Muß wirklich sagen, daß das alles sehr schön aufgeräumt aussieht.

    Ich mach mich sofort dran meinen Code,
    (wie vom großen Meister gelernt :thumbup: ) zu verbessern.

    1 RegEx war nicht in Ordnung (die anderen prüf ich auch nochmal...)
    Ich glaube ich schaff das jetzt.

    Melde mich wieder

    Liebe Grüße Ilse ;)
    und Danke für dein Beispiel m. Kommentaren

  • Array Problem

    • Ilse
    • 5. Juli 2011 um 13:58

    Hallo Misterspeed,

    ich prüfe nochmals alles durch
    ist mittlerweile etwas komplex, deßhalb diese Scriptteile.
    Also, Sinn der äußeren Schleife....

    Spoiler anzeigen
    [autoit]


    $var = IniReadSection(@ScriptDir & '\Meine.ini', "Liste")
    For $i = 1 to UBound($var) -1
    $sSource= BinaryToString(inetread($var[$i][1]))
    $aWelpe= StringRegExp($sSource,'\shref="(http://cgi.*?)">',3)
    $aGattung = StringRegExp($sSource,'\Gattung="(*?)">',3)
    $aPapiere = StringRegExp($sSource,'\Papiere="(*?)">',3)

    [/autoit]

    Hier werden die Haupt-Links gelesen.
    Die innere Schleife soll dann die Liste füllen,
    Wenn RegEx z.B. bei Welpe einen Eintrag hat!!!!

    Welpe, Gattung, Papiere
    ist ein Datensatz. Die hängen zusammen!
    Existiert kein Welpe, existiert kein Datensatz! Somit liefert
    $sSource= BinaryToString(inetread($var[$i][1]))
    manchmal Einträge bei Seiten und manchmal nicht!
    Aber dann sollte der Loop weiterlaufen zum nächsten $sSource

    Im Prinzip funktioniert das, halt nur dann nicht,
    wenn $sSource= BinaryToString(inetread($var[$i][1])) z.B. kein Welpe findet.
    Beispiel:
    3=www.voegel.de
    4=www.welpen.de
    das bedeutet Loop = RegEx hat kein Welpe, weiter zu Welpen.de
    RegEx hat Welpen,
    Liste kann also gefüllt werden.

    huh...
    ich probiers nochmal durch.

    Viele Grüße
    Ilse ;)

  • Array Problem

    • Ilse
    • 5. Juli 2011 um 11:19

    misterspeed,

    guten Morgen,
    konnte mich heute erst wieder melden.

    hm..wenn ich mir die Arrays nacheinander mit Arraydisplay ansehe,
    dann ist die Anzahl unterschiedlich. Aber mindestens 25
    Das konnte ich dann im Loop lösen.
    Aber hier erhalte ich noch die Fehlermeldung:
    Es sind 2 Loops verschachtelt:

    Spoiler anzeigen
    [autoit]


    $var = IniReadSection(@ScriptDir & '\Meine.ini', "Liste")
    For $i = 1 to UBound($var) -1
    $aWelpe= StringRegExp($sSource,'\shref="(http://cgi.*?)">',3)
    $aGattung = StringRegExp($sSource,'\Gattung="(*?)">',3)
    $aPapiere = StringRegExp($sSource,'\Papiere="(*?)">',3)

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

    for $f = 0 to 25 -1
    $d = $aGattung[$f]&"|"&$aWelpe[$f]&"|"&$aPapiere[$f]
    GUICtrlCreateListViewItem($d, $hListView)
    next

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

    next

    [/autoit]

    Kurze Erklärung zum Loop:
    Die Links erhalte ich mit IniReadSection
    So sieht die Ini aus:

    Spoiler anzeigen
    [autoit]


    [Liste]
    1=http://www.Hunde.de
    2=http://www.Katzen.de

    [/autoit]

    Folgenden Fehler müsste ich abfangen:
    Der Ablauf der IniReadSection:

    1. Hunde.de wird geöffnet
    2. RegEx Muster werden erkannt
    3. Listview wird geschrieben

    Dann Link ohne RegEx Erfolg = FEHLER

    1. Katzen.de wird geöffnet
    2. REGEX Muster (bzw. Array ist leer)
    3. Listview wird nicht geschrieben (Absturz)


    Wie kann man, wenn ein RegEx leer ist, den Loop-Vorgang
    ohne Eintrag in die Listview fortsetzen?
    (Falls es daran liegen sollte...)


    Liebe Grüße
    Ilse ;)

  • Array Problem

    • Ilse
    • 4. Juli 2011 um 18:04

    Hallo,

    ich erhalte diese Fehlermeldung in SCite:

    Array variable has incorrect number of subscripts or subscript dimension range exceeded.:

    Da mein Script mittlerweile sehr umfangreich ist und mehrere
    Teile included wurden beschränke ich mich aufs wesentliche.

    1. Das Problem ist Arrays sollen per Loop in eine Listview!
    Einzeln funktioniert das! Aber ich krieg die Spalten nicht in einem Rutsch befüllt.
    Jedes Array beinhaltet mehrere Inhalte.

    Spoiler anzeigen
    [autoit]


    for $f = 0 to UBound($aGattung) -1

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

    $d = $aGattung[$f]&"|"&$aWelpe[$f]&"|"&$aPapiere[$f]

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

    GUICtrlCreateListViewItem($d, $hListView)
    next

    [/autoit]

    Fülle ich meine Listview mit einem Eintrag, dann klappt das!
    also

    Spoiler anzeigen


    $d = $aGattung[$f]
    oder
    $d = $$aWelpe[$f]

    wenn mehrere Spalten gefüllt werden, dann erhalte ich
    immer die Meldung
    Array variable has incorrect number of subscripts or subscript dimension range exceeded.:

    Im Internet habe ich diese Lösung gefunden

    Spoiler anzeigen
    [autoit]


    Array variable has incorrect number of subscripts or subscripts dimension range exceeded
    Fehler: Der Arrayvariablenaufruf hat den Index oder die Dimension überschritten

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

    Beispiel:

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

    Global $array[1][5]

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

    MsgBox(0,"",$array[10][10])

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

    Errormeldung:

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

    C:\**\**\**.au3 (1) : ==> Array variable subscript badly formatted.:
    Global $array[0][5]
    Global $array[^ ERROR

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

    Lösung:

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

    Erweitern sie den Array oder ändern sie den Aufruf.

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

    Global $array[11][11]

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

    MsgBox(0,"",$array[10][10])

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

    oder

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

    Global $array[1][5]

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

    MsgBox(0,"",$array[0][1])

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

    Da brächte ich Hilfe, die Anzahl ist jedesmal unterschiedlich.
    Ich kann also die Arrays nicht fest bestimmen
    Die Variablen habe ich als Global deklariert!


    Liebe Grüße
    Ilse ;)

  • $Var Problem

    • Ilse
    • 4. Juli 2011 um 14:26

    merci für eure Tipps.

    Liebe Grüße
    Ilse ;)

  • $Var Problem

    • Ilse
    • 4. Juli 2011 um 12:26

    @meineHerren
    bitte nicht so streng mit mir,
    ich bin noch am lernen.

    Darf ich trotzdem noch eine Frage loswerden?

    Es reicht also nicht, daß ich meine
    $Var in einer Funktion so z.B. deklariere?

    [autoit]


    Func _Tiere()
    $aTiere = StringRegExp($sSource,'"vip">(.*?)<',3)
    endfunc

    [/autoit]

    Ich muß sie erneut als Global innerhalb des Scriptes
    aber außerhalb der Funktion deklarieren?


    Grüße
    Ilse ;)

  • $Var Problem

    • Ilse
    • 4. Juli 2011 um 11:47

    Hallo,

    ich habe ein Problem mit inetread und Variablen

    [autoit]


    $var = IniReadSection(@ScriptDir & '\meine.ini', "Liste")
    For $i = 1 to UBound($var) -1
    MsgBox(0,"",$var[$i][1])
    $sSource= BinaryToString(inetread($var[$i][1])
    _Suche()
    next

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

    Meine Ini:

    Spoiler anzeigen


    [Liste]
    1=http://www.hunde.de
    2=http://www.katzen.de

    Das Problem:

    Die Msgbox zeigt den Link an.
    MsgBox(0,"",$var[$i][1])
    Versuche ich mit inetread den Pfad zu lesen,
    dann klappt das nicht!

    $sSource= BinaryToString(inetread($var[$i][1])

    Das zweite Problem mit $Var habe ich
    bei der Funktion
    _Suche() die im Loop aufgerufen wird.
    Hier erhalte ich ebenfalls ein $Var Error

    Spoiler anzeigen
    [autoit]


    Variable used without being declared.:
    $aLink = StringRegExp($sSource,'\shref="(http://cgi.*?)">',3)
    $aLink = StringRegExp(^ ERROR

    [/autoit]

    Was mache ich hier denn falsch?
    Die Variablen sind doch normalerweise in Ordnung.
    ...versteh ich absolut nicht!

    Liebe Grüße
    Ilse ;)

  • Oscar Datenbank

    • Ilse
    • 1. Juli 2011 um 12:40

    toll erklärt,

    Dank euch...

    Liebe Grüße
    Ilse ;)

  • Oscar Datenbank

    • Ilse
    • 1. Juli 2011 um 12:00

    Dank euch für die Tipps!

    Eine Frage noch:

    Wenn ich am Ende eine eigene Funktion habe
    z.B.

    [autoit]


    Func _Suche()
    ;...
    Endfunc

    [/autoit]

    die kann ich ja nun innerhalb der Hauptfunktion
    also der Func _Listenansicht()
    nicht mehr aufrufen (Func in Func) geht ja nicht, oder?

    Ilse ;)

  • Oscar Datenbank

    • Ilse
    • 1. Juli 2011 um 11:50

    Hallo Oscar,

    schön daß du dich meldest!
    Kurze Rückfrage:

    D.h. ich muß alle globalen Variablen
    nochmals vor die Funktion schreiben?
    Verstehe ich das richtig?

    So?

    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $sHeader,$sDBFile;$iEdit ................

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

    Func _Listenansicht()
    Global $sHeader = "Artikelnummer|Art|Nummer|Baureihe|Name" ; Die Überschriften für das Listview und für das "Neuer Eintrag"-Fenster
    Global $sDBFile = @ScriptDir & "\datenbank.txt" ; Pfad und Name der Datenbank-Datei
    Global $iEdit = -1 ; Wert auf -1 setzen, weil _GUICtrlListView_GetSelectionMark() einen Nullbasierten Wert liefert
    Global $hSearchLVHandle

    [/autoit]

    Grüße
    Ilse ;)

  • Oscar Datenbank

    • Ilse
    • 1. Juli 2011 um 11:36

    Hallo,

    ich habe ein Problem mit der Oscar-Datenbank.
    Ich möchte gerne das ganze in eine Funktion packen,
    damit man die Liste includieren kann!

    Das klappt leider nicht, erhalte Fehlermeldungen

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    Func _Listenansicht()

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

    Global $sHeader = "Artikelnummer|Art|Nummer|Baureihe|Name" ; Die Überschriften für das Listview und für das "Neuer Eintrag"-Fenster
    Global $sDBFile = @ScriptDir & "\datenbank.txt" ; Pfad und Name der Datenbank-Datei
    Global $iEdit = -1 ; Wert auf -1 setzen, weil _GUICtrlListView_GetSelectionMark() einen Nullbasierten Wert liefert
    Global $hSearchLVHandle
    #region Hauptfenster
    Global $hGui = GUICreate("Listview-Datenbank-Beispiel", 600, 480) ; Hauptfenster erstellen
    GUISetBkColor(0xCCCCCC)

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

    Global $hListView = GUICtrlCreateListView($sHeader, 0, 0, 600, 400, $LVS_SHOWSELALWAYS) ; Listview erstellen

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

    Global $hLVHandle = GUICtrlGetHandle($hListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hLVHandle, 0, "1", 120, 0) ; 1. Spalte = 120 Px breit, rechts ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 1, "2", 60, 0) ; 2. Spalte = 60 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 2, "3", 90, 0) ; 3. Spalte = 90 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 3, "4", 100, 0) ; 4. Spalte = 100 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 4, "5", 120, 0) ; 5. Spalte = 120 Px breit, links ausgerichtet

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

    Global $hSearchListView = GUICtrlCreateListView($sHeader, 0, 0, 600, 400, $LVS_SHOWSELALWAYS) ; Listview für die Suche erstellen
    GUICtrlSetState(-1, $GUI_HIDE)
    Global $hSearchLVHandle = GUICtrlGetHandle($hSearchListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hSearchLVHandle, 0, "1", 120, 0) ; 1. Spalte = 120 Px breit, rechts ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 1, "2", 60, 0) ; 2. Spalte = 60 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 2, "3", 90, 0) ; 3. Spalte = 90 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 3, "4", 100, 0) ; 4. Spalte = 100 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 4, "5", 120, 0) ; 5. Spalte = 120 Px breit, links ausgerichtet

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

    GUICtrlCreateLabel("Suchbegriff:", 10, 412, 90, 20)
    GUICtrlSetFont(-1, 11)
    Global $hSearch = GUICtrlCreateInput("", 100, 410, 390, 20) ; Suchbegriff-Input erstellen
    GUICtrlSetFont(-1, 11)
    Global $hSearchStart = GUICtrlCreateButton("Suche...", 500, 410, 60, 20, $BS_DEFPUSHBUTTON) ; Dieser Button ist der Default-Push-Button (wenn der User [Enter] drückt)
    GUICtrlSetFont(-1, 9)
    Global $hSearchReset = GUICtrlCreateButton("<-", 562, 410, 28, 20) ; Reset-Button erstellen
    GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
    GUICtrlSetState(-1, $GUI_DISABLE) ; den Reset-Button deaktivieren

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

    Global $hNew = GUICtrlCreateButton("Neuer Eintrag", 5, 440, 80, 35)
    Global $hEdit = GUICtrlCreateButton("Markierten Eintrag bearbeiten", 95, 440, 110, 35, $BS_MULTILINE) ; $BS_Multiline für mehrzeiligen Button
    Global $hLoad = GUICtrlCreateButton("Laden", 230, 440, 70, 35)
    Global $hSave = GUICtrlCreateButton("Speichern", 310, 440, 70, 35)
    Global $hDel = GUICtrlCreateButton("Markierte Einträge löschen", 400, 440, 90, 35, $BS_MULTILINE)
    Global $hDelAll = GUICtrlCreateButton("Alle Einträge löschen", 500, 440, 90, 35, $BS_MULTILINE)

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

    Global $hCM = GUICtrlCreateContextMenu($hListView) ; ein Kontextmenü für das Listview erstellen
    Global $hCMNew = GUICtrlCreateMenuItem("Neuer Eintrag", $hCM) ; der 1. Kontextmenüeintrag
    Global $hCMEdit = GUICtrlCreateMenuItem("Eintrag bearbeiten", $hCM) ; der 2. Kontextmenüeintrag
    Global $hCMDel = GUICtrlCreateMenuItem("Markierte Einträge löschen", $hCM) ; der 3. Kontextmenüeintrag
    #endregion Hauptfenster

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

    #region Fenster für neuen Eintrag
    Global $hGuiNew = GUICreate("Neuer Eintrag", 632, 140, -1, -1, $WS_SYSMENU) ; das Fenster "Neuer Eintrag" erstellen
    Global $aHeader = StringSplit($sHeader, '|') ; Überschriften-Array
    Global $aNew[$aHeader[0]] ; Array für die Input-IDs
    For $i = 1 To $aHeader[0]
    GUICtrlCreateLabel($aHeader[$i], 4 + ($i - 1) * 125, 15, 110, 20) ; Überschriften-Label erstellen
    GUICtrlSetFont(-1, 8, 400, 0, 'Verdana') ; Schriftgröße und -art der Überschriften festlegen
    $aNew[$i - 1] = GUICtrlCreateInput("", 2 + ($i - 1) * 125, 30, 120, 20, Default, $WS_EX_STATICEDGE) ; Eingabefelder erstellen
    GUICtrlSetFont(-1, 10, 600, 0, 'Verdana') ; Schriftgröße und -art der Eingabefelder festlegen
    Next
    Global $hCreate = GUICtrlCreateButton("Eintrag speichern", 254, 65, 120, 25, $BS_DEFPUSHBUTTON) ; Button zum speichern
    #endregion Fenster für neuen Eintrag

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

    _GUICtrlListView_RegisterSortCallBack($hLVHandle) ; damit man das Listview (mit Klick auf die Spaltenüberschrift) sortieren kann
    _GUICtrlListView_RegisterSortCallBack($hSearchLVHandle) ; damit man das Suche-Listview (mit Klick auf die Spaltenüberschrift) sortieren kann

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

    GUISetState(@SW_SHOW, $hGui) ; Hauptfenster sichtbar machen

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

    ;If FileExists($sDBFile) Then Load() ; wenn Datenbank-Datei existiert, dann Datenbank laden
    ;_RegSuche()

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

    While 1
    $nMsg = GUIGetMsg(1) ; Message-Event holen (1) = erweiterter Modus
    Switch $nMsg[0] ; anhand der Control-ID das entsprechende Case aufrufen
    Case $hSearchListView ; User hat auf eine Spaltenüberschrift geklickt
    _GUICtrlListView_SortItems($hSearchLVHandle, GUICtrlGetState($hSearchListView)) ; Einträge entsprechend sortieren
    Case $hListView ; User hat auf eine Spaltenüberschrift geklickt
    _GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView)) ; Einträge entsprechend sortieren
    Case $hSearchStart ; Benutzer hat auf "Suche..." geklickt
    GUICtrlSetState($hSearchStart, $GUI_DISABLE) ; Button deaktivieren
    _GUICtrlListView_DeleteAllItems($hSearchLVHandle) ; alle Einträge aus dem Suche-Listview entfernen
    Dim $sSearch = GUICtrlRead($hSearch), $sItem
    For $i = 0 To _GUICtrlListView_GetItemCount($hLVHandle) - 1 ; In einer Schleife alle Listview-Einträge durchsuchen
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i) ; die entsprechende Zeile auslesen
    If StringInStr($sItem, $sSearch) Then GUICtrlCreateListViewItem($sItem, $hSearchListView) ; und falls das Suchwort darin vorkommt, einen neuen Eintrag im Suche-Listview erstellen
    Next
    If _GUICtrlListView_GetItemCount($hSearchLVHandle) = 0 Then ; wenn kein Suchtreffer, dann...
    GUICtrlSetBkColor($hSearchListView, 0xFF8888) ; Hintergrundfarbe in Rot ändern
    Else
    GUICtrlSetBkColor($hSearchListView, 0x88FF88) ; ansonsten Hintergrundfarbe in grün ändern
    EndIf
    GUICtrlSetState($hListView, $GUI_HIDE) ; das normale Listview verstecken
    GUICtrlSetState($hSearchListView, $GUI_SHOW) ; und das Suche-Listview anzeigen
    GUICtrlSetState($hSearchReset, $GUI_ENABLE) ; den Reset-Button aktivieren, damit der Benutzer wieder auf das normale Listview umschalten kann
    Case $hSearchReset ; Benutzer hat auf den Reset-Button geklickt
    GUICtrlSetData($hSearch, "") ; das Suchbegriff-Input leeren
    GUICtrlSetState($hSearchListView, $GUI_HIDE) ; das Suche-Listview verstecken
    GUICtrlSetState($hListView, $GUI_SHOW) ; das normale Listview wieder anzeigen
    GUICtrlSetState($hSearchStart, $GUI_ENABLE) ; den "Suche..."-Button wieder aktivieren
    GUICtrlSetState($hSearchReset, $GUI_DISABLE) ; und den Reset-Button deaktivieren
    Case $hNew, $hCMNew ; Benutzer hat auf "Neuer Eintrag" geklickt
    WinSetTitle($hGuiNew, "", "Neuer Eintrag") ; den Titel des Fenster anpassen
    GUISetState(@SW_SHOW, $hGuiNew) ; das Fenster "Neuer Eintrag" anzeigen
    GUISetState(@SW_DISABLE, $hGui) ; das Hauptfenster deaktivieren
    Case $hEdit, $hCMEdit ; User hat auf "Eintrag bearbeiten" geklickt
    WinSetTitle($hGuiNew, "", "Eintrag bearbeiten") ; den Titel des Fenster anpassen
    GUISetState(@SW_SHOW, $hGuiNew) ; das Fenster "Neuer Eintrag" anzeigen
    GUISetState(@SW_DISABLE, $hGui) ; das Hauptfenster deaktivieren
    Edit()
    Case $hLoad ; Benutzer hat auf "Laden" geklickt
    Load()
    Case $hSave ; Benutzer hat auf "Speichern" geklickt
    Save()
    Case $hDel, $hCMDel ; Benutzer hat auf "Markierte Einträge löschen" geklickt
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie die markierten Einträge wirklich löschen?") = 6 Then _GUICtrlListView_DeleteItemsSelected($hLVHandle)
    Case $hDelAll ; User hat auf "Alle Einträge löschen" geklickt
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie wirklich alle Einträge löschen?") = 6 Then _GUICtrlListView_DeleteAllItems($hLVHandle)
    Case $hCreate ; Benutzer hat auf "Eintrag speichern" im Fenster "Neuer Eintrag" geklickt
    NewItem()
    Case $GUI_EVENT_CLOSE ; Benutzer hat auf das Schließen-Symbol geklickt (bzw. die ESC-Taste gedrückt)
    Switch $nMsg[1] ; erweiterte Abfrage für welches Fenster
    Case $hGui ; Benutzer will das Hauptfenster schließen
    If MsgBox(32 + 4, "Beenden", "Wollen sie das Programm wirklich beenden?") = 6 Then End() ; wenn ja, dann End-Funktion aufrufen
    Case $hGuiNew ; Benutzer will das "Neuer Eintrag"-Fenster schließen
    $iEdit = -1
    For $i = 0 To UBound($aNew) - 1
    GUICtrlSetData($aNew[$i], "") ; Alle Eingabefelder leeren
    Next
    GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Eintrag"-Fenster verstecken
    GUISetState(@SW_ENABLE, $hGui) ; Hauptfenster wieder aktivieren
    WinActivate($hGui) ; und in den Vordergrund holen
    EndSwitch
    EndSwitch
    WEnd

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

    endfunc

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

    Func End()
    ;~ Save() ; wenn der vordere Kommentar entfernt wird, dann werden vor dem beenden noch die Daten gespeichert
    _GUICtrlListView_UnRegisterSortCallBack($hSearchLVHandle) ; Sortierroutine wieder de-registrieren
    _GUICtrlListView_UnRegisterSortCallBack($hLVHandle) ; Sortierroutine wieder de-registrieren
    Exit ; Programm beenden
    EndFunc ;==>End

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

    Func NewItem() ; Funktion zum auslesen der Eingabefelder (Neuer Eintrag bzw. Eintrag bearbeiten)
    Local $sItem = ""
    For $i = 0 To UBound($aNew) - 1 ; Schleife, um alle Eingabefelder durchzugehen
    If $iEdit > -1 Then ; wenn $iEdit > -1 (Eintrag bearbeiten), dann...
    _GUICtrlListView_SetItemText($hLVHandle, $iEdit, GUICtrlRead($aNew[$i]), $i) ; den Eintrag aus dem Eingabefeld ins Listview schreiben
    Else ; sonst $iEdit = -1 (neuer Eintrag)
    $sItem &= GUICtrlRead($aNew[$i]) & "|" ; den Eintrag aus dem Eingabefeld erstmal in einer Variablen ($sItem) speichern
    EndIf
    GUICtrlSetData($aNew[$i], "") ; das entsprechende Eingabefeld leeren
    Next
    If $iEdit > -1 Then ; wenn $iEdit > -1 (Eintrag bearbeiten), dann...
    $iEdit = -1
    GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Eintrag"-Fenster verstecken
    GUISetState(@SW_ENABLE, $hGui) ; Hauptfenster wieder aktivieren
    Sleep(300)
    WinActivate($hGui) ; und in den Vordergrund holen
    Else ; sonst $iEdit = -1 (neuer Eintrag)
    GUICtrlSetState($aNew[0], $GUI_FOCUS) ; den Focus wieder auf das erste Eingabefeld setzen, für weitere Eingaben
    GUICtrlCreateListViewItem(StringTrimRight($sItem, 1), $hListView) ; mit den Werten aus $sItem einen neuen Listview-Eintrag hinzufügen
    EndIf
    EndFunc ;==>NewItem

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

    Func Edit() ; Funktion zum bearbeiten eines Listview-Eintrags im "Eintrag bearbeiten"-Fenster
    $iEdit = _GUICtrlListView_GetSelectionMark($hLVHandle) ; auslesen, welcher Listview-Eintrag markiert (bei mehreren, den obersten) ist
    If $iEdit > -1 Then
    Local $aItem = _GUICtrlListView_GetItemTextArray($hLVHandle, $iEdit) ; die Einträge aus dem Listview in ein Array holen
    For $i = 1 To $aItem[0]
    GUICtrlSetData($aNew[$i - 1], $aItem[$i]) ; und in die entsprechenden Eingabefelder schreiben
    Next
    EndIf
    EndFunc ;==>Edit

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

    Func Load() ; Datenbank-Datei laden
    Local $hFile, $sContent, $aNewItems
    $hFile = FileOpen($sDBFile, 0) ; Datei zum lesen öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    $sContent = FileRead($hFile) ; Datei komplett einlesen
    FileClose($hFile) ; Datei schließen
    $sContent = StringTrimRight($sContent, 2) ; das letzte @CRLF entfernen
    $aNewItems = StringSplit($sContent, @CRLF, 1) ; Den Dateiinhalt am Zeilenende splitten
    If Not IsArray($aNewItems) Then Return ; Wenn $aNewItems kein Array ist, dann Funktion verlassen
    _GUICtrlListView_BeginUpdate($hLVHandle) ; Listview sperren
    For $i = 1 To $aNewItems[0] ; Alle Einträge des Arrays durchgehen
    GUICtrlCreateListViewItem($aNewItems[$i], $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    Next
    _GUICtrlListView_EndUpdate($hLVHandle) ; Listview wieder freigeben
    EndIf
    EndFunc ;==>Load

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

    Func Save() ; Datenbank-Datei speichern
    Local $sItem, $hFile, $iCount
    $iCount = _GUICtrlListView_GetItemCount($hLVHandle) - 1 ; Anzahl der Listview-Einträge holen
    If $iCount = -1 Then Return FileDelete($sDBFile) ; Wenn das Listview keine Einträge enthält, dann Datei löschen und Funktion verlassen
    $hFile = FileOpen($sDBFile, 2) ; Datei zum speichern (überschreiben) öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    For $i = 0 To $iCount ; Schleife, um alle Listview-Einträge durchzugehen
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i) ; die Werte aus dem Listview-Eintrag holen
    FileWriteLine($hFile, $sItem) ; und in die Datei schreiben
    Next
    FileClose($hFile) ; Datei schließen
    EndIf
    EndFunc ;==>Save

    [/autoit]

    Ich habe das ganze in die Func _Listenansicht()
    eingeschlossen! Ohne diese Func läuft alles prima!

    Fehler: WARNING: $hSearchLVHandle


    Liebe Grüße
    Ilse ;)

  • Mehrere Au3 zusammenführen

    • Ilse
    • 30. Juni 2011 um 20:13

    ja, das war's
    die Funktionen.

    Also das Script bis auf die Funktionen
    in eine Funktion einschliessen.
    Man berücksichtigt quasi die vorhandenen Funktionen in dem Script nicht!
    Also so:

    [autoit]


    #include <ie.au3>

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

    Func _Liste()
    ;Code der Liste
    ;If.....
    endfunc

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

    ;alles andere nicht berücksichtigen!
    ;Funktionen der Liste
    Func _End()
    exit
    endfunc

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

    Danke nochmal an alle

    Liebe Grüße
    Ilse ;)

  • Mehrere Au3 zusammenführen

    • Ilse
    • 30. Juni 2011 um 19:31

    So, ich habe alles
    nochmals geprüft.

    Ich glaube es hängt an den weiteren Functions
    die in der Liste.au3 enthalten sind!

    ohne die Functions klappt es:
    Also:
    Main.au3

    [autoit]


    #include <Liste.au3>
    _Liste()

    [/autoit]

    Liste.au3

    [autoit]


    #include-once
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    Func _Liste()
    MsgBox(0,"","Liste")

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

    EndFunc

    [/autoit]


    das geht, aber die Liste.au3
    besitzt Functions:

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

    #include-once
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    Func _Liste()
    MsgBox(0,"","Liste")

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

    Func _Ende()
    exit
    endFunc
    ;und weitere Functions....

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

    EndFunc

    [/autoit]

    Kann das daran liegen?


    Grüße
    Ilse

  • Mehrere Au3 zusammenführen

    • Ilse
    • 30. Juni 2011 um 19:09

    Hallo stayawayknight,

    hm...habe ich gemacht,
    läuft aber immer noch nicht.

    Meine Liste.au3
    sieht jetzt so aus:

    Spoiler anzeigen
    [autoit]


    #include-once
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    Func _Liste()

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

    ;...code
    endfunc

    [/autoit]

    meine Main.au3
    sieht so aus

    Spoiler anzeigen
    [autoit]


    #include <StructureConstants.au3>
    #include <Liste.au3>

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

    _Liste()

    [/autoit]

    Die Fehlermeldung ERROR: syntax error
    Func

    Grüße
    Ilse ;)

    EDIT:
    Gerade probiert:
    Ich habe den kpl. Code aus der Main.au3
    entfernt und nur
    #include <Liste.au3>
    _Liste() drinstehen.

    Die Fehlermeldungen kommen aus der Liste.au3 die alleine einwandfrei läuft!
    undefined function.End()
    undefined function.Save()

  • Mehrere Au3 zusammenführen

    • Ilse
    • 30. Juni 2011 um 18:24

    Hallo Fresapore,

    merci für die Hilfe.
    Also, ich hatte folgendes mit einer au3 Datei probiert
    Ich habe sie einfach in eine Function eingeschlossen
    z.B. Liste.au3

    [autoit]


    Func _Liste() ; das habe ich in die erste Zeile geschrieben
    #include <ie.au3>
    ...; diese Datei läuft also ohne Function tadelos.
    Code....
    endfunc ; und am Ende der Zeile abgeschlossen!

    [/autoit]

    In meiner Main.au3 hatte ich diese Liste.au3(die nun eine Func ist)
    includiert. und im Code mit _Liste() versucht aufzurufen,
    das ging aber nicht! Mache ich da was falsch?


    Ich hatte in meiner Main.au3
    folgendes gemacht:

    [autoit]


    #include <Liste.au3>
    ;hier steht der Code der Main.au3
    ...
    _Liste() ; hier wollte ich die Function aufrufen

    [/autoit]

    DIe Liste.au3 ist im gleichen Verzeichnis wie die Main.au3!


    Liebe Grüße
    Ilse ;)

  • Mehrere Au3 zusammenführen

    • Ilse
    • 30. Juni 2011 um 17:49

    Hallo,

    diesesmal eine generelle Frage:
    Ich möchte gerne mehrere au3 Dateien in einer
    Anwendung.au3 unterbringen und handhaben. Später *.exe
    Einzeln läuft jede Anwendung prima.

    Wenn ich den Code jeder Anwendung.au3 in den Maincode.au3
    kopiere, verliert man total den Überblick und es kommen Errors...

    Wie geht man da am besten vor?
    Wenn ich Dateien mit #include <Liste.au3> z.B.
    innerhalb des Codes verwende, dann sind doch die einzelnen au3 Files ungeschützt.

    Oder macht man von jedem au3. eine Funktion?
    Kann man den kpl, Quellcode einer au3 Datei als Funktion innerhalb
    der Anwendung aufrufen
    ?
    Bin mit total unschlüssig welchen Weg ich gehen soll!

    Würde mich über Tipps sehr freuen.


    Liebe Grüße
    Ilse ;)

  • StringReplace keine Änderung

    • Ilse
    • 30. Juni 2011 um 15:29

    Ich danke euch...
    Super, endlich ein Erfolgserlebnis!

    misterspeed
    dank dir für den Hinweis!
    Manchmal sieht man wirklich die kleinsten Fehler nicht!

    shadow667
    prima, dank dir für den Tipp

    Liebe Grüße
    Ilse ;)

  • Array Bearbeitung nicht möglich

    • Ilse
    • 30. Juni 2011 um 15:21

    @Alle

    Super, hat endlich funktioniert!
    Dank Euch!

    Liebe Grüße
    Ilse ;)

  • Array Bearbeitung nicht möglich

    • Ilse
    • 30. Juni 2011 um 14:00

    Hallo,

    ich bin wirklich fast am verzweifeln.
    Wie kann man ein Array nachträglich bearbeiten:

    [autoit]


    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    $sSource= BinaryToString(inetread("http://www.hunde.de"))

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

    $aMeineSuche = StringRegExp($sSource,'title="(.*?).de"',3)
    _ArrayDisplay($aMeineSuche, "Array Auswertung")

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

    For $i = 0 To UBound($aMeineSuche, 1) - 1
    $ersetze = StringReplace($aMeineSuche[$i],"Hunde","HUNDE")
    Next

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

    _ArrayDisplay($aMeineSuche, "Array Auswertung")

    [/autoit]

    Ich versteh gerade die Welt nicht mehr!

    Liebe Grüße
    Ilse ;)

  • StringReplace keine Änderung

    • Ilse
    • 30. Juni 2011 um 12:08

    Hallo,

    und merci erstmal für die Hilfe.
    Jetzt muß ich mich doch nochmal zu dem Thema StringReplace melden!

    Eine andere Variante die ebenfalls nicht funktioniert!

    [autoit]


    $sSource= BinaryToString(inetread("http://www.hunde.de"))
    $ersetze = StringReplace($sSource,"DOCTYPE","Ilse-Test")
    Msgbox(0,"",$sSource)

    [/autoit]

    Könnt Ihr mir hier helfen, wie ich das mit einem BinaryToString machen kann?


    Liebe Grüße
    Ilse ;)

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™