Beiträge von James
-
-
Kann es sein, dass sich die zwei Downloads ins Gehege kommen?
Dass ich irgendeine Warteschleife einbauen muß, bevor der zweite Download auf die selbe Funktion zugreift?
Nein, es scheint als würde _FTP_ProgressDownload das Skript selbstständig pausieren, bis der Download beendet ist. Die 4 Downloads sollten also bereits nacheinander ablaufen. -
WOW .. ich hab sogar alles verstanden was Du geschrieben hast
*schulterklopf*
War das bei vorherigen Beiträgen nicht so? Sollte ich mich unklar oder (wie so oft) viel zu kompliziert ausdrücken, frag einfach nochmal nach.
Mir kommt es so vor, als würde die "While-Schleife" garnicht erst durchlaufen.
Vor dem Ausschnitt oben steht aber schon ProgressOn, oder?
-
Was ich nun aber garnicht verstehe ich Deine Aussage "Eigene Funktionen lassen sich übrigens genauso aufrufen wie alle anderen, d.h. Call ist nicht nötig." Das mit dem Aufrufen der Funktionen entzieht sich mir.
Du hast es aber trotzdem richtig gemacht.
$DL_state ist vielleicht etwas ungünstig benannt, aber ansonsten sollte es funktionieren. Wie viel schon heruntergeladen wurde bräuchtest du eigentlich vor der Schleife nicht abfragen, da der Download in den paar Millisekunden sowieso nicht fertig wird. Dann müsstest du allerdings While $DL_state < $DL_size durch While InetGetInfo($DL_Get, 2) ersetzen. Das sind aber nur Kleinigkeiten, wichtig ist, dass es funktioniert.
Wie du die Prozent berechnest verstehe ich irgendwie noch nicht so ganz, was aber nicht heißt, dass es falsch ist. Ich hätte da einfach ($DL_state / $DL_size) * 100 benutzt.
Zeile 9 ist übrigens wieder unnötig, da deine Funktion immer 1 zurückgibt und du diesen Wert sowieso nicht verarbeitest. Zeile 6 könnte eigentlich auch vor die Schleife, da sich da auch nichts ändert.Aber irgendwo liege ich noch falsch.
Fehler finde ich aber auch keine mehr.
-
Du lässt dir vor der Schleife die Informationen über den Download geben und dann nie wieder. Die Anzahl der heruntergeladenen Bytes ändert sich aber (hoffentlich). Also muss das in die Schleife. Außerdem versuchst du [Download fertig?] mit [heruntergeladene Bytes] zu vergleichen, was überhaupt keinen Sinn macht.
Eigene Funktionen lassen sich übrigens genauso aufrufen wie alle anderen, d.h. Call ist nicht nötig.
$percent musst du auch noch in der Schleife berechnen. Du verwendest die Variable zwar, deklarierst sie aber nirgends. AutoIt sollte da eigentlich auch eine Fehlermeldung ausgeben.Einige Sachen stimmen in deiner Liste sogar, wieso sind sie dann im Skript falsch? Und für InetGetInfo lohnt sich ein Blick in die Hilfe.
Und AntiSpeed hat höchstwahrscheinlich aus Versehen im falschen Thema gepostet, anders kann ich mir den Text nicht erklären.
-
Genau, was ist eigentlich das Problem mit der WMI Lösung?
Hier mal eine angepasste Version um die richtige MAC Adresse zu erhalten. Dafür brauchst du dann allerdings den Namen oder irgendeinen anderen Wert des Adapters.
[autoit]Func GetMACAddress($sKey, $sValue, $sComputer="localhost")
[/autoit][autoit][/autoit][autoit]
Local $oWMI, $oItems, $oItem
$oWMI = ObjGet("winmgmts:\" & $sComputer & "")
If @error Then Return SetError(1, 0, "")
$oItems = $oWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapter", "WQL", 0x30)
If (Not IsObj($oItems)) Then Return SetError(2, 0, "")For $oItem In $oItems
[/autoit]
If Execute("$oItem." & $sKey) = $sValue Then
Return $oItem.MACAddress
EndIf
Next
Return SetError(3, 0, "")
EndFuncBeispiel:
[autoit]MsgBox(0, "", GetMACAddress("Name", "Realtek RTL8168B/8111B Family PCI-E Gigabit Ethernet NIC (NDIS 6.20)"))
[/autoit] -
Das Seitenlayout darf leider nicht verändert werden.
Sie hat es mittlerweile auch aufgegeben, danke trotzdem für deine Hilfe. -
Die Funktion DllCall unterstützt als Datentyp für die Parameter und den Rückgabewert str.
-
Ich denke da gehen Daten verloren
Oder der String wird einfach komprimiert. -
Ist folgendes richtig?
- Eine Funktion steht normal nach dem Exit ?
- Die Funktion kann über ihre Bezeichnung (in meinem Fall "_UpdateProgress") auch öfter aufgerufen werden?1) Der Übersichtlichkeit halber ja. 2) Ja.
[autoit]Local $Ftpc = _FTP_Close($Open)
[/autoit]Da du diese Variable nirgends verwendest kannst du alles bis auf _FTP_Close($Open) weglassen.
[autoit]While Local $DLstate = InetGetInfo($DLGet, 1)
[/autoit]Das funktioniert so nicht, du kannst keine Variablen in einem Schleifenkopf deklarieren. Lösung: While InetGetInfo($DLGet, 2) (1 wäre nur die Größe des Downloads, und bei Zahlen ist <> 0 eigentlich immer True --> Endlosschleife)
In der Schleife liest du "einfach" die schon heruntergeladen Bytes und die Größe des Downloads (wobei das vor die Schleife kann da sich der Wert nicht ändert) aus, teilst die beiden und rufst damit dann deine Funktion auf (wie jede andere auch).
-
Screenshot ist im Anhang
Die zweite Seite ist nicht drauf, aber ich weiß, dass es einfach weiterhin Fließtext ist. Ich hoffe das reicht, da es ist etwas umständlich Screenshots zu machen, da ich kein Word habe und das Problem nicht bei mir auftritt, sondern ich nur beim Suchen einer Lösung mithelfe.
-
-
Fast.
1) Du musst den Rückgabewert von InetGet einer Variable zuweisen und diese dann auch bei InetGetInfo verwenden.
2) Du musst bei jedem Schleifendurchlauf abfragen, ob der Download fertig ist, d.h. InetGetInfo in den Schlefenkopf packen.
3) $DLstate not True funktioniert nicht, richtig wäre Not InetGetInfo($Download, 1).
4) Du kannst Funktionen nicht in Schleifen deklarieren. Die Funktionen sollten alle am Ende des Skriptes stehen, du musst sie nur in der Schleife aufrufen. Dafür brauchst du dann natürlich wieder einen Wert von InetGetInfo. -
Guten Tag liebe Community.
Heute wurde mir zum ersten Mal ein Problem präsentiert, das auch ich nicht lösen konnte. Und da Google in diesem Fall auch nicht helfen wollte, frage ich einfach mal die MS-Office Experten, von denen es hier im Forum hoffentlich ein paar gibt.
Das Problem ist, dass zwischen dem Textende und der Fußzeilenlinie eigentlich noch genug Platz ist um noch eine weitere Zeile Text unterzubringen. Word ist das anscheinend egal, denn der Text geht einfach auf der nächsten Seite weiter.
Die Frage wäre jetzt, wie man Word klar macht, dass dort noch eine Zeile dazwischenpasst. Über andere Lösungen, die dieses rein optische Problem auch lösen können wäre ich allerdings auch erfreut.MfG James
-
Die letzten beiden Parameter von InetGet sind options und background, wobei für background nur die Werte 0 oder 1 in Frage kommen, eben je nach dem, ob der Download im Hintergrund laufen soll.
Du musst also selbst mit InetGetInfo prüfen, ob der Download noch läuft und wie viel schon heruntergeladen wurde und aus diesen beiden Infos eine Schleife bauen, die deine Funktion _UpdateProgress aufruft. -
Nein, bisher habe ich Koda direkt gestartet. Da hakt es eben schon, dass ich das mit AutoIt garnicht in Verbindung bekomme.
Der Button zum Einfügen sollte aber trotzdem vorhanden sein, nur dann eben nicht funktionieren. (Der Button hat an der Seite einen kleinen Pfeil um die anderen Optionen auswählen zu können.) Das Einfachste wäre es wahrscheinlich Koda über Alt+m direkt aus SciTE zu starten.
Mir wurde zu beginn hier immer ins Gewissen gesprochen, dass ich den "Mehraufwand" zum erstellen der Oberflächen in kauf nehmen soll, dafür den Code aber selber schreibe. Also ich würde es so jedem anderen auch nun ans Herz legen. Wenn man es auch einige male gemacht hat, geht es von Hand ziemlich genau so fix finde ich
Ich hatte mir auch kurz überlegt, ob ich das nicht vielleicht ansprechen sollte, dachte dann aber, dass das Projekt ja wahrscheinlich in näherer Zukunft fertig sein soll und es eben schon ein bisschen Zeit in Anspruch nimmt GUIs selbst zu programmieren bzw. das zu Lernen. (Das Programmieren selbst geht dann natürlich schneller als das Zusammenklicken mit Koda.) Aber du hast natürlich Recht.
-
-
Dafür brauchst du eigentlich "nur" folgende Befehle:
[autoit]Run
[/autoit]
ProcessExists
StdinWrite
StdoutRead(Wobei du die letzten Befehle nur für die Shell brauchst, oder eben um die Rückgabe von ADB auszulesen.)
Dieses Thema könnte dir auch helfen.
-
Auch von mir ein herzliches Willkommen.
-