@ alle
nur mal so ein Gedanke!
Wenn ich den Code z.B. mit regEx bearbeiten würde.
Alle Variablen in ein Array übergeben
Global $Var1, Var2....
und ich würde das dann an den Anfang setzen
könnte das klappen?
@ alle
nur mal so ein Gedanke!
Wenn ich den Code z.B. mit regEx bearbeiten würde.
Alle Variablen in ein Array übergeben
Global $Var1, Var2....
und ich würde das dann an den Anfang setzen
könnte das klappen?
Hallo Sprenger120,
ja, das wußte ich.
Man muß also alles von Hand machen.
Stell dir das ganze mal so vor:
Es gibt ein ziemlich großes Script (sehr unübersichtlich)
Das möchte ich im Grunde neu aufbauen.
Gibt es da keine UDF die das Script
nach Variablen prüft, diese dann Global an den Anfang setzt.
Sodaß man dann problemlos Funktionen machen kann?
Würde das generell gehen?
Ilse ![]()
Hallo,
muß jetzt doch mal ne Frage loswerden.
Ich möchte gerne meinen komplexen Code neu organisieren, aufbauen, verbessern.
Dazu will ich einfach Code-Teile in Funktionen ablegen.
Aber jedesmal stolpere ich dabei über Fehlermeldungen...
Vielleicht mal ein ganz einfaches Beispiel
Ich möchte den Inhalt einer Gui als Funktion haben
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
_MainGui(); meine Gui sollte hier aufgerufen werden
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $delete
Case $Create
EndSwitch
WEnd
Func _MainGui()
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 440, 520, 212)
$Edit1 = GUICtrlCreateEdit("", 124, 28, 105, 57)
GUICtrlSetData(-1, "Edit1")
$delete = GUICtrlCreateButton("delete", 32, 108, 75, 25)
$Create = GUICtrlCreateButton("Create", 128, 108, 75, 25)
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 52, 160, 97, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 52, 184, 97, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
EndFunc
[/autoit]Error: possibly used before declaration.
..habe ich soweit verstanden, aber die Frage zum Handling:
Wie macht Ihr das? Müssen die Variablen alle nun herauskopiert und als Global deklariert werden?
Oder gibt es da eine elegantere Methode ohne den Code nochmals kpl. zu bearbeiten?
D.h. der nächste Abschnitt enthält nochmals weitere Variablen
wie kann man das irgendwie sinnvoll lösen?
Ich dachte Abschitt ausschneiden und in Funktion kopieren, Funktion aufrufen fertig!
Gibt es da vielleicht einen Befehl, z.B. alle Variablen des Scriptes sollen Global behandelt werden.
Grüße
Ilse ![]()
He Bugfix,
klappt leider nicht!
Meine Zwischenablage
<script majax:evalscript="global" type="text/javascript">
<div id="markt_header_logoBox">
<div id="markt_header_loginBox">
<div class="markt_header_fbLike">
<div id="markt_header_searchBox">
<div id="markt_header_searchBoxTop">
<div id="markt_header_searchBoxBottom">
<form action="http://www.seite.de/suche.htm" method="post">
<input type="hidden" name="userUsedAutocompletion" value="false">
<label for="markt_header_searchPhraseInput">Was</label>
<input id="markt_header_searchPhraseInput" class="markt_header_searchPhraseInput markt_header_searchTextInput ac_input" type="text" tabindex="1" value="z.B. Laptop" name="keywords" autocomplete="off">
<label>In</label>
<input class="markt_header_searchCategoryInputDummy markt_header_searchSelectInput" type="text" tabindex="2" value="Allen Kategorien" readonly="readonly" autocomplete="off">
<input class="markt_header_searchCategoryIdInput" type="hidden" value="" name="categoryId" readonly="readonly" autocomplete="off">
<ul class="markt_header_searchCategoryMenu">
<label for="markt_header_searchRegionInput">Wo</label>
<input id="markt_header_searchRegionInput" class="markt_
Das Pattern
#include <Array.au3>
$sSource=ClipGet()
$arrayfilter = StringRegExp($sSource, '(?<!type="hidden" (?:value="" )?)(?:name=")([^"]+)', 3)
_ArrayDisplay($arrayfilter, "Array Auswertung")
...bin bald am Ende...
Ilse ![]()
ja, das ist teilweise korrekt!
<input id ..... name="keywords" (korrekt)
<input type"hidden"......name="text"(falsch)
Ich brauche als Ergebnis Begriff hinter "name="
halt nur für bestimmte <input Felder!
und genau das war ja das Problem:
ich benötige ein Suchpattern das z.B. sagt
suche <input id....name="richtig" oder <input type="text"....name="richtig" aber nicht <input type="hidden"....name="falsch"
und jede Zeile enthält als Ergebnis name="richtiger Text" aber mit unterschiedlichem <input
huh...
Grüße
Ilse ![]()
Hallo Bugfix,
hatte ich gemacht, aber im Spoiler wurde es nicht angezeigt!
<script majax:evalscript="global" type="text/javascript">
<div id="markt_header_logoBox">
<div id="markt_header_loginBox">
<div class="markt_header_fbLike">
<div id="markt_header_searchBox">
<div id="markt_header_searchBoxTop">
<div id="markt_header_searchBoxBottom">
<form action="http://www.Site.de/suche.htm" method="post">
<input type="hidden" name="userUsedAutocompletion" value="false">
<label for="markt_header_searchPhraseInput">Was</label>
<input id="markt_header_searchPhraseInput" class="markt_header_searchPhraseInput markt_header_searchTextInput ac_input" type="text" tabindex="1" value="z.B. Laptop" name="keywords" autocomplete="off">
<label>In</label>
<input class="markt_header_searchCategoryInputDummy markt_header_searchSelectInput" type="text" tabindex="2" value="Allen Kategorien" readonly="readonly" autocomplete="off">
<input class="markt_header_searchCategoryIdInput" type="hidden" value="" name="categoryId" readonly="readonly" autocomplete="off">
<ul class="markt_header_searchCategoryMenu">
<label for="markt_header_searchRegionInput">Wo</label>
<input id="markt_header_searchRegionInput" class="markt_
...und nochmal ---so jetzt ist es eingefärbt. (hatte von Scite Quellcode kopiert), egal
Bild Erklärung
Gelb ist bei allen Seiten das gleiche Suchmuster
Blau wird hier gezeigt obwohl es nicht gesucht wird <input id
Roter Pfeil = in dieser Zeile kommt nochmal name= vor und das ist das richtige Feld! ![]()
Ilse
P.S. Ich brauche nur 1 Ergebnis und das heißt Keywords!
Guten Morgen Bugfix,
vielleicht ist es so etwas übersichtlicher.
Das ist der Quelltext
<script majax:evalscript="global" type="text/javascript">
<div id="markt_header_logoBox">
<div id="markt_header_loginBox">
<div class="markt_header_fbLike">
<div id="markt_header_searchBox">
<div id="markt_header_searchBoxTop">
<div id="markt_header_searchBoxBottom">
<form action="http://www.seite.de/suche.htm" method="post">
<input type="hidden" name="userUsedAutocompletion" value="false">
<label for="markt_header_searchPhraseInput">Was</label>
<input id="markt_header_searchPhraseInput" class="markt_header_searchPhraseInput markt_header_searchTextInput ac_input" type="text" tabindex="1" value="z.B. Laptop" name="keywords" autocomplete="off">
<label>In</label>
<input class="markt_header_searchCategoryInputDummy markt_header_searchSelectInput" type="text" tabindex="2" value="Allen Kategorien" readonly="readonly" autocomplete="off">
<input class="markt_header_searchCategoryIdInput" type="hidden" value="" name="categoryId" readonly="readonly" autocomplete="off">
<ul class="markt_header_searchCategoryMenu">
<label for="markt_header_searchRegionInput">Wo</label>
<input id="markt_header_searchRegionInput" class="markt_
Ich benötige nur das Wort keywords von diesem Bereich
value="z.B. Laptop" name="keywords" autocomplete="off">
So, nochmal das Problem:
Es gibt mehrere Quellcodes. Alle Quellcodes besitzen aber das gleiche Muster
und zwar sie fangen alle mit
<input an, dann folgen div. Felder und dann kommt name="..." und den Wert benötige
ich von allen Seiten.
Hier nochmal bildlich dargestellt.
die erste input Zeile sollte nicht ausgewertet werden
aber die zweite. Da ist auch name= drin!
Dieser code zeigt im Array 2 Ergebnisse
gewünscht wäre aber nur ein Ergebnis Row1 Keywords
#include <Array.au3>
$sSource=ClipGet()
;$arrayfilter = StringRegExp($sSource,'<input .*?name="(.*?)".*?>',3)
;$arrayfilter = StringRegExp($sSource,'<(?i)input name=(.*?) (?i)/>',3)
$arrayfilter = StringRegExp($sSource, '<(?i)input id(.*?)name="(.*?)"(?i)', 3)
_ArrayDisplay($arrayfilter, "Array Auswertung")
Hoffe ich konnte das Problem auf den Punkt bringen
Liebe Grüße
Ilse ![]()
Hallo zusammen,
ich habe ein Problem mit der Erstellung
von Controls in Zusammenhang mit Resize.
Hier mal der Code zum nachvollziehen:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Guisuche = GUICreate("Namen", 811, 628, 559, 111, BitOr($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX, $WS_MAXIMIZEBOX))
GUICtrlSetData(-1, "Edit1")
$delete = GUICtrlCreateButton("delete", 32, 108, 75, 25)
$Create = GUICtrlCreateButton("Create", 128, 108, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $delete
GuiCtrlDelete($Checkbox1)
GuiCtrlDelete($Checkbox2)
Case $Create
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 52, 160, 97, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 52, 184, 97, 17)
EndSwitch
WEnd
1. Ich klicke auf Create (checkboxen werden erstellt)
2. Ich resize die Gui (checkboxen werden angepasst)
soweit ok!
Aber dann...
1. Ich lasse die Gui maximized
2. Ich klicke delete (Controls werden gelöscht!
3. Ich klicke auf Create (Checkboxen...sollten dort nicht erscheinen)
Wie kann man das beheben?
Liebe Grüße
Ilse ![]()
Super!
Grüße
Ilse ![]()
Hallo,
und merci erstmal!
konnte mich jetzt leider erst wieder melden.
Mußte nochmal los...
Folgende Frage noch an Misterspeed:
Zitat
...sinnvoller die ganze GUI zu löschen und neu zu erstellen
hm..wie mache ich das am besten?
Beispiel:
GUIDelete("MeineGui") löscht die kpl. Gui! Dann ist alles weg! Alle Controls...
Muß ich die ganze GUI in eine Funktion packen?
Mal wieder Neuland...
Liebe Grüße
Ilse ![]()
Hallo tuttifrutti,
leider kein Ergebnis!
Kopiere bitte diesen Quelltext in die Zwischenablage
<input type="hidden" name="userUsedAutocompletion" value="false">
<label for="markt_header_searchPhraseInput">Was</label>
<input id="markt_header_searchPhraseInput" class="markt_header_searchPhraseInput markt_header_searchTextInput ac_input" type="text" tabindex="1" value="z.B. Laptop" name="keywords" autocomplete="off" style="color: black;">
<label>In</label>
2. Starte dein Script
#include <Array.au3>
$sSource=ClipGet()
;$arrayfilter = StringRegExp($sSource,'<input .*?name="(.*?)".*?>',3)
$arrayfilter = StringRegExp($sSource,'<(?i)input name=(.*?) (?i)/>',3)
;$arrayfilter = StringRegExp($sSource,'name=(.*?)', 3)
_ArrayDisplay($arrayfilter, "Array Auswertung")
For $i = 0 To UBound($arrayfilter) -1
MsgBox(0,"",$arrayfilter[$i])
next
Das Ergebnis sollte
keywords
sein!
RegEx muß <input enthalten damit
auch ein Ergebnis bei anderen Seiten erfolgt!
Das ist das Problem ![]()
Liebe Grüße
Ilse ![]()
Hallo,
ich probiere schon seit einiger Zeit diese Controls zu löschen.
Ausschnitt Beispielcode:
So wurden die Controls erstellt
For $i = 0 To UBound($arControl) - 1
$arControl[$i][0] = GUICtrlCreateCheckbox('', $Links + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, 13, 13)
$arControl[$i][1] = GUICtrlCreateLabel($var[$i][1], $Links + 20 + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen,110, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlSetFont(-1, 12, 500, 0, "Arial")
GUICtrlSetOnEvent(-1, "_CheckboxSelect")
$arProgress[$i] = GUICtrlCreateProgress($Links + 140 + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, 70, 14)
Next
Frage:
Wie kann die das ganze nochmal per Loop genau so entfernen?
bin mit _ArrayDelete nicht weitergekommen!
Gibt es da noch einen anderen Befehl?
Grüße
Ilse ![]()
...nee leider nicht!
Das mit dem input sollte drin sein,
sonst stimmen die anderen Ergebnisse nicht!
$arrayfilter = StringRegExp($sSource,'<input .*?name="(.*?)".*?>',3)
Das Problem:
Es gibt Felder mit:
<input id
<input type
<input class
...und die haben auch Felder mit name=
Schau dir bitte nochmal mein Beispiel an,
da kann man den Fehler am besten nachvollziehen.
Obwohl <input .*? benutzt wird, sollten alle arrays angezeigt werden.
Grüße
Ilse ![]()
Hallo tuttifrutti,
ja, genau nur das Wort keywords
also das was in Name steht!
Das ist normalerweise auch kein Problem.
Nur im Regex sollte <input mitverwendet werden.
Das brauche ich für andere Suchmuster!
...und genau das bekomme ich nicht hin!
Liebe Grüße
Ilse ![]()
Hallo Bugfix,
bin noch immer am probieren.
Das hat leider nicht geklappt.
Vielleicht gibt es noch ne andere Lösung:
Ich möchte nur das Wort "keywords" anzeigen.
<input brauch ich für die anderen Seiten!
Hier mal die kpl. Zwischenablage
<input type="hidden" value="false" name="userUsedAutocompletion" />
<label for="markt_header_searchPhraseInput">Was</label>
<input type="text" id="markt_header_searchPhraseInput" class="markt_header_searchPhraseInput markt_header_searchTextInput"
name="keywords" value="z.B. Laptop" tabindex="1"
/>
<label>In</label>
Hier der regexCode
[autoit]
#include <Array.au3>
$sSource=ClipGet()
$arrayfilter = StringRegExp($sSource,'<input id.*?\sname="(.*?)".*?>',3)
_ArrayDisplay($arrayfilter, "Array Auswertung")
For $i = 0 To UBound($arrayfilter) -1
MsgBox(0,"",$arrayfilter[$i])
next
verwende ich <input .*?name="(.*?)".*?> das geht nicht! (hier sollten doch 2 Einträge stehen9
verwende ich <input id.*?name="(.*?)".*?> das geht auch nicht! (hier sollte 1 Eintrag stehen)
komm da einfach nicht weiter!
Grüße
Ilse ![]()
Hallo,
konnte mich gestern leider nicht mehr melden.
Bin aber schon ein Stück weiter...
Danke erstmal für dein Beispiel Schnuffel
und natürlich ein merci für BugFix
Liebe Grüße
Ilse ![]()
Hallo Bugfix,
danke für die Hinweise.
Noch ein paar Fragen:
Der IniOrdner kann 5, 10 oder mehrere inis enthalten. (Inhalt ist unbekannt)
Bei inireadsection muß man doch jede ini einzeln angeben, bevor man Sie ausliest.
Wie kann ich den Inhalt aller inis im Ordner ermitteln?
Tappe da noch etwas im dunkeln...
Grüße
Ilse ![]()
Hallo Bugfix
werd ich gleich probieren.
Liebe Grüße
Ilse ![]()
meld mich wieder wenn alles getestet ist.
Hallo
ich muß mit regex einen Text ausschliessen! type="hidden"
<input type="hidden" name="userUsedAutocompletion" value="false">
<input id="markt_header_searchPhraseInput" name="keywords" autocomplete="off">
hier mein Code
#include <Array.au3>
$sSource=ClipGet()
$arrayfilter = StringRegExp($sSource,'<input id.*?\sname="(.*?)".*?>',3)
_ArrayDisplay($arrayfilter, "Array Auswertung")
For $i = 0 To UBound($arrayfilter) -1
MsgBox(0,"",$arrayfilter[$i])
next
das klappt soweit, nur bei einigen Seiten gibt es Probleme.
Ich kann zwar die Suche so aufbauen
Suche nach
$arrayfilter = StringRegExp($sSource,'<input [id|class].*?\sname="(.*?)".*?>',3); aber wie kann ich type="hidden" ausschliessen?
ich muß aber meine Suche so aufbauen
Suche nach das, das... oder das... aber NICHT nach das, oder das...!
input id
input class
aber nicht
input type
wie macht man das?
Grüße
Ilse ![]()
Guten Morgen zusammen,
ich habe ein Problem mit mehreren ini Dateien.
Ich möchte von jeder Datei die IniReadSection lesen
Beispiel:
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 440, 192, 124)
$iniWahl = GUICtrlCreateCombo("...", 384, 112, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$MeineIni = @ScriptDir & "\ini\tiere.ini"
$var = IniReadSection(@ScriptDir & '\ini\tiere.ini', "Titel")
$link = IniReadSection(@ScriptDir & '\ini\tiere.ini', "Link")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $iniWahl
[/autoit] [autoit][/autoit] [autoit]EndSwitch
WEnd
Diese möchte ich aber per Combobox auswählen
Kurze Erklärung:
1. Es gibt mehrere ini Dateien (der Aufbau ist immer gleich)
2. Es gibt einen Ordner wo sich alle inis befinden. (@ScriptDir & "\ini\)
In diesen Ordner kommen weitere inis von Zeit zu Zeit hinzu.
Ini Beispiel
[Titel]
1=Hunde
[Link]
1=www.hunde.de
Das Problem und Ablauf
1. Geht das, daß man alle ininamen (dateinamen) in die Combobox automatisch einlesen kann?
2. Kann man zur Laufzeit (ohne alles im Code neu zu schreiben) die ini anhand
der Auswahl der Combobox auslesen?
Beispiel:
Der Ini Ordner enthält 3 Ini Dateien
Hunde.ini
Katzen.ini
Vögel.ini
Diese Namen sollte nun in die Combobox eingelesen werden
Hunde.ini
Katzen.ini
Vögel.ini
Wählt man Katzen
dann wird aus der Katzen.ini gelesen.
Wird der Inhalt des IniOrdners
erweitert z.B. Welpen.ini kommt hinzu, dann sollte das auch funktionieren,
ohne jedesmal den Quellcode neu zu schreiben. Combobox wird ergänzt...
Ist das irgendwie möglich?
Liebe Grüße
Ilse ![]()