Exitloop verlässt dann alle Schleifen?
Du kannst die Ebene angeben, die verlassen werden soll.
Siehe
ExitLoop
[/autoit]einfach draufklicken.
Exitloop verlässt dann alle Schleifen?
Du kannst die Ebene angeben, die verlassen werden soll.
Siehe
ExitLoop
[/autoit]einfach draufklicken.
Spoiler anzeigen
[Blockierte Grafik: http://i.epvpimg.com/AsZTb.png]
Hm ja, da freue ich mich schon und es funktioniert nicht
Was habe ich falsche gemacht? Windows 7 64 Bit.
Grüße Njahs
Habe auch Win7 64bit, anscheinend funkt dein Virenscanner dazwischen.
Nachdem ich meinen gesamten Perseus-Ordner als Ausnahme bei avast hinzugefügt habe, ist alles wie am Schnürchen gelaufen.
Kannst ja auch mal testweise dein AV aussschalten und nochmal probieren, wenns dann funktioniert, weißt ja worans liegt ![]()
PainTain:
-> Avast ausschalten
-> Downloaden und ZIP entpacken (Alles am besten in einen Ordner)
-> Pfad als Ausnahme in Avast hinzufügen
-> Avast wieder einschalten
Hab einfach mal die apaste-URL + einen Download-Ordner dafür als Ausnahmen hinzugefügt.
avast blockiert auch die kompilierten Exe'n, wenn ich sie in Papierkorb verschiebe. ![]()
minx: Andromeda sieht ja echt super aus, ist der Lexer komplett selbst geschrieben?
Ah, endlich released!
Sehr schön, werd ich mir gleich anschauen/ausprobieren. ![]()
(Zuvor muss ich mal Avast überreden, die FASM.exe zu ignorieren und nicht gleich den ganzen Download zu blockieren
)
Also das direkte befüllen der Datenbank von extern geht dann definitiv nicht.
Das ist aber eigentlich normal bei shared-hosting-systemen, da man sonst unter umständen und über Umwege Zugriff auf die ganze Datenbank vom Server hat.
Stell dir deine Datenbank einfach als ein Schrank mit vielen Schubladen und dein Schrank steht in einer Wohnung in einem Hochhaus mit 300 Wohnungen .
Mit entsprechenden Hacks, falls die Server-Systeme nicht mit entsprechenden Sicherheitspatches gesichert sind, könntest du alle Schränke und Schubladen im gesamten Hochhaus befüllen/manipulieren.Dir dürfte somit nur der Weg wie von Pain Tain genannt bleiben.
Das wird auf jeden Fall eine FummelarbeitPainTain, doch die Logindaten müssen schon übergeben werden auch bei localhost-Datenbanken.
Das ist das gleiche Prinzip als wenn ein CMS-System wie Joomla die Datenbank befüllt, dazu wird ebenfalls im CMS-Backend der Datenbankuser und das Passwort hinterlegt.
Ich meinte damit, dass er die Login-Daten nicht unverschlüsselt etc. in sein AutoIt-Skript schreiben müsste, sondern dass diese im PHP-Skript z.B. hardcoded sein können.
Du könntest das/die Passwort/-wörter in einer Ini-Datei speichern und beim Start einfach wieder auslesen.
Aus der Fehlermeldung kann man sogar den Fehler lesen.
Irgendwo im Forum gibt es ja auch einen Thread, wie man Fehler richtig findet bzw. debugt.
"Array variable has incorrect number of subscripts or subscript dimension range exceeded." - _FileWriteFromArray() unterstützt nur max. 2 Dimensionen.
Laut Hilfe sollte @error gesetzt werden...
Jedenfalls, du wirst dir diese Funktion wohl selber für 5 Dimensionen schreiben müssen, aber das sollte nicht viel Arbeit sein.
Wozu gibst For-Schleifen ![]()
Friesel:
Ich leg nochmal nach, hier eine noch flexiblere Variante:
$s = StringRegExp($sHTML, "(?:[a-zA-Z]*)(?:\s)(?!Stub)(?:[a-zA-Z]*)(?:\s)(\d+\.\d+\.)(?:[a-zA-Z]*)", 1)
[/autoit]![]()
Da ist es auch egal, wenn das Setup z.B. fdsaabgas fd 24.0.exe heißt.
Mir war halt langweilig (Und es war eine gute Übung für mich) ![]()
Hier mal eine schnelle Variante mit RegEx:
[autoit]$sBaseURL = "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/latest/win32/de/"
[/autoit][autoit][/autoit][autoit]$sHTML = BinaryToString(InetRead($sBaseURL, 1))
[/autoit][autoit][/autoit][autoit]$s = StringRegExp($sHTML, "Firefox Setup [0-9][0-9].[0-9].exe", 1)
$sDownloadLink = $sBaseURL & $s[0]
ConsoleWrite($sDownloadLink & @CRLF)
InetGet($sDownloadLink, @ScriptDir & "" & $s[0])
Solange sich das Dateinamen-Muster nicht ändert, also immer Firefox Setup **.*.exe bleibt, sollte diese Lösung funktionieren ![]()
(Bitte nicht für den RegEx schlagen, bin noch kein RegEx-Veteran
)
Du könntest doch auch einfach
[autoit]Shutdown()
[/autoit]verwenden ![]()
Ist doch einfacher.
P.S.: Es heißt AutoIt
Du könntest mithilfe von "WinExists" arbeiten.
Hier ein kleines Beispiel:
While WinExists("Installation") ; natürlich Titel anpassen
Sleep(1000) ; Nach deinem Geschmack halt anpassen
WEnd
Sleep(2000)
MsgBox(0, "InfoBox", "Das Programm wurde erfolgreich installiert !!", 5)
tja leider ich davon fast gar keine Ahnung etwas mehr hilfe wäre nett
MfG
Wofür brauchst du das überhaupt?
Den wenn man sich deinen vorherigen Thread anschaut ... es geht um das gleiche Thema.
Und du könntest ruhig ein wenig Selbstbeteiligung zeigen und dir mal z.B. peethebee's Buch durchlesen und die Beispiele in der Hilfe durcharbeiten ..
Und es gibt auch zusätzlich eine deutsche Hilfeübersetzung mit Beispielen bei den Befehlen.
Danke
Der Packer ist mpress. Alle Antivirenprogramme sollten dann den String "mpress" in der "Bedrohung" enthalten. mpress ist ähnlich oft genutzt wie UPX, und eine bessere Alternative. Eine ungepackte Version vielleicht im nächsten Build. Allerdings ist die LASM.dll genau so gepackt worden, also ebenfalls per mpress!
Ja teste weiter
. Das mit dem Console-Write behebe ich in der nächsten Version
Eine ungepackte Version wäre wirklich nicht schlecht, da Avast ein wenig rumspinnt, was Ausnahmen betrifft. (Es blockiert gleich mal den Download)
Habs mir das ganze jetzt mal in eine VM geladen (auch wegen den Grafik-Spielereien/Interrupts :D), da ich es geschafft habe, für die ganze Vbox mal eine Ausnahme hinzu zufügen.
Und mal so nebenbei: Manche Absätze hast du auch mal ganz schnell runtergerattert, was? ![]()
ZitatWenn wir nund as Handle der Datei haben können wir sie auch benutzen. Zum Beispiel lesen. Wenn du die Lesen-Funktion as Interrupt 21h benutzen willst, muss due die Register wie folgt anlegen:
Edit: Ähm...
[Blockierte Grafik: http://m34.img-up.net/Capturee352.PNG]
Habs mir soeben ausgedruckt und in einen Schnellhefter getan für unterwegs (und gegen Langeweile in der Schule
). Habs kurz uberflogen, paar Fehler sind noch drin, wie z.B. 'Internat' statt 'Internet' (oder direkt auf der ersten Seite in dem kleinen Text
- 'kompelxes').
Aber trotzdem super Buch. 47 Seiten, war ja sicher ganz schön Arbeit. Respekt.
Wollte mich sowieso schon mal mit ASM beschäftigen, nachdem ich gesehen hab, was für Wunderwerke hier manche damit geschaffen haben.
Hab schon drauf gewartet ![]()
Hatte ja schon die "Vorab"-Version teilweise gelesen, werd ich mir gleich mal downloaden, sobald ich von der Schule heimkomm ![]()
Nun unterschätze mal die Stringfunktionen nicht. Es gibt fast nichts, was man nicht mit ihnen lösen könnte. Es ist nur manchmal etwas aufwändiger und bedarf mehrerer Einzelschritte.
Ohne dass ich mich jetzt in das Problem vertieft habe, wage ich mal kess die Behauptung: Es geht locker ohne Regexp mit den nativen Stringfunktionen.
Ist RegEx am Ende nicht auch eine riesige, sehr komplexe Ansammlung von Stringfunktionen?
Ich habe das bei meiner Seite folgend gelöst:
Hier mal ein Beispiel-Menü, so wie deins:
<div id="panel">
<ul class="menu-nav menu-nav-list" style="margin-top: 10px; margin-bottom: 0px;">
<li<?php if ($page == "home") { echo ' class="active"';} ?>>
<a class="menu" href="/index.php"> Home</a>
</li>
<li<?php if ($page == "projects") { echo ' class="active"';} ?>>
<a class="menu" href="/index.php?page=projects"> Projects</a>
</li>
<li<?php if ($page == "downloads") { echo ' class="active"';} ?>>
<a class="menu" href="/index.php?page=downloads"> Downloads</a>
</li>
<li<?php if ($page == "contact") { echo ' class="active"';} ?>>
<a class="menu" href="/index.php?page=contact"> Contact</a>
</li>
</ul>
</div>
Alles anzeigen
Die Variable $page musst du entsprechend füllen, welche Seite halt derzeit aktiv ist.
Und um den Link dann eben einzufärben, musst du noch die die Klasse "active" schreiben.
So könnte die dann z.B. aussehen
Mit einer Message Loop habe ich es auch schon einmal versucht...
Was mache ich aber, wenn ich eine GUI in einem neuen Fenster aufrufe? Muß ich dann in jedem
Fenster eine eigene Message-Loop einbauen (z.B. Dialogfenster oder Detailfenster usw), oder wird
dann alles in einer Loop erledigt?
Das kannst du dir im Prinzip aussuchen.
Entweder eine Funktion, wo die GUI erstellt wird + MessageLoop oder eine Funktion, wo nur die GUI (+ Controls) erstellt wird und du verarbeitest dann alles mit der Main-Loop, und falls nötig, schau dir mal den Parameter von GUIGetMsg() in der Hilfe an ![]()
Zitat von der HilfeEs kann keine Funktion aufgerufen werden die Parameter enthält.
![]()
Jedenfalls, du könntest es mit einer MessageLoop machen:
[autoit]$hGUI = GUICreate("Test", 140, 100)
$idOkayButton = GUICtrlCreateButton("Test-Button", 20, 20, 100, 50)
GUISetState()
[/autoit][autoit][/autoit][autoit]While 1
Switch GUIGetMsg()
Case -3 ;$GUI_EVENT_CLOSE
Exit
Case $idOkayButton
; dein Code
_DeineButtonFunktion($par1, $par2)
EndSwitch
WEnd