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

  • RegExp loop um XSD Schemata auszulesen

    • GtaSpider
    • 15. Dezember 2013 um 21:48
    Zitat von Christoph54

    Ich hab eben schnell ne Funktion gebastelt welche das ganze in ne angenehmerer Datenstruktur einliest... :P

    Spoiler anzeigen
    [autoit]

    Local $sRawData = FileRead("test.xsd")

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

    $oFile = _ParseXSD($sRawData)

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

    For $ComplexType In $oFile ; alle ComplexTypes durchlaufen
    $oElementList = $oFile($ComplexType)
    ConsoleWrite($ComplexType & @LF)
    For $Element In $oElementList ; alle Elemente des Complextypes durchlaufen
    $name = $Element
    $type = $oElementList($Element)
    ConsoleWrite(@TAB & "name: " & $name & @TAB & "type:" & $type & @LF)
    Next
    Next

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

    Func _ParseXSD($sData)
    Local $oResult = ObjCreate("Scripting.Dictionary"), $oSubResult = ObjCreate("Scripting.Dictionary"), $aElements
    $aComplexTypes = StringRegExp($sRawData, '(?ms):complexType name="(.+?)">(.+?)<\/xs:complexType', 3)
    If @error Or Mod(UBound($aComplexTypes), 2) > 0 Then Return SetError(1)
    For $i = 0 To UBound($aComplexTypes) - 1 Step +2
    $aElements = StringRegExp($aComplexTypes[$i + 1], '"(.+?)"', 3)
    If @error Or Mod(UBound($aElements), 2) > 0 Then Return SetError(2)
    $oSubResult.RemoveAll
    For $y = 0 To UBound($aElements) - 1 Step +2
    $oSubResult.add($aElements[$y], $aElements[$y + 1])
    Next
    $oResult.add($aComplexTypes[$i], $oSubResult)
    Next
    Return $oResult
    EndFunc ;==>_ParseXSD

    [/autoit]
    Alles anzeigen

    Hey Christoph,

    Gefällt mir auch gut :) Und da das Scripting Dictonary ja sogar schneller als Arrays sind, passt mir das ganz gut - danke dir :)

    Gruß,
    Spider

  • StringSplit-Problem

    • GtaSpider
    • 13. Dezember 2013 um 18:12

    Was ist den 1440/60? ;) 24! Kein punkt dazwischen! Ich würde hier mit Mod Arbeiten:

    [autoit]

    $fWert = 120
    Local $fWertStunde = Int($fWert/60)
    Local $fWertMinute = Mod($fWert,60)
    ConsoleWrite($fWertStunde&":"&$fWertMinute & @LF)

    [/autoit]

    Gruß,
    Spider

  • RegExp loop um XSD Schemata auszulesen

    • GtaSpider
    • 13. Dezember 2013 um 17:50

    Hey,

    Das ist ja mal eine geniale Funktion :thumbup: Ziemlich kreativ, danke dir BugFix. Musste es noch etwas ändern, da die Schemata sehr groß sind und der Execute Befehl maximal 4095 Zeichen ausführen kann, aber so klappt es:

    Spoiler anzeigen
    [autoit]


    $string = FileRead("GanzGroßesSchema.xsd")

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

    $patt = '(?:complexType name="(.*?)">)|(?:<xs:element name="(.*?)")|(?: type="(.*?)")'

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

    Global $aMatch[1] = [0]
    $aSS = StringSplit($string,"")
    For $i = 1 To $aSS[0] Step 3000
    $sBuffer = ""
    For $i2 = 0 To 2999
    If $i + $i2 > $aSS[0] Then ExitLoop
    $sBuffer &= $aSS[$i + $i2]
    Next
    _StringRegExpReplace_Callback($sBuffer, $patt, '_AddMatch("$1","$2","$3")')
    Next

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

    Func _AddMatch($1,$2,$3)
    $aMatch[0] += 1
    ReDim $aMatch[$aMatch[0]+1]
    If $1 <> '' Then
    ConsoleWrite(">"&$1 & @LF)
    $aMatch[$aMatch[0]] = $1
    ElseIf $2 <> '' Then
    ConsoleWrite("+"&$2 & @LF)
    $aMatch[$aMatch[0]] = $2
    ElseIf $3 <> '' Then
    ConsoleWrite("-"&$3 & @LF)
    $aMatch[$aMatch[0]] = $3
    EndIf
    EndFunc

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

    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _StringRegExpReplace_Callback
    ; Description ...: Replaces ByRef all matches in a string by manipulation of the matches in a callback function
    ; Parameters ....: $sString String to manipulate
    ; ...............: $sPattern RegExp pattern for the match
    ; ...............: $sCallback Callback function as string, i.e. "MyCallback('$1')" -- '$1' represents the match
    ; .....optional..: $sBefore String to insert before the manipulated match
    ; .....optional..: $sAfter String to insert after the manipulated match
    ; Return values .: Success 1
    ; ...............: Failure 0 set error = 1
    ; Author ........: Taz77
    ; ===============================================================================================================================
    Func _StringRegExpReplace_Callback(ByRef $sString, $sPattern, $sCallback, $sBefore = '', $sAfter = '')
    $sString = Execute("'" & StringRegExpReplace(StringReplace($sString, "'", Chr(26), 0, 2), $sPattern, $sBefore & "'&" & $sCallback & "&'" & $sAfter) & "'")
    If @error Then
    ConsoleWrite('_StringRegExpReplace_Callback error! Pattern: "' & $sPattern & '", Callback: "' & $sCallback & '"' & @LF)
    Return SetError(1,0,0)
    EndIf
    $sString = StringReplace($sString, Chr(26), "'", 0, 2)
    Return 1
    EndFunc ;==>_StringRegExpReplace_Callback

    [/autoit]

    Edit: Mhh, ist natürlich auch nicht schön, da hier der Buffer einfach abgeschnitten wird, aber das ist ja nicht weiter wild zu fixen ;)
    Edit 2: Mhh... So richtig zu frieden bin ich damit jetzt aber doch nicht mehr :S Schade, weil so wäre es eigentlich perfekt.. Mal schauen ob ich da noch ein Lösungsweg finde, falls jemand eine Idee hat, immer her damit :)

    Gruß,
    Spider

  • RegExp loop um XSD Schemata auszulesen

    • GtaSpider
    • 13. Dezember 2013 um 16:13

    Hey,

    Hehe, gute Idee :) Die letzte Version scheint ganz gut zu klappen, danke dir. Manchmal sieht man dem Wald vor lauter Bäumen nicht ;)

    Trotzdem würd ich gerne wissen, ob man es auch irgendwie mit meinem Lösungsweg hinbekommt? Stand oft vor der Frage, wie man vernünftig "loops" in RegExp hinbekommt.

    Gruß,
    Spider

  • RegExp loop um XSD Schemata auszulesen

    • GtaSpider
    • 13. Dezember 2013 um 04:45

    Hey,

    Wahrscheinlich ist es schon etwas spät, auf der anderen Seite muss ich auch zu geben, dass ich gewisse Defizite habe was Reguläre Ausdrücke angeht ;)

    Folgendes Problem: Ein riesiges Schemata (XSD Datei) soll in ein Array gelesen werden. Die Datei is wie folgt aufgebaut:

    Spoiler anzeigen
    Code
    <xs:complexType name="cmplx1">
    	<xs:sequence>
    		<xs:element name="name1" type="type1"/>
    		<xs:element name="nameN" type="typeN"/>
    	</xs:sequence>
    </xs:complexType>
    <xs:complexType name="cmplxN">
    	<xs:sequence>
    		<xs:element name="name1" type="type1"/>
    		<xs:element name="nameN" type="typeN"/>
    	</xs:sequence>
    </xs:complexType>
    Alles anzeigen

    Hier mein Versuch, ich will immer erst den namen des komplexen Typen, und dann alle namen und typen der unterelemente (können mal nur 1 mal aber auch 100 sein). Was mach ich falsch? Wenn ich statt dem + hinter der Klammer (?. ...) ein +? setze kommt das erste Element. Beim + nur das zweite Element ?(

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    $sRead = '<xs:complexType name="SomeTypes">'&@CRLF & _
    '<xs:sequence>'&@CRLF & _
    '<xs:element name="SomeTag" type="SomeTagType"/>'&@CRLF & _
    '<xs:element name="SomeService" type="xs:boolean"/>'&@CRLF & _
    '</xs:sequence>'&@CRLF & _
    '</xs:complexType>'&@CRLF

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

    ;~ $aRegEx = StringRegExp($sRead,'(?ms)<xs:complexType name="(.*?)">.*?(?:<xs:element name="(.*?)" type="(.*?)"/>[^<]+)+.*?<\/xs:complexType>',3)
    $aRegEx = StringRegExp($sRead,'(?ms)<xs:complexType name="(.*?)">\r\n<xs:sequence>\r\n(?:<xs:element name="(.*?)" type="(.*?)"/>[^<]+)+<\/xs:sequence>\r\n<\/xs:complexType>',3)
    ConsoleWrite(UBound($aRegEx) & @LF)
    _ArrayDisplay($aRegEx)

    [/autoit]

    Danke im Voraus :)

    Gruß,
    Spider

  • com port blockieren

    • GtaSpider
    • 29. November 2013 um 21:22

    HAllo

    Huch? Bei mir will er nicht neustarten. Hatte früher mal ein ähnliches Problem, was ich perfekt mit Devcon lösen konnte. Welches Betriebsystem benutzt du?

    Hast du es auch so gemacht?
    http://www.autoitscript.com/forum/topic/13…-disable-stuff/

    Sonst hilft dir vlt auch das weiter?
    http://www.autoitscript.com/forum/topic/83…ct-a-usb-drive/

    Gruß,
    Spider

  • Tastatureingaben in CUI?

    • GtaSpider
    • 25. November 2013 um 21:56

    Kein Problem :) Ja, die Foren Suche ist suboptimal, lieber direkt Google benutzen :)

    Gruß,
    Spider

  • Problem mit StringInStr() --- BINÄR- bzw. HEX-Vergleich funktioniert nicht --- Projektausschnitt [EnAndDeCrypt.au3]

    • GtaSpider
    • 25. November 2013 um 20:14

    Hallo,

    Erstmal: Warum hast du dein Scriptcode als Screenshot gespeichert? :D Eher nicht hilfreich, da wenn man dir helfen soll, man das Problem ja nachvollziehen können muss, und das geht am besten durchs testen.

    Wenn du eine Datei Binär einließt, gibt AutoIt ein Binären wert aus. Wenn du dann allerdings diesen Binären wert mit den String... funktionen benutzt, wandelt AutoIt diese Binäre zeichenfolge einfach in ein String um, also aus 0x414243 wird "0x414243" und nicht "ABC". (41 ist der ASCII code für A, 42 für B, 43 für C) Wenn du allerdings Binär einlesen willst und dann damit ein String vergleichen willst hilft dir BinaryToString weiter ;)

    Gruß,
    Spider

  • com port blockieren

    • GtaSpider
    • 25. November 2013 um 20:09

    Hallo

    Schau dir mal das Programm "devcon" an. Damit kannst du verschiedene Geräte de-/aktivieren. Devcon ist von MS und wurde auch schon oft in zusammenhang mit Autoit benutzt => google

    Gruß,
    Spider

  • UEZ hat seinen 5. Foren Geburtstag.

    • GtaSpider
    • 25. November 2013 um 20:06

    Uhh, ich sehe gerade ich bin seit Neujahr 2006 dabei, das ist leicht zu merken :D

  • Tastatureingaben in CUI?

    • GtaSpider
    • 25. November 2013 um 20:05

    http://bit.ly/1i9hC8c ;)

  • SMS Versandt über Modem - PDU -> SMS

    • GtaSpider
    • 25. November 2013 um 16:45

    Hallo Ralf,

    Binäre daten werden in Autoit mit 0x am Anfang gekennzeichnet.

    [autoit]

    $test = "4142";String mit dem Text "4142"
    $test = "0x4142"; Immer noch String mit dem Text "0x4142"
    $test = Binary("0x4142") ;Binäre Daten mit dem Text "AB", da 41 in der ASCII Tabelle A und 42 B ist
    MsgBox(0,"",$test);Wird binär ausgegeben
    $test = BinaryToString($test)
    MsgBox(0,"",$test);String mit dem Wert AB

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

    ;Wenn du also ein String empfängst, der aber eigentlich Binär ist:

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

    $test = "414243";String den du Empfangen hast
    $test = BinaryToString("0x"&$test)
    MsgBox(0,"",$test);Eigentlicher Wert

    [/autoit]

    Es gibt hier auch noch die Binary UDF die dir auch sicherlich weiterhilft: http://www.autoitscript.com/forum/topic/131037-binary-udf/

    Zu PDU: Einfach mal bei google PDU AutoIt eingeben, das erste was ich gefunden habe sollte schon helfen: http://www.autoitscript.com/forum/topic/136645-pdu-gsm/

    Ich hoffe ich konnte dir ein kleinen Einstig gewähren :)

    Gruß,
    Max

  • FileRead Buffer?

    • GtaSpider
    • 23. November 2013 um 17:30
    Zitat von Andy

    Hi,

    du entäuschst mich :D

    - Wenn du eine Datei mit der Größe bspw. kleiner 100MB einlesen willst, dann liest du diese direkt ein, ab in den Speicher damit. Ob von deinem Programm oder von Wireshark erstellt spielt dabei keine Rolle.

    - Ist die Datei größer 100MB erstelle ggf vor dem Einlesen einen Index und lies daraus ein.

    Die eigentliche Analyse der Daten erfolgt sowieso zeitunkritisch! Ob da vor dem Einlesen von einer 1-Gig-Datei 5 Sekunden lang ein Index erstellt wird, mit dem du später ohne "Ruckler" durch die Daten scrollen kannst, oder ob du während der Analyse alle 100MB eine "Gedenksekunde" zum nachladen von Daten einlegen willst, ist Geschmacksache.
    Ich persönlich warte lieber beim Starten der Anwendung und habe dann einen geschmeidigen Workflow^^


    Hehe ;) Genau so mach ich das mein lieber Andy! Mit nem klick auf Open wird die Datei von oben bis unten eingelesen, schön mit Ladebalken, und dabei gleich die Indexdatei erstellt. Leider dauert ein Paket einzulesen ca. 1 ms (der FileRead befehl, ist wie gesagt ein langsamerer PC), bei 100.000 Einträgen also 100 Sekunden, bei 1.000.000, 17 Minuten... Ein so ein Paket ist aber meist nie größer als 100 Byte. Deswegen meine Idee: Mach ein Buffer, lese immer 10 MB Päkchen in den RAM und lese davon dann ein. Dachte, dass würde schneller gehen, tut es aber nicht sondern es ist weitaus langsamer. Meine Frage war ausschließlich: Warum? :D Damit ich versuchen kann es zu verschnellern.

    Gruß,
    Spider

  • FileRead Buffer?

    • GtaSpider
    • 22. November 2013 um 14:47
    Zitat von Andy

    Hi,


    Da du die PCAP-Dateien selbst schreibst, würde ich für jede dieser Dateien eine Indexdatei erstellen mit dem Muster


    Diese Indexdatei ist doch nur einen Bruchteil so groß wie die eigentliche PCAP-Datei!?
    Die Index-Datei kannst du auch in einem Rutsch in die Hashtable einlesen. Je nach Größe der PCAP-Datei liest du die Datei komplett in den Speicher oder mittels FileSet/Getpos direkt aus der Datei.

    Hey Andy,

    Theoretisch liegst du da richtig, aber ich muss natürlich auch PCAP Dateien einlesen können die z.B. von Wireshark kommen ;) Da gibbet keine Indexdatei.

    Gruß,
    Spider

  • FileRead Buffer?

    • GtaSpider
    • 20. November 2013 um 22:12

    Hallo,

    Hehe, danke erstmal für die Antworten.

    Oscar: Klar, habs auch mit größeren Buffern und größeren Dateien probiert, trotzdem keine Chance das die Buffer variante schneller ist.

    Andy: Ja klar, das ist mir bewusst ;) Problem ist, dass eine PCAP Datei wie folgt aufgebaut ist:
    [GLOBAL HEADER] [PACKET 1 HEADER][PACKET 1 DATA]....[PACKET n HEADER][PACKET n DATA]
    D.h. die Datei wird einmal von oben nach unten eingelesen und die jeweiligen Positionen wo welches Paket steckt in eine Hashtable (System.Collections.Hashtable) geschrieben. Das mit der Hashtable läuft auch super flüssig.

    Problem ist wie gesagt, dass die Dateien im Normalfall ~10mb groß sind, eher weniger, aber es gibt ausnahmen, wo traces über mehere Tage gemacht werden, die dann auch gerne mal mehrere Gigabyte groß werden.

    Gruß,
    Spider

  • FileRead Buffer?

    • GtaSpider
    • 20. November 2013 um 18:09

    Hallo,

    Folgendes Problem: Ich baue gerade ein Wireshark ähnlichen Sniffer der die Daten die an die Netzwerkkarten gesendet werden in realtime entpackt. Allerdings gibt es in dem Programm auch eine Speicher und Öffnen funktion. Ich habe selbst den PCAP Standard mir angeeignet und schreibe und lese die PCAP files also nun mit einer eigenen Routine via FileWrite/FileRead.

    Läuft soweit alles gut. Nun steh ich vor folgendem Problem: PCAP Dateien können unglaublich groß sein. Also dacht ich mir, schreibe ich sie nur Teilweise in RAM und lese dann immer das aus was ich gerade brauche, doch zuvor wollte ich sicherheitshalber noch ein Test machen: Ist das überhaupt schneller?

    Der Test sieht wie folgt aus:

    Test A
    Die Daten werden mit FileRead eingelesen => Jedes mal wenn ich neue Daten brauche muss FileRead aufgerufen werden

    Test B
    Die Daten werden komplett in ein Buffer geschrieben => Jedes mal wenn ich neue Daten brauche kann ich mit BinaryMid mir die stelle raussuchen.

    Nun das verwunderliche: Mit dem Buffer zu arbeiten ist bei mir weitaus langsamer als mit FileRead.
    z.B. für eine 9mb große Datei dauert die variante mit FileRead und nem buffer von nem kb auf einem Testlaptop 169ms, die Buffer methode liegt bei 30735ms :D

    Jemand eine Idee woran es liegt? Hier mal ein Code zum Austesten.. Speichert die FileOpen funktion auch ziwschen? Falls ja, kann man da den Buffer irgendwie verändern?

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

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    ;BufferSize, ggf. ändern
    Local Const $iBufferSize = 1024; 1kb
    Local Const $sFilename = FileOpenDialog("","","all (*.*)")
    if @error Then Exit

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

    Local $iFileSize = FileGetSize($sFilename)
    ;Test mit wiederholtem aufrum von FileRead

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

    Local $hTestTimer = TimerInit()
    Local $hTest = FileOpen($sFilename,16)

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

    Local $iBytesRead = 0, $bTestWrite
    Do
    $bTestWrite &= FileRead($hTest,$iBufferSize)
    $iBytesRead += @extended
    Until $iBytesRead >= $iFileSize

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

    FileClose($hTest)

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

    ConsoleWrite("FileRead: "&TimerDiff($hTestTimer) & @LF)
    ConsoleWrite("Bytes Read: "&$iBytesRead & @LF)

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

    ;Test: Einmal wird der Buffer geschrieben, und dann mit BinaryMid die Daten beareitet

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

    Local $hTestTimer = TimerInit()
    Local $hTest = FileOpen($sFilename,16)

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

    $bBuffer = FileRead($hTest)

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

    Local $iBytesRead = 0, $bTestWrite = ""
    Do
    $bTestWrite &= BinaryMid($bBuffer,$iBytesRead + 1, $iBufferSize)
    $iBytesRead += $iBufferSize
    Until $iBytesRead >= $iFileSize

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

    FileClose($hTest)

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

    ConsoleWrite("BinaryMid: "&TimerDiff($hTestTimer) & @LF)
    ConsoleWrite("Bytes Read: "&$iBytesRead & @LF)

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

    MsgBox(0,"","Exit")

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

    Danke und Gruß,
    Spider

  • Programmier Sprache lernen

    • GtaSpider
    • 20. November 2013 um 12:26

    Also du willst nicht Selbstständig werden, richtig?

    Ich bin es nämlich, und dem Endkunden is es ja shitegal womit ich Programmiere solange es sicher und zuverlässig läuft, deswegen meine Entscheidung zu AutoIt + C.

    Wenn du irgendwo mit einsteigen willst: C! C wirst du überall gebrauchen können, C ist schön Systemnah, deswegen lernst du auch viel über wichtige Abläufe die im PC vonstatten gehen und kannst danach so ziemlich jede Programmiersprache sehr leicht erlernen.

    Gruß
    Spider

  • Programmier Sprache lernen

    • GtaSpider
    • 19. November 2013 um 15:21

    Hey,

    War vor kurzem auch an dem Punkt wo du jetzt stehst. Mach gerade ein riesiges Projekt, welches auf einem relativ langsamen Windows PC (mit touch etc) läuft und welches ähnlich wie Wireshark funktionieren soll, nur das bestimmte nachrichten "entschlüsselt" bzw entpackt werden müssen. Ich fang also an mit AutoIt zu programmieren. Merke natürlich aber irgendwann, mist! AutoIt ist zu langsam um Daten in Echtzeit anzuzeigen und gleichzeitig noch zu entschlüsseln. Also hab ich mich mal im WWW umgehört, wollte C/C++ Lernen. Und von überall bekomme ich folgendes zuhören: C/C++ ist super schnell und eignet sich daher für Funktionen die viel Rechenleistung brauchen, aber für das alles drum herum (GUI etc.) eigent sich C#/Visua Basic besser.

    Gut dacht ich mir, Visual Basic will ich nicht lernen da ich dort kaum ein Vorteil zu AutoIt sehe, und mich nerven die ganzen Frameworks, und C# is ähnlich wie C, also mal C lernen. Hat geklappt, wichtige dekodierungsfunktionen mache ich nun mit reinem C. Jetzt der Versuch eine GUI zu bauen.... Wuhag, das gefiel mir alles nicht, die ganzen Frameworks wie z.B. QT find ich sehr umständlich, nicht besonders schick und außerdem viel zu überladen. Ich habe mich also daran gemacht, die funktionen in C als DLL zu schreiben - der ganze Rest wird wieder mit AutoIt gemacht, und was soll ich sagen? Ich bin total begeistert, was man aus AutoIt mittlerweile doch herrauskitzeln kann! Die Performance ist sogar besser als bei Wireshark auf dem langsamen PC, die Dekodierung findet in echtzeit statt dank C und falls es mal ein änderungswunsch in der GUI gibt ist das dank AutoIt kein Problem sondern nur ein Ding von Minuten!

    Lange rede kurzer Sinn: Solange du unter Windows bleiben willst empfehle ich dir aus eigenen Erfahrung: Lern C! C ist noch relativ simpel und schlicht, genau deswegen find ich die Sprache so gut, aber vorallem ist C schnell, schneller als Java, schneller als Basic und natürlich auch schneller als AutoIt. Die Kombination C + AutoIt ist für mich bisher (!) unschlagbar (unter Windows).

    Gruß,
    Spider

  • Vorschläge und Verbesserungen / Complaint Area

    • GtaSpider
    • 19. November 2013 um 01:12

    Hey,

    Angesichts dessen, dass wir Extra ein Board für andere Programmiersprachen haben ( http://www.autoit.de/index.php?page=Board&boardID=58 ) und man dort die Präfix auf verschiedene Sprachen setzen kann, halte ich die Idee gar nicht mal für so dumm, ich bin aber auch kein Sysadmin und hab keine Ahnung wie die Implementierung in BurningBoard aussieht, wie kompliziert es ist und vor allem obs kostenlos ist. Wenn einfach und kostenlos => Warum nicht?

    Die Idee mit dem Sperren find ich auch gut, bin auch gerade wieder am Aufräumen von der jüngsten Spam Attacke.. Temporärer IP Ban wäre vlt auch nicht schlecht :) Und vielleicht sollte man sich mal überlegen, ob Gun-Food nicht auch mal ein paar Aufgaben abgeben will wenn das zu viel wird? Gibt doch hier auch bestimmt andere Moderatoren die auch Sysadmins sind, bzw sich damit auskennen?

    Gruß,
    Spider

  • AutoIT und Linux?

    • GtaSpider
    • 19. November 2013 um 00:59
    Zitat von BLinz

    Jepp, das Problem hatte ich auch mal und das nervte, so habe ich es umgangen:

    [autoit]


    Func _saveplinkRSAkey($plinkHost)
    $plinkFile = @ScriptDir & "\plink.exe"
    $runThis = @ComSpec & " /c " & "echo yes | " & $plinkFile & " " & $plinkHost
    ;ConsoleWrite($runThis & @CRLF)
    $plinkhandle = Run($runThis, "", @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD + $STDERR_CHILD)
    Sleep(5000)
    If ProcessExists($plinkhandle ) Then ProcessClose($plinkhandle )
    EndFunc ;==>_saveplinkRSAkey

    [/autoit]

    Ich rufe vor meinen eigentlichen plink.exe Aufrufen einmal die Funktion zuvor auf - die Stellt eine Verbindung her und beantwortet die Frage ob der Schlüssel ok ist und gespeichert werden soll gleich mit ja.
    Ich nutze das sonst zur Verbindung zu Storage-Systemen, habs mal eben an Linux angepasst ... was besseres als die 5 Sekunden Pause fiel mir gerade nicht ein

    BLinz

    Alles anzeigen

    Hey,

    Ich weiß zwar nicht was plink ausgibt, aber es sollte doch eine Bestätigung bzw Fehlermeldung ausgeben via stdout oder? Falls ja könnte man es mit stdoutRead($pid) herausfinden, dann kommt das doofe Sleep weg ;)

    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™