Hi zusammen,
ich selbst habe bisher keine Berührungspunkte mit der UDF bzw. dem Thema gehabt, doch würde mich interessieren 🤔 , nachdem ihr beiden Ahnungslos und Moombas Einschränkungen bzw. Inkonsistenzen in der Nutzung der UDF beschrieben habt, ob ihr (natürlich gern auch andere der Community hier) Alternativen kennt, nutzt oder empfehlen könnt?
So wie beschrieben ist dies ja kein Zustand 😔 . Denn die meisten von uns vertrauen auf korrekte Abarbeitung der Funktionalität in einer UDF bzw. in Abhängigkeiten an sich, welche man in sein Projekt einbindet. Daher meine Anmerkung hier.
Ich weiß hipfzwirgel , dies hilft dir nicht, doch ggf. könnte oder sollte man die UDF überarbeiten.
Viele Grüße
Sven
Beiträge von SOLVE-SMART
-
-
Hi Banana_2_Day ,
da ich ISN AutoIt Studio nicht als Editor nutze, bin ich hierbei sicherlich nicht der richtige Ansprechpartner.
Dies ist wohl eher ISI360 😇 .
Ich melde mich nur weil mir dein beschriebenes Szenario danach klingt, dass du in deinem "Haupt-au3" Skript, die "input-au3" per #include "input-au3" einbindest (und fertig).Vielleicht liege ich auch völlig falsch, dass wird ISI360 sicherlich aufklären, doch an sich ist ein modularer Aufbau, bei dem du GUI von Actions (Funktionen der Business Logik als Beispiel) trennst, zu empfehlen.
Mich würde mal deine Projekt-Struktur 📋 interessieren, damit ich bzgl. der Idee zum ISN AutoIt Studio dazulernen kann, doch dies vielleicht besser an anderer Stelle im Gespräch mit ISI 😀 .
Viele Grüße
Sven -
Hi Tweaky ,
ja VACUUM ist richtig. Eine kurze Google-Suche/Stackoverflow-Einträge zeigen dir schnell was nötig ist. Eigentlich nichts weiter als der Aufruf des keywords
.
In deinem speziellen Fall, mit der Firefox Datenbank, bin ich nicht sicher ob du auch den auto_vacuum mode umstellen könntest (auf none oder zumindest incremental), sodass die Datenbank nicht gleich wieder so groß wird. Denn die DB wird ja durch Firefox systemseitig ge'managed.
Viele Grüße
Sven
-
Hi Tweaky ,
also soweit ich testen konnte und kurz recherchiert habe, kennt SQLite kein truncate.
Hat mich auch gewundert chesstiger 🧐 .Wenn du wirklich alle Zeilen entfernen willst, dann ist das truncate pendant, delete from, so wie du es auch bereits nutzen wolltest.
Hier eine funktionierende Version (unter Win10 mit sqlite3_x64.dll):
AutoIt
Alles anzeigen; includes --------------------------------------------------------------------- #include-once #include <Array.au3> #include <SQLite.au3> #include <SQLite.dll.au3> ; declaration ------------------------------------------------------------------ Global $sSqliteDll = 'sqlite3_x64.dll' Global $sDatabase = 'places.sqlite' Global $hDatabase ; processing ------------------------------------------------------------------- _Startup($sSqliteDll) _OpenDatabase($sDatabase) _ShowTableContent('moz_historyvisits') _ExecuteQuery('delete from moz_historyvisits;') _ShowTableContent('moz_historyvisits') _TearDown() ; functions -------------------------------------------------------------------- Func _ShowTableContent($sTableName) $aQueryResult = _QueryResultToArray('select * from ' & $sTableName & ';') _ArrayDisplay($aQueryResult) EndFunc Func _Startup($sDll) _SQLite_Startup($sDll) If @error Then MsgBox(16, 'Error', 'File "' & $sDll & '" not found.') Exit -1 EndIf EndFunc Func _OpenDatabase($sDatabase) $hDatabase = _SQLite_Open($sDatabase) If @error Then MsgBox(16, 'Error', 'Can not open database "' & $sDatabase & '".') Exit -1 EndIf EndFunc Func _QueryResultToArray($sQuery) Local $aQueryResult, $iRows, $iColumns _SQLite_GetTable2d($hDatabase, $sQuery, $aQueryResult, $iRows, $iColumns) Return $aQueryResult EndFunc Func _ExecuteQuery($sQuery) _SQLite_Exec($hDatabase, $sQuery) EndFunc Func _TearDown() _SQLite_Close() _SQLite_Shutdown() EndFunc
Bin gespannt ob es ggf. bei dir nicht funktioniert.
Viele Grüße
Sven -
Hi quasimodoz ,
was genau meinst du damit?Dann muss ich wohl in den sauren Apfel beißen.
Dein Skript funktioniert und du kannst es mit AutoIt nutzen aber du magst nicht den Weg wie du die Rückgabewerte des PS-Skript bekommst?
Oder was genau meinst du?
Also kurz gesagt, brauchst du noch weitere Hilfe/Tipps/Unterstützung oder ist das Thema für dich abgeschlossen?
Falls ja, dann kannst du es gern als solches, "erledigt", markieren 😀 .
Viele Grüße
Sven -
Hi quasimodoz ,
BugFix hat dir bereits eine Variante aufgezeigt, wie du Powershell in AutoIt nutzen kannst bzw. wie du mit dem Output umgehen kannst.
Hier mal noch eine weitere, über die Zwischenablage:AutoIt
Alles anzeigenGlobal $sPowershellFilePath = @ScriptDir & '\PowershellScript.ps1' Global $sPowershellCode = 'Get-Process | Select-Object -Property Id, ProcessName | Set-Clipboard' Global $sPowershellResult = _ExecutePowershellCode($sPowershellCode) ConsoleWrite($sPowershellResult & @CRLF) Func _ExecutePowershellCode($sCode) _DeleteTempFile() _WriteFile($sPowershellFilePath, $sCode) _ExecutePowershell() _DeleteTempFile() Return ClipGet() EndFunc Func _DeleteTempFile() FileDelete($sPowershellFilePath) EndFunc Func _WriteFile($sFile, $sText) Local Const $iUtf8WithoutBomAndOverwriteCreationMode = 256 + 2 + 8 Local $hFile = FileOpen($sFile, $iUtf8WithoutBomAndOverwriteCreationMode) FileWrite($hFile, $sText) FileClose($hFile) EndFunc Func _ExecutePowershell() Local $sPowershellCall = 'powershell -executionpolicy bypass -File' ShellExecuteWait(@ComSpec, '/C ' & $sPowershellCall & ' "' & $sPowershellFilePath & '"', '', '', @SW_HIDE) EndFunc
- Ich gehe hier davon aus, dass powershell in den Umgebungsvariablen zu finden ist.
- Desweiteren wird auf Abschluss des Powershell Aufrufs gewartet => ShellExecuteWait.
- Danach ist das Ergebnis in der Zwischenablage und von dort kannst du ja machen was du willst 😅 .
Oftmals transformiere ich das Ergebnis in ein Array und von dort geht es dann weiter, je nach Bedarf.
Hilfreich kann auch sein, wenn du noch vor | Set-Clipboard ein Konvertierungs-Commandlet setzt wie bspw. ConvertTo-Json oder ConvertTo-Csv (Html, Xml) etc.
Get-Process | Select-Object -Property Id, ProcessName | ConvertTo-Json | Set-ClipboardSo oder so ähnlich (musst du anpassen), könnte dann dein PS-Code aus post #1 aussehen.
AutoItGlobal $sPowershellCode = _ '$Test = "This is a test"' & @CRLF & _ @CRLF & _ 'if ($Test -eq "This is my test") {' & @CRLF & _ ' 1 | Set-Clipboard' & @CRLF & _ '} else {' & @CRLF & _ ' 2 | Set-Clipboard' & @CRLF & _ '}'
Viele Grüße
Sven -
Hi Dietmar ,
geht es dir am Ende immer noch darum an deinen Status (bspw. "Neu" des SVG Textes) heranzukommen?
Oder willst du danach noch mehr machen? Wie genau bist du denn jetzt an die Information, HTML-tag <text> herangekommen?
💡 Teile doch mal bitte mehr Infos mit uns und ggf. auch deinen bisherigen Code.
Natürlich können wir dir hier Beispiele für das einbetten des IEs in eine GUI geben, aber vielleicht ist das gar nicht was du brauchst.
Ansonsten hilft sicherlich schon das Beispiel in der Hilfe Referenz _IECreateEmbedded 😉 .
Viele Grüße
Sven -
Hi bobbyjames ,
welcome to the forum 👋 .- Why do you think it's worthy to add a post to an Thread which recent post was in 2011?
- Are you able to write your posts in german? I mean this is the german forum 😁 . If not maybe it's a good idea to have a look at the english forum.
Best regards
Sven -
Hi Dietmar ,
Die Seite ist nur intern verfügbar richtig? Also keine Chance deine richtige URL zu nutzen? Das wäre hilfreich.
Diese Frage steht noch aus.
Viele GrüßeSven
-
Hi Lambdax ,
auch von mir ein herzliches Willkommen 👋 .
Viel Erfolg bei deinen ambitionierten Vorhaben 👍 .
Viele Grüße
Sven -
Hi,
Soviel ist mit der URL von mir zu sehen.
Wir sprachen doch von InetRead, nicht InetGet!
AutoIt;~ Global $sUrl = "http://badge.*****/666" Global $sUrl = "http://www.badge.*****/666" Global $sText = InetRead($url) ConsoleWrite($sText & @CRLF)
Hast du beide Varianten (mit und ohne www.) versucht?
Viele Grüße
Sven -
Hi Dietmar ,
ich würde dir gern die Nutzung von au3WebDriver empfehlen, bin mir aber unsicher (wenn der Status "Achtung Anfänger!" in deiner Signatur so stimmt), ob dies nicht zu komplex sein könnte.
Die Seite ist nur intern verfügbar richtig? Also keine Chance deine richtige URL zu nutzen? Das wäre hilfreich.
Viele Grüße
Sven -
Hi,
bekommst du denn überhaupt erstmal deinen Quellcode für deine URL "http://www.badge.*****/666" zurück?
Wenn ja, dann holen wir den Text des HTML-tags <text> zur Not auch ohne die _HTML.au3 UDF.
Viele GrüßeSven
-
Hi Dietmar ,
bitte https://www. noch dazuschreiben, bei deinem lego.de Beispiel und schon bekommst du den Quellcode zurück 😉 .
Viele Grüße
Sven -
Hi nochmal,
AutoIt
Alles anzeigen#include-once #include "_HTML.au3" Global $sUrl = "http://badge.*****/666" Global $sHtmlSource = _HTML_GetSource($sUrl) ConsoleWrite($sHtmlSource & @CRLF) Global $sText = _HTML_GetText($sHtmlSource, "text") MsgBox(0, "", $sText) Exit
Setze doch mal bitte, wie im Quellcode hier, den HTML-Tag Parameter auf "text". Schließlich ist das dein Status wenn ich dich richtig verstehe 😀 .
Geht es damit?
Viele GrüßeSven
-
Hi Dietmar ,
hast du es mal mit einer anderen Seite auf der ein SVG eingebunden ist versucht?
Ansonsten InetRead() und dann mit RegEx dein <text> ... </text> bzw. Status heraussuchen. Reicht das nicht schon?
Viele Grüße
Sven -
Hi BugFix ,
Wenn wirklich mal ein bemerkenswertes Posting erscheint. kann man natürlich mit einem begeisterten Antwortpost reagieren.
Ja genauso habe ich es in #18 gemacht, aus Ermangelung einer Alternative 😁 .
Danke dir auch für die Info bzgl. euren Erfahrungen mit solchen Voting Geschichten. Ja die Gefahr besteht natürlich.
Dennoch mag ich persönlich die Option eine Markierung für eine korrekte Lösung setzen zu können (ähnlich wie bei stackoverflow), aber das ist jammern auf hohen Niveau 😅 .
Viele Grüße
Sven -
Hi Musashi ,
Wir waren wohl alle noch zu sehr vor Ehrfurcht erstarrt [...]
warum gibt's hier im Forum keine Vote-Icons oder ähnliches, denn dan bekämst du jetzt eines von mir 👍 🤣 .
Viele Grüße
Sven -
Hi Leute,
BananaJoe und Lambdax auch eure Lösungsvorschläge liefern das korrekte Ergebnis 👍 . Danke für die weiteren Varianten und an sich für's Mitmachen.Da die Aufgabenstellung war "von 1 bis 100" kann meine Version auch nur eine begrenzte Anzahl machen (nur bis 3-stellig, also max. 999)
Ich finde es gut, dass du die Problemstellung zunächst so angegangen bist, wie die Aufgabe es verlangte 😀 , auch wenn ein Umbau nötig ist um mit den anderen Versionen mitzuhalten - dennoch sehr "Agile", nice 👍 .
Nun zu dir Andy :
- Deine Bezeichnugn "Märchenonkel" klingt super, wird dir aber nicht gerecht - du bist mehr 😁 .
- Im ersten Augenblick war ich sprachlos wie viel Kreativität, Energie und Erfahrung in dir und in den Anderen hier stecken => #wow! #ErfürchtigSchauend 😇 .
- Nachdem ich deinen Beitrag ein zweites Mal gelesen hatte war ich noch überraschter, denn dein Ansatz/die Umsetzung war absolut verständlich und nachvollziehbar erläutert #HutAb!
Die Idee mit dem "kleinen" Array habe ich mir bei einem eigenen Script, dem erweiterten Primzahlensieb (auch ein µ-It gewesen) abgeschaut, mit LUT geht vieles viel schneller und trotz meines biblischen Alters und fortschreitendem Gehirnschwund fallen mir doch noch so manche Tricks ein [...]
Was soll man dazu sagen? Einfach Danke, konnte herzhaft darüber lachen 😂 👍 .
Jedenfalls hats Spass gemacht! Danke auch dafür an SOLVE-SMART!
Ich habe das zum Anlass genommen, wieder mehr mit AutoIt zu machen [...]
Bitteschön, das freut mich ehrlich ganz besonders!
Viele Grüße
Sven
-
Hi Yjuq ,
Falls du daran denkst ggf. bereits gefundene Zahlen zwischenzuspeichern um den Rechenaufwand zu minimieren -> Das klappt nicht. [...]
Okay, spannend das du bereits einige Tests gemacht hast 👍 . In erster Linie geht es um die Aufgabenstellung nicht um Performanz oder ähnliches - dennoch gut zu wissen, Danke.
Viele GrüßeSven