Lagere doch einfach die Arbeit mit dieser ominösen PythonApp.exe in ein anderes Skript / eine andere Anwendung aus. Wenn sie noch nicht gestartet ist, startest du sie aus deinem Hauptskript heraus. Ansonsten stellst du eben an diese Anwendung all deine Anfragen, die du allgemein bearbeitet haben möchtest.
Beiträge von autoiter
-
-
Das aktuelle Datum kannst du etwas schneller mit StringRegExpReplace bearbeiten, wie die Hilfe zeigt:
$nowDate_new = StringRegExpReplace(_NowDate(), '(\d{2}).(\d{2}).(\d{4})', ' $3/$2/$1 ')
-
Hallo Mikki
schau dir doch einfach mal die Hilfe zu _DateDiff an. Da steht doch genau, wie die Parameter $sStartDate und $sEndDate auszusehen haben.
-
Hallo Code-Jack
Ich habe mir das Skript noch nicht angesehen. Allerdings scheint mir das auch keine Frage zu diesem Skript, sondern zu SQL bzw. SQLite zu sein.
Frage also: Wie kriege ich einen einzelnen Feldinhalt der Datenbank (definiert anhand der ID des in der ListView selektierten Datensatzes) ausgelesen, um ihn einer InputBox zuzuweisen?
Lass uns behaupten, dass Feld würde ID heißen. Dann könnte der Befehl lauten: SELECT * FROM TABELLENNAME WHERE ID = Whatever
Ich bin sicher, dein Problem ist gar nicht so groß- Schau dir einfach mal SQLite-Tutorials an.
-
Ja, du hast ein eindimensionales Array, weil du nur eine Spalte ausliest.
Local $aResult = _Excel_RangeRead($oWorkbook, Default, $oWorkbook.ActiveSheet.Usedrange.Columns("A:A"), 2)
Das hatte ich übersehen.
Wenn du folgendes gemacht hättest, hättest du deine ganze Tabelle ausgelesen (davon bin ich ausgegangen).
Local $aResult = _Excel_RangeRead($oWorkbook, Default, Default, 2)
Das bedeutet das [$i] die Elemente so lange weiter nach unten führt bis keine mehr da sind bzw das letzte erreicht ist. Und [1] bedeutet in dem Falle das er immer den Wert aus der Spalte 1 nehmen soll richtig soweit ?
Nein. Arrays sind nullbasiert (Also der erste Wert steht nicht in Feldnummer 1 sondern 0). Das Feld A1 aus Excel wäre bei einem zweidimensionalen Array $aResult das Element $aResult[0][0].
Daher kommt auch der Fehler. Du versuchst Werte aus der Array(spalte) auszulesen, die es nicht gibt.
Du kannst hier überall die zweite eckige Klammer löschen, da es ein eindimensionales Array ist. Also statt
$aResult[$i][1] einfach $aResult[$i].
-
Hallo lsc
Das sind ja wirklich nur aneinandergefügte Beispiele.
Funktioniert es denn? Siehst du am Ende ein Fenster, dass dir Die Inhalte deiner Excel-Datei anzeigt?
Die Variable $aResult die du da hast, ist ein Array. Wenn du auf einzelne Werte zugreifen möchtest, musst du sie angeben, wie du sie da in dem Fenster siehst (Feld A1 wäre $aResult[0][0])
Du kannst dieses Array in einer Schleife durchgehen. Schau dir dazu vielleicht auch noch die Hilfe an. Bsp. wenn die Nummern in der zweiten Spalte stehen:
-
Ich denke, er möchte wissen, ob die Datei überschrieben wird (ja)
Die Datei wird aber nicht gelöscht, oder?
-
Ganz ehrlich GerhardSchr Wenn du die Idee auch hattest, aber es anders haben möchtest, dann schreib das doch bitte direkt im Eingangspost..
-
Hallo GerhardSchr
Ich weiß nicht, wäre das etwas für dich?
AutoIt
Alles anzeigen#include <Array.au3> Local $sPath = @DesktopDir Local $sFile = StringTrimLeft($sPath, StringInStr($sPath, "\", 0, -1)) ConsoleWrite($sFile & @CRLF) Local $sPSScript = "Get-Acl " & $sPath Local $iPid = Run("PowerShell.exe " & $sPSScript, @ScriptDir, @SW_HIDE, 2) ProcessWaitClose($iPid) Local $sRet = StdoutRead($iPid) ConsoleWrite($sRet & @CRLF) Local $aArray = StringSplit(StringRegExp($sRet, "(?s)Path Owner Access(.*?)" & $sFile, 3)[0], @CRLF, 1) _ArrayDisplay($aArray)
Path, Owner und Access sind hier nicht weiter aufgedröselt. Aber ich kann das nicht elegant mit StringRegExp lösen und will mich hier nicht völlig entblößen.
-
Hallo bigeasy76
Nein, hier wird nichts überschrieben. Siehst du nicht, dass Bitnugger eine Prüfung eingebaut hat, ob die Datei bereits vorhanden ist, und sie nur lädt, wenn das nicht der Fall ist?
(Wenn du keine Datei brauchst könntest du den ganzen Inetget und FileRead Block auch entfernen und Local $sXML = BinaryToString(InetRead($sURL, 1)) schreiben.
-
Hallo wuff100
Prinzipiell kann die Zeile "A3" & ":" & "G" & $zeile funktionieren. Wenigstens, wenn du vorher alles richtig gemacht hast, um eine Range auszulesen und die Variable $zeile eine positive Ganzzahl enthält..
Wenn du also ein Problem hast, hast du eine der Bedingungen nicht erfüllt.
PS: Als Fortgeschrittener solltest du eigentlich unaufgefordert ein Minimalskript posten, das dein Problem veranschaulicht.
-
Ist zwar OT aber Musashi
Auf chip.de findest du unter diesem "Installer" immer den irreführenden Punkt "manuelle Installation". Das ist dann das übliche Herunterladen.
-
Du kannst jedem einzelnen Array-Element einen Wert zuweisen, wie auch einer Variable.
$aArray[0] = 15 schreibt den Wert 15 in das Array-Element mit dem Index 0.
-
Das war ja eine sehr gute Frage von autoBert.
Die SQLite-UDF mit allen Befehlen ist für SQLite-Datenbanken. Du kannst die UDF nicht auf MSSQL anwenden. Suche in deiner _sql.au3 nach der Funktion, mit der du allgemeine Queries absetzen kannst.
-
Nein Kanashius
der (Haupt-)Fehler liegt hier nicht im Befehl. (Auch wenn die Angabe der Datenbank in der Logik der UDF wegfallen würde (die ist ja der erste Parameter..). Das Problem ist wirklich, dass ValleAIT nie die Datenbank per SQlite3.dll geöffnet hat, sondern ADODB verwendet.
Es ist wie autobert und ich geschrieben haben.
@ValleAITIch bin offen für bessere oder einfachere Vorschläge, da ich noch relativ am Anfang bin und ich natürlich hierbei dann ein Verbesserungspotential habe
Benutzt du SciTE4AutoIt als IDE? Dann kannst du einfach den Textcursor auf das Wort _SQLite_Exec setzen (etwa in dem du es anklickst) und dann F1 drücken. Schon öffnet sich die Hilfe zur Funktion _SQLite_Exec. Andernfalls kannst du ihn dir ja auch manuell suchen. Zu jedem der _SQLite_*-Befehle findest du in der Hilfe auch Beispiele. Da siehst du, was du wie machen musst.
Im Grunde ist es genau so kurz, wie das was du bisher machst:
-
Hallo @ValleAIT
Du mischst hier verschiedenes. Ich kenne einerseits deine _sql.au3 nicht. Also kann ich dir jetzt auch nicht den passenden Befehl nennen..
Damit verbindest du dich zur Datenbank und damit liest du auch aus. Löschen willst du jedoch mit einem Befehl aus der sqlite.au3.
Allerdings kannst du nicht _SQLite_Exec nutzen ohne zuvor _SQLite_Startup zu benutzen. Damit will ich dich nicht motivieren, das auch noch einzufügen. Du solltest aufhören zu mischen. Wenn es um sqlite geht, dann nimm nur die Befehle aus der SQLite.au3.
PS: Wenn du mal eine @error-Prüfung nach der _SQLite_Exec-Zeile einfügen würdest, würdest du auch einen Fehlerwert erhalten. Das sollte immer der erste Test sein
EDIT: Wobei es hier wohl einfacher ist, den äquivalenten Befehl zu _SQLite_Exec aus deiner _sql.au3 zu suchen und zu nutzen und stattdessen _SQLite rauszuschmeißen. Immerhin hast du ja schon alles andere damit umgesetzt.
-
Hey Andy
Das sehe ich nicht so. Eine Programmiersprache ist in aller erster Instanz erst mal eine Summe von Befehlen, aka FUNKTIONEN.
Und das was diese Funktion macht, bestimme ich als Programmiersprachenersteller. Ich bestimme aber auch, wie diese Funktion heißt.
Ergo habe ich bei einer Entwicklung die Möglichkeit, eine (gewollte) Verbesserung innerhalb des Funktionscodes so durchzuführen, dass die Ergebnisse der Funktion mit der der Vorversion übereinstimmen.
Ich denke das kann man bei einer Sprache die Vererbung, Überschreibung, usw. kennt so sagen. Aber AutoIt war einfach anders angelegt. Du musst nicht immer alles includen, sondern kannst für vieles direkt loslegen. Wenn man da alle Varianten nebeneinander ermöglichen wollte, würden bald die abenteuerlichsten Funktionsnamen-Varianten entstehen. Das wäre auch nicht sinnvoll.
Auch damit kämpfe ich fast jeden Tag, mittlerweile ist es schon problematisch, ein "Fenster" in den "Vordergrund" zu holen. Das ist aber nicht das Problem von AutoIt, sondern von WIN10
Das ist kein "Problem" von Windows 10. Vielmehr ist es doch so, dass AutoIt für Win32 Controls entwickelt wurde und seit langer Zeit keine Weiterentwicklung stattfindet, während Microsoft auf der anderen Seite Windows weiterentwickelt.
-
Hey danke für das Update UEZ
Ich habe das (mit der Manipulation von $iW / $iH) mal auf meinen Laptop getestet (i7-6500U). Ergebnis waren 24fps. Zwar finde ich die feinere Optik eigentlich viel besser, aber so langsam ist es dann doch nicht, Da finde ich das tricksen schon in Ordnung
-
Hallo admin
Seit einigen Wochen erhalte ich keine Mails mehr bei neuen Benachrichtigungen. In meinem Konto sieht alles richtig konfiguriert aus und in meinem Spam-Ordner landen die Mails auch nicht. Ich glaube, du hattest auch schon versucht das Problem zu beheben. Allerdings besteht es (bei mir) noch immer.
Kannst du das irgendwie nachvollziehen?
Außerdem gab es hier noch einen Beitrag mit einer Problemmeldung: Fehler in der Shoutbox - Links mit schließender Klammer werden 'abgeschnitten'
-
Wirklich ein cooler Effekt in v1.27. Danke UEZ