Beiträge von misterspeed
-
-
Warum soll das nicht möglich sein? Schau dir in der Hilfe die Funktionen der FTP UDF an. Sofern du FXP, also den direkten Transfer zwischen beiden Servern meintest, dann ist das zumindestens nicht ohne weiteres mit den UDF Funktionen möglich. Da bietet sich dann evtl. ein automatisierbarer Drittanbieter FTP Client an. Oder du beschäftigst dich eben näher mit dem FTP Protokoll und verwendest
[autoit]_FTP_Command
[/autoit]um das gewünschte zu realisieren.
Außerdem sei noch angemerkt, dass die FTP UDF leider nur unverschlüsselte FTP Sitzungen erlaubt, es empfiehlt sich also ohnehin alternative Clients zu automatisieren.
-
Auch unter XP konnte man Tasks erstellen/planen. Siehe hier: http://en.wikipedia.org/wiki/At_%28Windows%29
Laut wikipedia ist der Nachfolger von "at" die "schtasks.exe", allerdings gibt es die angeblich nicht unter XP Home und Starter. AT sollte aber auf allen Windows Plattformen funktionieren. Besonders aufwendig ist das auch nicht, du brauchst nur 2 Zeilen, die eine im Autoitscript um den Task anzulegen, die andere in der Batch um ihn wieder zu löschen.
-
misterspeed: Wenn jede Zeile gelesen wird, darfst du keinesfalls mit einem Zeilenzähler die gewünschte Zeile angeben. Dann wird jedesmal vom Anfang bis zu dieser Zeile gelesen. Gibst du nichts ein, gilt: Next Line, ohne dass das bisherige nochmal eingelesen wird. Der Pointer steht ja bereits am Ende der zuletzt gelesenen Zeile.
Öhm ja, hilfe lesen soll helfen. Danke für den Hinweis, war bei meiner mikrigen Testdatei so nicht erkennbar.
Hier mal eine gefixte Variante mit 100% Schreibcache, da wir bei einer 400mb Datei die um den Faktor 100 reduziert werden soll so wenig Ergebnisdaten haben, dass es kein Problem sein sollte diese komplett im RAM vorzuhalten und in einem rutsch zu schreiben. Bei mehr Daten macht ein auf XXX MB begrenzter cache aber sicherlich Sinn.
[autoit]$inputFile = @ScriptDir & "\bigmoon.txt"
[/autoit][autoit][/autoit][autoit]
$outputFile = @ScriptDir & "\littlemoon.txt"$hInFile = FileOpen($inputFile,0)
[/autoit][autoit][/autoit][autoit]
$hOutFile = FileOpen($outputFile,1)
$interval = 100
$sOut = ""while 1
[/autoit][autoit][/autoit][autoit]
$sLine = FileReadLine($hInFile)
if @error = -1 Then ExitLoop
$sOut &= $sLine & @CRLFFor $i=1 to $interval-1
[/autoit][autoit][/autoit][autoit]
FileReadLine($hInFile)
if @error = -1 Then ExitLoop 2
Next
WEndFileWrite($hOutFile,$sOut)
[/autoit][autoit][/autoit][autoit]FileClose($hInFile)
[/autoit]
FileClose($hOutFile) -
Hier mal eine simple Umsetzung der vorgeschlagenen Lösung:
[autoit]
[/autoit][autoit][/autoit][autoit]
$inputFile = @ScriptDir & "\bigmoon.txt"
$outputFile = @ScriptDir & "\littlemoon.txt"; create dummy input data
[/autoit][autoit][/autoit][autoit]
$random = Random(10000,100000,1)
$sData = ""
For $i = 1 To $random
$sData &= "Line " & $i & @tab & "blahblah...." & @CRLF
Next
FileWrite($inputFile,$sData)
; -----------------------------------------------------------$hInFile = FileOpen($inputFile,0)
[/autoit][autoit][/autoit][autoit]
$hOutFile = FileOpen($outputFile,1)
$interval = 100$i = 1
[/autoit][autoit][/autoit][autoit]
while 1
$sLine = FileReadLine($hInFile,$i)
if @error = -1 Then ExitLoop
FileWriteLine($hOutFile,$sLine)
$i += $interval
WEndFileClose($hInFile)
[/autoit]
FileClose($hOutFile) -
Man könnte den Aufruf der scratch.cmd evtl. auch über die Aufgabenplannung "programmieren". Einfach Datei wie gehabt erstellen, Task zum Aufruf erstellen, Programm beenden. Dadurch dürfte der Virenscanner nicht mehr so ohne weiteres einen Bezug zwischen der Erstellung der Batch und der Ausführung durch dein Programm erkennen. Am Ende der batch sollte dann evtl. noch code eingefügt werden um den Task wieder aus der Aufgabenplannung zu entfernen.
Aber selbst wenn das mit Bitdefender so klappen sollte ist das natürlich keine Garantie, dass es immer so klappt. Jeder Virenscanner arbeitet anders, wenn es um die Verhaltensanalyse geht, da kann schon ein Update reichen um eine vorher funktionierende Methode ebenfalls zu blockieren.
-
-
Intel® Xeon® Processor E3-1290 v2 (8M Cache, 3.70 GHz)VERKAUFTSpoiler anzeigen
Link: http://ark.intel.com/de/products/65…-Cache-3_70-GHz
Zustand: nagelneu, unbenutzt inklusive Rechnung von Mindfactory
Preis: schlagt was vor, derzeit nirgendwo unter 750€ zu bekommen, hatte das gute Stück weitaus günstiger bekommen und würd das nun gern zu Geld machen
-
Asus P5E WS Professional Mainboard inkl. Intel Core2Duo 2,66GHz und Boxed KühlerVERKAUFTSpoiler anzeigen
Link: http://www.asus.com/Motherboards/P…ional/overview/
[Blockierte Grafik: http://i.imgur.com/agQjgGd.jpg]
Zustand: nicht mehr ganz so neu, etwas staubig, aber funktionstüchtig
Lieferumfang: Mainboard mit CPU und Kühler, Originalverpackung, Handbuch, Zubehör (evtl. unvollständig)
Preis: 75€ -
MSI NX8600GTS-T2D256EZ-HD 256MB PCIe Grafikkarte (Passiver Kühler, also silent)VERKAUFTSpoiler anzeigen
Link: http://de.msi.com/product/vga/NX…#/?div=Overview
[Blockierte Grafik: http://i.imgur.com/TM2CeyD.jpg]
Zustand: nicht mehr ganz so neu, aber funktionstüchtig.
Hinweis: Das Gehäuse muss ausreichend belüftet sein, ansonsten könnte die Grafikkarte überhitzen
Lieferumfang: Grafikkarte, Originalverpackung, Zubehör (evtl. unvollständig)
Preis: 40€ -
2 x Team Group Xtreem DDR2 800 1GB TXDD1024M800HC4-DVERKAUFTSpoiler anzeigen
[Blockierte Grafik: http://i.imgur.com/NIbvDXC.jpg]
Zustand: nicht mehr ganz so neu, aber funktionstüchtig
Lieferumfang: Nur der RAM
Preis: 25€ für alle 2 Module -
Soundkarte Creative Labs Soundblaster Audigy PCI SB0090VERKAUFTSpoiler anzeigen
[Blockierte Grafik: http://i.imgur.com/vTwTxoL.jpg]
Zustand: uralte PCI Soundkarte, aber funktionstüchtig
Lieferumfang: Nur die Soundkarte
Preis: 20€
Versandkosten für versichertes DHL Paket kommen noch dazu.
Wer was davon braucht einfach melden. Preisvorschläge sind natürlich auch willkommen

-
-
Geht bei mir auch problemlos unter 8.1 Pro x64. Schalt mal deinen Virenscanner testweise ab und teste nochmal. Außerdem wäre zum Debuggen wohl ein Aufruf der Batch mit sichtbarem Fenster, also @SW_SHOW angebracht.
-
Poste bitte ein Script das wenigstens ansatzweise Sinn ergibt und dein Problem veranschaulicht.
Dein aktuelles Beispiel lässt nur eine Aussage zu:
Die zweite Schleife ist total unnötig, da es reicht einmalig bei Programmstart den Hotkey zu definieren. In einer Schleife hat dieser Befehl jedenfalls nichts verloren.PS: Vorsorglich schonmal der Link zu den Forenregeln, da diese Art von Script eigentlich immer aus der selben Ecke kommt... https://autoit.de/index.php?page=Forumrules
-
[autoit]
#AutoIt3Wrapper_UseX64=n
[/autoit]Setz das mal ins Script und es geht. Die UDF funktioniert wohl nur unter 32bit.
-
-
Auf deinem Screenshot sieht man btw auch keine Datei namens "test.mdb". Also entweder ist diese hinter deiner msgbox versteckt oder du verwendest tatsächlich einen falschen Pfad worauf die Meldung ja hindeutet.
-
Um welche Webseite geht es denn? Link wäre hilfreich.
-
Eigentlich sollte ich ja nix mehr schreiben, da ich nicht glaube, dass es irgendwas ändert, aber da du nachwievor behauptest der zentrale Button würde seine Größe ändern hier der Gegenbeweis:
[autoit]
[/autoit][autoit][/autoit][autoit]
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>$Form1 = GUICreate("Form1", 600, 425, -1, -1,$WS_SIZEBOX + $WS_MINIMIZEBOX + $WS_MAXIMIZEBOX )
[/autoit][autoit][/autoit][autoit]Global $Button[6]
[/autoit][autoit][/autoit][autoit]$Button[1] = GUICtrlCreateButton("Button1", 250, 0, 100, 140)
[/autoit][autoit][/autoit][autoit]
$Button[2] = GUICtrlCreateButton("Button2", 250, 180, 100, 40)
$Button[3] = GUICtrlCreateButton("Button3", 250, 260, 100, 140)
$Button[4] = GUICtrlCreateButton("Button4", 20, 180, 100, 40)
$Button[5] = GUICtrlCreateButton("Button5", 480, 180, 100, 40)GUICtrlSetResizing($Button[1], $GUI_DOCKHCENTER + $GUI_DOCKVCENTER)
[/autoit][autoit][/autoit][autoit]
GUICtrlSetResizing($Button[2], $GUI_DOCKHCENTER + $GUI_DOCKVCENTER + $GUI_DOCKSIZE)
GUICtrlSetResizing($Button[3], $GUI_DOCKHCENTER + $GUI_DOCKVCENTER)
GUICtrlSetResizing($Button[4], $GUI_DOCKLEFT + $GUI_DOCKWIDTH)
GUICtrlSetResizing($Button[5], $GUI_DOCKRIGHT + $GUI_DOCKHEIGHT)GUISetState(@SW_SHOW)
[/autoit][autoit][/autoit][autoit]$timer = TimerInit()
[/autoit]
While 1
if GUIGetMsg() = $GUI_EVENT_CLOSE then Exit
if TimerDiff($timer) > 1000 Then
For $i = 1 to UBound($Button)-1
$aPos = ControlGetPos($Form1,"",$Button[$i])
GUICtrlSetData($Button[$i],$aPos[2] & "x" & $aPos[3])
Next
$timer = TimerInit()
EndIf
WEndDu magst vielleicht einen anderen Eindruck gehabt haben, aber das war dann wenn überhaupt nur eine optische Täuschung bedingt durch die VERGRÖSSERUNG der oberen und unteren Buttons. Wie dem auch sei lies die Dokumentation in der Hilfe und teste selbst, das bringt dir mehr als "wahnsinnig" rumzugooglen und hier im Forum zu demonstrieren, dass du nicht nur keine Ahnung hast, sondern auch noch postest bevor du dich selbst ausreichend mit den Antworten beschäftigt hast.
In diesem Sinne schließe ich mit einem Zitat, das du dir selbst am ehesten zu Herzen nehmen solltest:
Lesen! Steht sogar schon geschrieben.
-
Sag mal willst du uns auf den Arm nehmen? Wenn du es schon nicht fertig bringst selbst mal rumzuprobieren und dir deine eigene Testgui zu bauen, dann schau dir wenigstens den Quellcode an den man dir hier auf dem Silbertablett serviert hat. Ein !! Blick in die Hilfe !! zum verwendeten Befehl
[autoit]GUICtrlSetResizing
[/autoit]
reicht völlig um Frage 1 zu beantworten. Man müsste noch nichtmal in die Hilfe schauen, denn Button2 in der GUI Mitte aus meinem Beispielscript macht genau das was du wolltest. Er bleibt in der Mitte und er verändert seine Größe nicht (im Gegensatz zu den anderen Buttons...).Was Frage 2 angeht: Lies die Hilfe zu folgenden Funktionen und teste selbst...
[autoit]wingetpos
[/autoit]
winmove -
Nunja wo ist nun das Problem wenn die Einträge blau hinterlegt werden? Mehr als markieren ist ja nicht möglich wenn du keine Funktionalität für das Klickevent hinterlegst. Als workaround ist es evtl. möglich die Benutzerselektion einfach wieder zu entfernen, entweder als event auf gerade diesen ungewünschten Klick oder eben in regelmässigen Intervallen. Eine andere theoretisch mögliche Lösung wäre evtl. ein transparentes Label über dem Listview, dadurch sollten Klicks ebenfalls unmöglich sein.
-
Hier ein Beispiel wie man einzelne controls entsprechend relativ fixieren kann. Grundsätzlich kann man aber auch mit der Option "guiresizemode" das Defaultverhalten für alle controls festsetzen/ändern.
[autoit]
[/autoit][autoit][/autoit][autoit]
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>$Form1 = GUICreate("Form1", 600, 425, -1, -1,$WS_SIZEBOX + $WS_MINIMIZEBOX + $WS_MAXIMIZEBOX )
[/autoit][autoit][/autoit][autoit]$Button1 = GUICtrlCreateButton("Button1", 250, 0, 100, 140)
[/autoit][autoit][/autoit][autoit]
$Button2 = GUICtrlCreateButton("Button2", 250, 180, 100, 40)
$Button3 = GUICtrlCreateButton("Button3", 250, 260, 100, 140)
$Button4 = GUICtrlCreateButton("Button4", 20, 180, 100, 40)
$Button5 = GUICtrlCreateButton("Button5", 480, 180, 100, 40)GUICtrlSetResizing($Button1, $GUI_DOCKHCENTER + $GUI_DOCKVCENTER)
[/autoit][autoit][/autoit][autoit]
GUICtrlSetResizing($Button2, $GUI_DOCKHCENTER + $GUI_DOCKVCENTER + $GUI_DOCKSIZE)
GUICtrlSetResizing($Button3, $GUI_DOCKHCENTER + $GUI_DOCKVCENTER)
GUICtrlSetResizing($Button4, $GUI_DOCKLEFT + $GUI_DOCKWIDTH)
GUICtrlSetResizing($Button5, $GUI_DOCKRIGHT + $GUI_DOCKHEIGHT)GUISetState(@SW_SHOW)
[/autoit][autoit][/autoit][autoit]While 1
[/autoit]
if GUIGetMsg() = $GUI_EVENT_CLOSE then Exit
WEnd -
Nunja wo ist die Schwierigkeit? Schonmal einen Blick in die Hilfe geworfen und geschaut was es alles an Excel Funktionen gibt?
Da wären z.B.
[autoit]
[/autoit]
_ExcelSheetList
_ExcelSheetActivate
_ExcelReadSheetToArray
_ExcelReadArray
_ExcelReadCellVorraussetzungen die ebenfalls sinnvoll wären:
- Der Umgang mit Schleifen
- Der Umgang mit Arrays -> http://www.bug-fix.info/array_tut.htm -
Wo ist das Problem diese Variable als lokale Variable zu nutzen und an deine andere Funktion weiterzureichen? Machbar ist es aufjedenfall, ob es sinnvoll ist ist ein anderes Thema, das hängt davon ab wo du diese überall sonst noch brauchst.
[autoit]Alles anzeigen
[/autoit] [autoit][/autoit] [autoit]
;...
;global $globFullFilePath = "" ; global, weiß nicht wie ich den sonst in btn_recheck_click() reinbekomme
;...
Func frmMain_load()
;...
local $globFullFilePath = "" ; global, weiß nicht wie ich den sonst in btn_recheck_click() reinbekomme
;...
; Event Listener
While 1
;...
Case $hBtnReCheck
$globFullFilePath = btn_recheck_click($globFullFilePath)
;...
WEnd
EndFuncfunc btn_recheck_click($var)
[/autoit] [autoit][/autoit] [autoit][/autoit]
;...
$var = "irgendwasanderes"
return $var
endfunc -
[autoit]
[/autoit][autoit][/autoit][autoit]
local $socket = TCPListen ($ip,$port, 2048)
local $socketid = 0While 1
[/autoit]
$socketid = TCPAccept($socket)
If $socketid >= 0 Then
$senderip = SocketToIP ($socketid)
local $input = TCPRecv ($socketid, 4096)
filewrite ($datei, @HOUR & ":" & @MIN & ":" & @SEC & " " & $senderip & " " & $input & @crlf)
EndIf
WEndWas ich meinte ist der Verbindungssocket im Server. Dieser ist bei dir in der Variable $socketid gespeichert und hat nichts mit deinem $socket zu tun, welcher neue Verbindungen annehmen kann. Es ist aber richtig, wenn du den Verbindungsocket $socketid mit tcpclosesocket() schließt kann der client nichts mehr an den Server senden und muss eine neue Verbindung aufbauen. Wenn du also mehrere aktive Verbindungen haben willst braucht du statt einer Variable ein Array für die Verbindungssockets. Du könntest hier dann über dein Protokoll zur Kommunikation auch Regeln festlegen, damit Client und Server sich einigen können wie lange die Verbindung bestehen soll und wann es Zeit ist die Sockets auf beiden Seiten zu schließen. In deinem Beispiel trennt der Client aber ohenhin nach einmaligem senden, also kann auch der Server den Socket killen sobald die Daten empfangen wurden.
EDIT:
tcpshutdown bei "Programmende" hatte ich geschrieben, die Ewigkeit sollte spätestens dann vorbei sein wenn der Client oder der Server beendet wurde, hier verwendet man dann natürlich ein shutdown der TCP Funktionalität, genauso wie du bei Programmstart ein tcpstartup verwendest.