1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. GtaSpider

Beiträge von GtaSpider

  • Abbruch nach 33000 Sekunden

    • GtaSpider
    • 18. September 2014 um 15:48

    Hallo Phil,

    Handles werden immer bestimmten Programmen zugeschrieben. Das heißt, wenn du z.B. eine Datei öffnest, sagst das Programm zu Windows: Hey ich will ne Datei öffnen, gib mir mal ein Handle. Windows gibt dann genau diesem Programm ein neues Handle, welches die Datei öffnet. Wird das Programm nun wieder geschlossen, schließt Windows automatisch auch alle Handles.

    Heißt im Klartext: Du musst nicht jede Datei und jedes GDI Objekt am Ende löschen oder schließen. Trotzdem solltest du es tun, weil das nun mal zur sauberen Programmierung gehört. Man muss sich in Kopf brennen: Immer wenn ich ein Handle öffne, muss ich das auch wieder schließen, sonst kann schnell sowas passieren wie es jetzt Schellenursli passiert ist ;)

    lg,
    Spider

  • Stimme zum Vorlesen von Texten

    • GtaSpider
    • 4. September 2014 um 16:56

    Hey,

    Unser lieblings-Administrator (hoffentlich lesen i2c oder GunFood das hier nicht :D ) hat auch mal versucht so was zu machen aber dann mangels Zeit leider aufgehört. Aber ich denke da könntest du dran an knüpfen:
    SayIt - Sprachausgabe DeLuxe

    Viel Erfolg ;)
    Gruß,
    Spider

  • in eclipse (GCC/MinGW) SSP (stack smashing protection) aktivieren

    • GtaSpider
    • 11. August 2014 um 22:32

    Hey,

    Danke für deine Antwort. Ich habe das Problem jetzt gelöst, in dem ich die Pointer die betroffen waren noch mal neu Strukturiert habe. Ist strcpy/memcpy_s denn genauso schnell wie die normalen funktionen?

    Gruß,
    Spider

  • Performance-Analyse der neuen Datenstruktur "Map"

    • GtaSpider
    • 8. August 2014 um 17:50

    Hey AspirinJunkie,

    Ich habe ein großes Projekt wo ich mit einer ArrayList arbeite und habe mich sehr gefreut, als ich gesehen habe, dass AutoIt das nun auch selbst kann. Ich hatte leider bisher nicht genügend Zeit um zu testen ob es Performance Unterschiede gibt, ein riesen großes Dankeschön für deine Dokumentation. Ich werde, sobald die Stable draußen ist, auf Maps umsteigen. Danke dir :)

    Gruß,
    Spider

  • CMD, StringSplit und die Sache mit dem sauber programmieren

    • GtaSpider
    • 5. August 2014 um 12:00

    Hallo bbm,

    Ich finde das sieht schon ganz gut und sauber aus! Bei _CMDRead hast du die Variablen nicht ganz "richtig" benannt.
    Ein weiteres Problem ist: In jedem Code gehören Fehlerabfragen! Was passiert wenn der User kein WLAN hat? Was wenn er mehrere hat? Ich zum Beispiel hab an meinem festen PC kein WLAN und wurde gleich mit einer schönen Fehlermeldung von Autoit rausgeschmissen

    Code
    "001.au3" (21) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:


    ist auch logisch, weil der StringSplit in Zeile 16 nicht genügend CR's findet.

    Allgemein würde ich auch stark davon abraten, Kommandozeilenparameter zu parsen, da sie abhängig von Windows Version und Spracheinstellungen unterschiedliche Ergebnisse ausgeben können.
    Da solltest du eine elegantere Lösung, entweder über die WinApi oder über WMI (schaue da mal nach Scriptomatic). Google sollte dir hier weiterhelfen können.

    Spoiler anzeigen
    [autoit]

    ; _ArrayDisplay() ist hier als Debugging gedacht, sie werden später entfernt.

    [/autoit] [autoit][/autoit] [autoit]

    #include <Constants.au3>
    #include <Array.au3>
    #include <StringConstants.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _GetHostedNetworkSetting()
    If @error Then MsgBox(16, "", "Fehler: " & @error)

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetHostedNetworkSetting()
    ;Wir wollen hier Modus, SSID-Name, Maximale Clientanzahl, Authentifizierung, Verschlüsselung.
    Local $aFinalArray[11]
    Local $iFACounter = 1

    [/autoit] [autoit][/autoit] [autoit]

    $sOutput = _CMDRead("netsh wlan show hostednetwork") ;Ausführen des Consolenbefehls
    $aFullResult = StringSplit($sOutput, @CR) ;Aufteilen des Resultats
    _ArrayDisplay($aFullResult) ;Ausgabe wie es in CMD ist

    [/autoit] [autoit][/autoit] [autoit]

    ;Fehlerabfrage 1:
    If $aFullResult[0] < 8 Then Return SetError(1, 0, False)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    For $iArrayCounter = 4 To 8 Step 1 ;Auslesen der einzelnen Einstellungen

    [/autoit] [autoit][/autoit] [autoit]

    $aLineResult = StringSplit($aFullResult[$iArrayCounter], ":") ;Aufteilung zwischen Einstellungen und Zustand
    _ArrayDisplay($aLineResult) ;Ausgabe pro Einstellung

    [/autoit] [autoit][/autoit] [autoit]

    ;Fehlerabfrage 2:
    If $aLineResult[0] < 2 Then Return SetError(2, 0, 0)

    [/autoit] [autoit][/autoit] [autoit]

    ;Löschen der unnötigen Leerzeichen
    $sResultL = StringStripWS($aLineResult[1], $STR_STRIPLEADING + $STR_STRIPTRAILING + $STR_STRIPSPACES)
    $sResultR = StringStripWS($aLineResult[2], $STR_STRIPLEADING + $STR_STRIPTRAILING + $STR_STRIPSPACES)

    [/autoit] [autoit][/autoit] [autoit]

    ;Resultate in einen Array schreiben
    $aFinalArray[$iFACounter] = $sResultL
    $iFACounter += 1
    $aFinalArray[$iFACounter] = $sResultR
    $iFACounter += 1
    Next
    _ArrayDisplay($aFinalArray) ;Fertiger Array
    Return $aFinalArray
    EndFunc ;==>_GetHostedNetworkSetting

    [/autoit] [autoit][/autoit] [autoit]

    Func _CMDRead($sCommand)
    Local $sLine, $hPID

    [/autoit] [autoit][/autoit] [autoit]

    $hPID = Run(@ComSpec & " /c " & $sCommand, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    ProcessWaitClose($hPID)
    $sLine = StdoutRead($hPID)

    [/autoit] [autoit][/autoit] [autoit]

    Return $sLine
    EndFunc ;==>_CMDRead

    [/autoit]

    Gruß,
    Spider

    Edit: Achja, in der CMD Funktion hast du eine While Schleife die untunterbrochen den StdOut abfragt, das führt zu hoher Prozessorlast. Außerdem hast du in der Funktion nicht alle Variablen deklariert. Schau dir einfach mal mein Beispiel an ;)

  • AutoIt-Tools und Virusmeldung

    • GtaSpider
    • 31. Juli 2014 um 22:29

    Hey,

    Was ich mit den Links zeigen wollte: Das Problem ist UPX. Es gibt Viren die mit UPX gepackt sind, also sind für ein paar Virenscanner alle Dateien, die mit UPX gepackt sind Viren.
    Ich finde 2 von 54 Falschmeldungen sehr entspannt, das war früher viel schlimmer. Und weder von Dr. Web noch von Jiangmin hab ich je mals was gehört ;)

    Gruß,
    Spider

  • AutoIt-Tools und Virusmeldung

    • GtaSpider
    • 31. Juli 2014 um 16:35

    Hey,

    Hier mal der unterschied zu UPX, X64 und X32.
    Der Code ist folgender:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Compile_Both=y
    #AutoIt3Wrapper_UseX64=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    TCPStartup()
    UDPStartup()

    [/autoit] [autoit][/autoit] [autoit]

    TCPListen(@IPAddress1,12525)
    UDPBind(@IPAddress1,12525)
    TCPConnect(TCPNameToIP("www.google.de"),80)
    HotKeySet("{F5}","_f5")
    GUICreate("")
    GUICtrlCreateEdit("",0,0)
    GUISetState(@SW_SHOW)
    Send("hey, bin ich böse?{ENTER}drücke F5 umms herrauszufinden!")
    While Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _f5()
    GUIDelete()
    MsgBox(0,"","Nein..")
    Exit
    EndFunc

    [/autoit]

    UPX, x32: 9/54 Virenscanner sind angeschlagen
    https://www.virustotal.com/de/file/78606a…sis/1406817129/
    Ohne UPX, x32: 2/54 Virenscanner sind angeschlagen
    https://www.virustotal.com/de/file/4550d4…sis/1406817173/
    Ohne UPX, x64: 1/54 Virenscanner sind angeschlagen
    https://www.virustotal.com/de/file/499709…sis/1406817187/

    Gruß,
    Spider

  • Fehlersuche in kompilierter EXE ?

    • GtaSpider
    • 27. Mai 2014 um 16:01

    Hey Hassan,

    Stimmt, sorry, hab ich ganz vergessen zu erwähnen. Die stripper Datei ist in der Installation noch defekt. du musst dir die aktuelle Version des Strippers manuell runterladen und in AutoIt\SciTe\au3stripper\ ersetzten:

    http://www.autoitscript.com/forum/topic/16…p/#entry1166849

    Grßu,
    Spider

  • Fehlersuche in kompilierter EXE ?

    • GtaSpider
    • 27. Mai 2014 um 13:44

    Hey,

    Schnitzel hat vollkommen recht! Ordentliches Debugging bedeutet jeden Möglichen Fehler im Voraus ab zu fangen. (Ist ein Array wrkl ein Array, ist es groß genug, ist ein Objekt wirklich ein Objekt, keine Globalen Variablen benutzten, ...)

    Für die etwas fauleren unter uns: Es gibt in der neuen SciTe Version jetzt den au3stripper. Einfach folgende Zeilen ganz oben in deine au3 Datei tun (Mit SciTe Version 3.4.1+) . Dann wird vorm kompelieren eine _stripped.au3 datei erzeugt, die dann kompeliert wird. Wenn du nun die Zeile in deiner EXE hast, musst du einfach in die _stripped.au3 schauen. Da wurden nämlich alle Codezeilen (auch alle includes) in eine Datei gepackt.

    [autoit]

    #AutoIt3Wrapper_Run_Au3Stripper=y
    #Au3Stripper_Parameters=/mo /SCI=1

    [/autoit]

    Lieben Gruß,
    Spider

  • .net dll in Autoit verwenden

    • GtaSpider
    • 18. Mai 2014 um 17:34

    Hey,

    Ich weiß auch gar nicht wie du auf Java kommst :D Sogar das Tut ist in c# geschrieben. Da Dies aber eine DotNet DLL ist und AutoIt damit nicht umgehen kann, musst du dir wohl eine andere DLL suchen.

    Und zum tollen Plattformunabhängingen Programmieren fällt mir immer folgendes Zitat ein ;)

    Zitat

    Saying that Java is good because it works on all platforms is like saying anal sex is good because it works on all genders.

    Gruß,
    Spider

  • HexControl - Side by side HEX/String GUI Control

    • GtaSpider
    • 13. Mai 2014 um 22:42

    Hey,

    Brauchte für ein paar Projekte ein solches Control. Vielmehr zu sagen gibts eigentlich nicht, schaut einfach selbst ;)

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    HexControl UDF is licensed under a Creative Commons Attribution 4.0 International License.
    http://creativecommons.org/licenses/by/4.0/

    Gruß,
    Spider

    Dateien

    hexctrl.JPG 62,95 kB – 0 Downloads Hex Control.zip 3,64 kB – 692 Downloads
  • VT_ARRAY in AutoIt?

    • GtaSpider
    • 12. Mai 2014 um 13:30

    Hey,

    Bin gerade dabei dieses COM Objekt in AutoIt zu implementieren:
    http://www.codeproject.com/Articles/1384/…tor-OCX-Control

    Laut Dokumentation wird das Control mit SetData gefüttert.

    Zitat

    SCODE SetData(VARIANT* pData, long dwStartAddr)
    Transfer data to editing.
    Parameters:

    pData - Contains one-dimensional SAFEARRAY of bytes (i.e. pData->vt == VT_ARRAY | VT_UI1)
    dwStartAddr - Starting address value in the 'address field'. Irrespective of dwStartAddr, the data is displayed from the array's beginning.

    An example of call using MFC:
    COleSafeArray arr;
    BYTE pbData[200] = { 1, 2, 3, 4, 5 };
    arr.CreateOneDim ( VT_UI1, sizeof(pbData), pbData );
    (or arr.CreateOneDim ( VT_UI1, length ) for a non-initialized array)
    m_ctlHexEdit.SetData ( arr );
    The modified data exists in the same array, but its length may be modified in process of editing.

    Alles anzeigen

    Leider habe ich so gar keine Ahnung wie man ein VT_VARAINT bzw ein VT_ARRAY in AutoIt umsetzt. Ein wenig am googlen hab ich dann im Code von AutoIt Object folgende Zeilen gefunden:

    [autoit]

    $__Au3Obj_VT_ARRAY = 0x2000
    ;...
    Global Const $__Au3Obj_tagVARIANT = "word vt;word r1;word r2;word r3;ptr data; ptr"

    [/autoit]

    Ferner habe ich auch herausgefunden was ein ARRAY/SAFEARRAY ist.
    http://msdn.microsoft.com/en-us/library/…2(v=vs.85).aspx

    Also habe ich folgendes ausprobiert:

    Spoiler anzeigen
    [autoit]

    Opt("GUIOnEventMode", 1)
    Global Const $__Au3Obj_VT_ARRAY = 0x2000
    Global Const $__Au3Obj_VT_SAFEARRAY = 27
    Global Const $__Au3Obj_tagVARIANT = "word vt;word r1;word r2;word r3;ptr data; ptr"
    Global Const $__Au3Obj_tagSAFEARRAY = "ushort cDims;ushort fFeatures; ulong cbElements; ulong cLocks; ptr pvData;int rgsabound"

    [/autoit] [autoit][/autoit] [autoit]

    Global $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc")
    Global $oHEX = ObjCreate("HEXEDIT.HexEditCtrl.1")

    [/autoit] [autoit][/autoit] [autoit]

    Global $tVARIANT = DllStructCreate($__Au3Obj_tagVARIANT)
    Global $tSAFEARRAY = DllStructCreate($__Au3Obj_tagSAFEARRAY)
    Global $tData = DllStructCreate("byte data[256]")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $tSAFEARRAY.cDims = 1
    ;~ $tSAFEARRAY.fFeatures = 0x0400;An array of IDispatch*.
    $tSAFEARRAY.fFeatures = 0x0800;An array of VARIANTs
    $tSAFEARRAY.cbElements = 5;
    $tData.data = "12345"
    $tSAFEARRAY.pvData = DllStructGetPtr($tData)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUICreate("..")
    GUISetOnEvent(-3, "_exit")
    GUICtrlCreateObj($oHEX, 8, 8, 400 - 16, 400 - 16)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $tVARIANT.vt = $__Au3Obj_VT_SAFEARRAY
    $tVARIANT.data = DllStructGetPtr($tSAFEARRAY)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $oHEX.ShowAscii = True;Funktioniert
    $oHEX.SetData(DllStructGetPtr($tVARIANT), 0);Funktioniert nicht. 0 ist das Startbyte
    #cs
    ;Fehlerausgabe:
    wg.au3 (36) : ==> COM Error intercepted !
    err.number is: 0x80020005
    err.windescription: Typenkonflikt.

    [/autoit] [autoit][/autoit] [autoit]

    err.description is:
    err.source is:
    err.helpfile is:
    err.helpcontext is:
    err.lastdllerror is: 0
    err.scriptline is: 36
    err.retcode is: 0x00000000
    #ce

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _exit()
    Exit
    EndFunc ;==>_exit

    [/autoit] [autoit][/autoit] [autoit]

    ; User's COM error function. Will be called if COM error occurs
    Func _ErrFunc($oError)
    ; Do anything here.
    ConsoleWrite(@ScriptName & " (" & $oError.scriptline & ") : ==> COM Error intercepted !" & @CRLF & _
    @TAB & "err.number is: " & @TAB & @TAB & "0x" & Hex($oError.number) & @CRLF & _
    @TAB & "err.windescription:" & @TAB & $oError.windescription & @CRLF & _
    @TAB & "err.description is: " & @TAB & $oError.description & @CRLF & _
    @TAB & "err.source is: " & @TAB & @TAB & $oError.source & @CRLF & _
    @TAB & "err.helpfile is: " & @TAB & $oError.helpfile & @CRLF & _
    @TAB & "err.helpcontext is: " & @TAB & $oError.helpcontext & @CRLF & _
    @TAB & "err.lastdllerror is: " & @TAB & $oError.lastdllerror & @CRLF & _
    @TAB & "err.scriptline is: " & @TAB & $oError.scriptline & @CRLF & _
    @TAB & "err.retcode is: " & @TAB & "0x" & Hex($oError.retcode) & @CRLF & @CRLF)
    EndFunc ;==>_ErrFunc

    [/autoit]

    Leider gibt mir das nur den Fehler "Typkonflikt" aus. Weiß jemand wie ich ein VT_ARRAY in AutoIt hinbekommen, respektive was genau das überhaupt ist?

    Lieben Gruß und danke schon mal,
    Spider

  • AutoIt3.exe ended.rc:-1073741819

    • GtaSpider
    • 8. Mai 2014 um 19:51

    Hallo,

    Jip, ist ein Bug in AutoIt.
    http://www.autoitscript.com/forum/topic/15…ading-to-33102/

    Wurde mit der aktuelle Beta (Seit 11.3) behoben!

    Gruß,
    Spider

  • in eclipse (GCC/MinGW) SSP (stack smashing protection) aktivieren

    • GtaSpider
    • 7. Mai 2014 um 16:52

    Hey,

    Ich hoffe mir kann jemand helfen. Ich habe ein Programm mit ca 5mb Sourcode, teils von mir geschrieben, aber teils eben auch von anderen Personen. Ich greife mit AutoIt auf dieses Programm (als dll) zu, übergebe pointer etc. Meistens klappt es, ca alle 10 male aber nicht. Da stürzt Autoit einfach ab.
    !>16:51:05 AutoIt3.exe ended.rc:-1073741819

    Das Problem liegt in irgendeinem memcpy/strcpy/... welches keinen Zugriff auf ein gewissen Pointer hat (denk ich mal)

    Nun hab ich herausgefunden das es bei GCC/MinGW ein SSP (stack smashing protection) service gibt, so dass das tool ggf. eine Fehlermeldung ausgeben kann. Die Include Datein hab ich auch schon in include\ssp gefunden, leider kann ich sie nicht einfach einfügen ohne Fehlermeldung. Das ist auch nicht der weg wie man das macht, ich hab gehört man soll "-fstack-protector" als compiler param hinzufügen, klappt aber auch nicht.

    Blabla, hat jemand erfahrung damit wie man SSP unter Windows bei Eclipse mit GCC aktiviert? Bei google find ich irgendwie auch nichts, was funktioniert (ich verstehe es wahrscheinlich einfach nicht ;) )

    Hier z.B. Hab eine Datei erstellt die sspGuard.h heißt, die includiert und -fstack-protector als parameter hinzugefügt. immer noch mit gleichem Ergebnis.. (autoit stürzt ab)
    http://wiki.osdev.org/GCC_Stack_Smashing_Protector

    Gruß,
    Spider

  • Mod (modulo) macht Mist mit Multiplier

    • GtaSpider
    • 9. April 2014 um 14:01
    Zitat von AspirinJunkie

    Führe mal folgendes aus:

    [autoit]

    ConsoleWrite(StringFormat("%20.18f\n", 9.73))

    [/autoit]


    Was sehen wir? - 9,73 ist nicht für den Computer exakt darstellbar.
    Das liegt schlicht am verwendeten Binärsystem.
    Ist das selbe Prinzip wenn man 1/3 im Dezimalsystem darstellen will - geht nicht - es ist eine unendliche Zahl.

    Heißt also: Es liegt nicht an der Funktion Mod sondern am Binärsystem (ist auch egal ob man Gleitkommazahlen oder Festkommazahlen verwendet)
    Nun wird auch klar warum der Stringvergleich funktioniert: Bei der Umwandlung einer Zahl in einen String rundet AutoIt die Zahl automatisch auf 14 Nachkommastellen (im Dezimalsystem).
    Das entfernt den entsprechenden binären Rundungsfehler.

    Wenn du wissen willst ab welcher Stelle der Fehler ungefähr auftritt - hier eine kleine Funktion:

    Spoiler anzeigen
    [autoit]


    ConsoleWrite(_GET_FLT_EPSILON() & @CRLF)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION#=================================================================================
    ; Name...........: _GET_FLT_EPSILON
    ; Description ...: Berechnet den binären Rundungsfehler
    ; Syntax.........: _GET_FLT_EPSILON
    ; Return values .: Epsilon
    ; Author ........: AspirinJunkie
    ;============================================================================================
    Func _GET_FLT_EPSILON()
    Local $x = 1
    Do
    $x /= 2
    Until 1 + $x <= 1
    Return $x
    EndFunc ;==>_GET_FLT_EPSILON

    [/autoit]
    Alles anzeigen


    Wieder ein bisschen schlauer, danke dir! Wobei ich glaube, dass der Stringvergleich nichts mit Rundungen zu tun hat, da wird doch einfach nur geschaut, ob exakt die gleichen ASCII Zeichen dort stehen.

    Gruß,
    Spider

  • Mod (modulo) macht Mist mit Multiplier

    • GtaSpider
    • 8. April 2014 um 17:56

    Hey,

    Hab folgendes Problem: Benutze ein Modulo um herauszufinden, ob eine Zahl eine Nachkommastelle hat. Falls ja soll die Zahl mit 10 Multipliziert werden und der Multiplikator einen runter gerechnet werden damit später die Zahl wieder als float beschrieben werden kann (iVal * 10 ^ iMul). Funktioniert auch meistens relativ gut. Aber bei paar Zahlen macht der Modulo mist. Es funktioniert zwar auch, gibt mir aber ein viel zu großen übertriebenen Modulo zurück.

    Hier mal ein Beispiel. Kann sich das jemand erklären?!
    Value ist 9.73. Der errechnete Multiplier sollte -2 sein und die Value dann 973.
    Der Multiplier ist bei mir aber -15 und die Value dementsprechend 9.73e+015

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ;~ $iTest =9.75;<--funktioniert
    $iTest =9.73;<--funktioniert zwar auch, aber mit viel zu vielen schritten
    $iMult = 0

    [/autoit] [autoit][/autoit] [autoit]

    While Mod($iTest,1)
    ConsoleWrite($iTest&":"&Mod($iTest,1) & @CRLF);Hier zeigt er bei 973 folgendes an: 1.13686837721616e-013
    $iTest *= 10
    $iMult -= 1
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite(Mod(973,1) & @CRLF);Hier zeigt er bei 973 richtigerweise 0 an?!
    ConsoleWrite("iTest: "&$iTest & @CRLF)
    ConsoleWrite("iMult: "&$iMult & @CRLF)
    ConsoleWrite($iTest*10^$iMult & @CRLF)

    [/autoit]

    Lieben Gruß,
    Spider
    p.s.: Ist das nicht ne schöne Alliteration im Titel? :)


    Edit: Ha.. Hätt ich mal in die Hilfe geschaut. "This function does not guarantee that dividend or divisor can be represented, specifically with floating point numbers."
    Lustig.. Das heißt es gibt die Funktion, aber es wird nicht garantiert das sie auch Funktioniert... Nagut, dann muss ichs halt doch alternativ so machen:

    Spoiler anzeigen
    [autoit]


    $iTest =9.73
    $iMult = 0

    [/autoit] [autoit][/autoit] [autoit]

    While Not (Int($iTest) == $iTest);Leider mit doppel =, da wir hier tatsächlich ein String vergleichen müssen. Einfaches = gibt auch ein zu hohen Multiplier aus
    $iTest *= 10
    $iMult -= 1
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite("iTest: "&$iTest & @CRLF)
    ConsoleWrite("iMult: "&$iMult & @CRLF)
    ConsoleWrite($iTest*10^$iMult & @CRLF)

    [/autoit]
  • Desktop Lemmings

    • GtaSpider
    • 24. März 2014 um 13:38

    Sehr witzig :D gefällt mir gut! Hier ein Screenshot:

    Dateien

    Unbenannt.png 534,11 kB – 0 Downloads
  • RS232 onEvent?

    • GtaSpider
    • 24. März 2014 um 13:32

    Hey!

    Ich benutze die cfx CommUDF ( http://www.autoitscript.com/wiki/CommAPI ) für RS232 kommunikation. Jetzt habe ich aber ein Problem: Ich arbeite zZ mit einer Platine, die Statusänderungen automatisch versendet. Vorher war es immer so aufgebaut: PC sendet Statusabfrage A, B oder C an Platine --> Platine gibt Wert von A, B oder C zurück. D.h. ich konnte einfach nach jedem send befehl ein recv befehl mit nem Timeout hinter packen und hatte kein Problem. Nun hab ich aber Angst davor, dass ich eine Statusabfrage von Status A mache, im gleichen Moment sich Status C ändert und ich als Antwort die Antwort von Status C bekomme. Außerdem will ich die Statusänderung am liebsten natürlich OnEvent mitbekommen.
    Bei TCP/IP gibt es den Befehl WSAAsyncSelect, der z.B. bei Empfang von Daten eine WM Message an ein Fenster sendet, welches man in AutoIt mit GuiRegisterMsg() dynamisch abfangen kann.

    Nun die Frage: Gibt's sowas auch für die FileRead Funktion? Die CommUDF arbeitet ja mit CreateFile/FileRead. Gibt es eine Funktion in der kernel dll, die mir bescheid gibt, sobald etwas empfangen wurde?

    Lieben Gruß,
    Spider

  • DLLStruct an zweites, kompiliertes Script übergeben - geht nicht...

    • GtaSpider
    • 19. März 2014 um 17:24
    Zitat von Techmix

    ...Argh,
    also unterschiedliche Speicherbereiche??
    Ich dachte immer das die Structs den allgemeinen Speicherbereich nutzen...

    [EDIT]
    Es würde also eher der Umweg über eine externe DLL gehen??
    Die müsste doch nur eine Struct haben - die 1:1 so aufgebaut ist wie in meinem Testscript?!?
    Nur wie realisiere ich dann die variable Stringgröße?

    Grüsse!

    Nah.. Das ding ist, ein Prozess darf nicht mehr so ohne weiteres auf die Strukturen eines anderen Prozesses zugreiffen. Es gibt maßig Tools die es trotzdem können, wie mein Vorrender schon gesagt hat, z.B. die NomandMem UDF.

    Es gibt eine UDF hier im Forum die via Strukturen eine Kommunikation zwischen zwei unterschiedlichen Scripten (Prozessen) bewerktstelligt. Find ich leider gerade nicht, musst mal googlen ;)

    Gruß,
    Spider

  • ~(Tilde) Zeichen aus Pfad entfernen

    • GtaSpider
    • 11. März 2014 um 01:24

    Hey,

    Viel simpler, das mit dem tilde ist ein sogennanter short name oder short path, das Komplement dazu ist dem entsprechend ein long name und da gibts sogar ne Funktion in AutoIt für: (Hätte dir aber bestimmt auch google verraten ;) )

    [autoit]

    FileGetLongName("C:\PROGRA~2\DIGITA~1\SIEGEO~1")

    [/autoit]

    Gruß,
    Spider

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™