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. BinDannMalWeg

Beiträge von BinDannMalWeg

  • Autoit als Testtool

    • BinDannMalWeg
    • 24. August 2012 um 18:52

    Was genau ist denn schlussendlich die Aufgabe des 'Testtools', das du zu schreiben versuchst?

  • Log-Datei von einem Script erstellen

    • BinDannMalWeg
    • 24. August 2012 um 18:49

    Also entweder habe ich es überlesen, oder es hat wirklich noch keiner vorgeschlagen FileWrite() zu nutzen... :huh:
    Hier mal ein kleines Beispiel:

    Spoiler anzeigen
    [autoit]

    Run('C:\installer.exe -silent', @ProgramFilesDir, @SW_HIDE)
    If @error Then _Log('Beim Ausführen von "C:\installer.exe -silent" ist ein unerwarteter Fehler aufgetreten!')
    ; ...
    Func _Log($Text)
    FileWrite(@ScriptDir & '\Log.txt', $Text & @CRLF)
    EndFunc ;==>_Log

    [/autoit]
  • Cubic Code Award - Vorbei

    • BinDannMalWeg
    • 24. August 2012 um 00:46

    Okay dann lösche ich mein Retro-Snake eben wieder... ;( War nicht eigentlich morgen Abend Abgabe? ^^

  • TCP Filetransfer

    • BinDannMalWeg
    • 23. August 2012 um 16:46

    Wie wäre es wenn du als Trennzeichen in den Paketen einfach andere Zeichen benutzt und die Pakete dann später einfach mit StringReplace() und StringSplit() zurecht schneidest? :P

  • GDIPlus Map-Editor

    • BinDannMalWeg
    • 23. August 2012 um 16:41

    Wenn du willst kannst du dir ja auch mal meinen Map Editor (von meinem 2D RPG) ansehen... Er hat es zwar nie über Version 1.0 geschafft, aber das eigentliche Script ist trotzdem drei mal größer als das eigentliche Spiel. ^^
    Im Anhang des Startposts findest du dem Editor... ;)
    http://www.imagebanana.com/view/6rzwy9z0/md.gif

  • Probleme mit SB unter Google Chrome

    • BinDannMalWeg
    • 22. August 2012 um 20:10

    Also ich benutze auch die neuste Version von Chrome und habe leider auch dieses Problem mit dem falschen Scrolling...

  • Exe Datei einbinden und per Befehl ausführen...

    • BinDannMalWeg
    • 22. August 2012 um 18:25

    Wenn du chesstigers Script durch den Compiler jagst und den Entpackungs-parameter von FileInstall ins Temp-Verzeichnis legst, dann funktioniert das auch 'ohne' die Exe-Datei... ;) Oder willst du die Binär-Daten der Exedatei in einer Variable einbinden und diese dann direkt aus dem Speicher ausführen? :huh:

  • Dateien und Ordner älter als 7 Tage löschen.

    • BinDannMalWeg
    • 22. August 2012 um 13:09

    Warum machst du es denn nicht einfach so: ?(

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>

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

    Func _DeleteOldFiles($Path, $Time)
    If StringRight($Path, 1) <> '\' Then $Path &= '\'
    $Search = FileFindFirstFile($Path)
    While 1
    $File = FileFindNextFile($Search)
    If @error Then
    ExitLoop
    ElseIf @extended Then
    _DeleteOldFiles($Path & $File & '\', $Time)
    Else
    $FileTime = FileGetTime($Path & $File, Default, 0)
    If IsArray($FileTime) Then Dim $StartTime = $FileTime[0] & '/' & $FileTime[1] & '/' & $FileTime[2] & ' ' & $FileTime[3] & ':' & $FileTime[4] & ':' & $FileTime[5]
    If _DateDiff('D', $StartTime, @YEAR & '/' & @MON & '/' & @MDAY & ' ' & @HOUR & ':' & @MIN & ':' & @SEC) > $Time Then FileDelete($Path & $File)
    EndIf
    WEnd
    EndFunc ;==>_DeleteOldFiles

    [/autoit]

    Achtung: Ungetestet!

  • UDP Tutorial

    • BinDannMalWeg
    • 22. August 2012 um 12:29
    Zitat von xXxProGamerxXx

    is es nicht eigentlich einfacher? da man nicht mit 2 ports & Verbindungen arbeiten muss
    für z.B ein einfachen Chat zwischen 2 pc´s


    name22: Ich denke ProGamer ist einfach nicht klar, wie man TCP in Autoit richtig verwendet... ;)

  • Programm Ersteller

    • BinDannMalWeg
    • 21. August 2012 um 17:50

    Zu 'Problem' Nummer 2: Liege ich richtig mit der Annahme, dass du versuchst den MsgBox-Generator aus Scite nachzubauen?

  • TCP Filetransfer

    • BinDannMalWeg
    • 21. August 2012 um 17:44

    So etwas löst mann doch nicht über Sleep! ^^ In meinem Beispiel habe ich das nur der Verständlichkeit halber so gelöst... Normalerweise macht man das so, dass der Client/Server die Pakete 'unvorbereitet' empfängt. Das heißt, dass er nicht nur dann auf ein Paket wartet, wenn er gerade eines angefordert hat, sondern immer wenn er verbunden ist. So ist es kein Problem wenn die Gegenseite mal etwas schneller oder langsamer ist. Außerdem lassen sich dann auch problemlos viele Pakete/Befehle hinter einander losschicken und und und... ;)

  • TCP Filetransfer

    • BinDannMalWeg
    • 20. August 2012 um 21:29

    Naja wirkliche Alternativen fallen zumindest mir da keine ein, es sei denn du machst es über UDP... :wacko:
    Versuch es doch einfach mal mit TCP und wenn du nicht weiter kommst, kannst du hier ja nachfragen... ;)
    Alternativ würde ich mich (aus Langeweile) anbieten dir den Server zu schreiben, wenn du mir sagen kannst, was genau er denn können soll... :D

  • TCP Filetransfer

    • BinDannMalWeg
    • 20. August 2012 um 21:09

    Freut mich, dass ich dir zumindest teilweise helfen konnte... :)
    Naja ich hatte schon befürchtet, dass du das fragst, aber bevor ich dir jetzt auch noch ein Beispiel für einen Multi-TCP-Server schreibe, kann ich ja einfach mal versuchen es dir so zu erklären, denn im Grunde ist es das selbe Prinzip wie bei nur einem Client. Allerdings musst du die Clients/ihre Sockets in einem Array abspeichern und sie dann eben wieder aus diesem löschen, wenn die Verbindung geschlossen wird/wurde. Außerdem musst dann natürlich auch in einer For-Schleife alle Client-Sockets auf neue Pakete überprüfen usw. Des Weitern musst du dir darüber im Klaren sein, dass du immer wenn du einem Client auch eine Antwort geben willst, dir merken musst welcher Client denn die Anfrage gestellt hat... ;) Das war jetzt mal da gröbste was du wissen musst. Außerdem kannst du dir ja einfach mal die Server-Scripte der zahlreichen TCP-Chats ansehen, welche natürlich auch fast alle eine Art "Multi-Server" enthalten...

  • TCP Filetransfer

    • BinDannMalWeg
    • 20. August 2012 um 15:01

    Soo ich habe mich mal schnell an ein Beispiel gesetzt, was dir die verschiedenen Funktionen hoffentlich genauer erklären dürfte...
    Es besteht aus einem Server- und einem Client-Script:

    Spoiler anzeigen

    Server

    [autoit]

    Global $MainSocket, $ClientSocket
    TCPStartup()
    Do
    $MainSocket = TCPListen(@IPAddress1, 4321) ; Wir versuchen auf dem Port 4321 einen TCP-Server zu erstellen
    Until Not @error
    ConsoleWrite('Server hört jetzt auf dem Port 4321' & @CRLF)
    While 1
    $ClientSocket = TCPAccept($MainSocket) ; Wir warten auf einen Verbindungsversuch eines Clients...
    If $ClientSocket <> -1 Then
    ; Ein Client ist nun mit unserem Server verbunden. Wir können mit ihm über das Socket $ClientSocket kommunizieren...
    While 1
    $Recv = TCPRecv($ClientSocket, 1024) ; Wir schauen nach, ob der Client uns über das Socket ein Paket gesendet hat...
    If @error Then ExitLoop ; Falls der Client die verbindung 'plötzlich' getrennt hat, gehen wir wieder in den 'Warten-Mode'
    If $Recv <> '' Then
    $Command = StringLower(StringLeft($Recv, StringInStr($Recv, '|') - 1))
    $Content = StringTrimLeft($Recv, StringInStr($Recv, '|'))
    ConsoleWrite('Paket empfangen: "' & $Recv & '"' & @CRLF & @TAB & 'Befehl: ' & $Command & @CRLF & @TAB & 'Parameter: ' & $Content & @CRLF)
    Switch $Command
    Case 'messageBox'
    MsgBox(64, 'Nachricht von Client:', $Content, 4)
    Case 'randomNumber'
    Sleep(250)
    TCPSend($ClientSocket, 'Z' & Random(1, 100, 1)) ; Hier wird ein Paket an den Client zurück gesendet!
    Case 'disconnect'
    ExitLoop
    Case 'shutdown_server'
    ConsoleWrite('Der Server wird nun beendet...' & @CRLF)
    TCPCloseSocket($ClientSocket)
    TCPShutdown()
    Exit
    Case Else
    ConsoleWrite('Unbekannter Befehl: "' & $Command & '"' & @CRLF)
    EndSwitch
    EndIf
    WEnd
    ; Verbindung wird geschlossen und wir beginnen damit wieder auf eine neue Verbindung zu warten...
    TCPCloseSocket($ClientSocket)
    EndIf
    WEnd

    [/autoit]
    Spoiler anzeigen

    Client

    [autoit]

    TCPStartup()
    ; Eingaben durch User:
    $Server_IP = InputBox('Server IP', 'Bitte geben sie die IP des Servers an:', @IPAddress1)
    $Server_Port = InputBox('Server Port', 'Bitte geben sie den verwendeten Port des Servers an:', 4321)
    ; Wir versuche uns mit dem Server zu verbinden:
    $MainSocket = TCPConnect($Server_IP, $Server_Port)
    If @error Then
    MsgBox(16, 'Fehler beim Verbinden', 'Entweder stimmen IP-Adresse/Port nicht, oder es ist bereits ein anderer Client mit dem Server verbunden...', 10)
    TCPShutdown()
    Exit
    EndIf
    MsgBox(64, 'Verbindung aufgebaut!', 'Es wurde erfolgreich eine Verbindung mit dem Server hergestellt...', 10)
    Sleep(1000)
    ; Wir lassen eine MessageBox, auf dem Server anzeigen...
    TCPSend($MainSocket, 'MessageBox|Hallo Server!')
    Sleep(4500)
    ; Nun senden wir ein Paket mit einem falschen Befehl an den Server...
    TCPSend($MainSocket, 'Gameserver-Start|Parameter1,Parameter2,Workingdir')
    Sleep(500)
    ; Wir fordern mit dem Befehl 'RandomNumber' eine Zufallszahl vom Server an...
    TCPSend($MainSocket, 'RandomNumber|Parameter der nicht beachtet wird...')
    Do
    $Recv = TCPRecv($MainSocket, 1024)
    Until $Recv <> '' ; Wir empfangen die Rückgabe des Servers auf unsere 'RandomNumber'-Anfrage...
    MsgBox(0, 'Rückgabe vom Server:', 'Vom Server generierte Zufallszahl: ' & $Recv, 10)
    ; Zu letzt trennen wir die Verbindung zum Server wieder 'sauber' (über unsere eingebaute Funktion...)
    TCPSend($MainSocket, 'Disconnect|')
    ; Wir warten kurz...
    Sleep(1500)
    TCPCloseSocket($MainSocket)
    Sleep(500)
    ; Okay nun werden wir uns noch einmal mit dem Server verbinden, um ihn auszuschalten:
    $MainSocket = TCPConnect($Server_IP, $Server_Port)
    If Not @error Then
    TCPSend($MainSocket, 'Shutdown_Server|')
    TCPCloseSocket($MainSocket)
    EndIf
    TCPShutdown()
    Exit

    [/autoit]

    Bitte denk daran, den Server immer VOR dem Client zu starten und die Inhalte der Inputboxen, so zu belassen, wie sie sind... ;)

  • Laptop preiswert?

    • BinDannMalWeg
    • 18. August 2012 um 18:39

    Naja ich habe ein Aspire aus der gleichen Baureihe (ich glaube sogar mit dem selben Gehäuse) vor cira einem halben Jahr bei Media Markt für 555,-€ gekauft. Allerdings hat meines satte 8GB Arbeitsspeicher... Ansonsten sind die Komponenten, wenn ich mich nicht verguckt habe, fast exakt gleich... ;)
    Edit: Ich suche mal schnell das Datenblatt von meinem Laptop raus...

  • Port eines ankommenden Pakets herausfinden

    • BinDannMalWeg
    • 17. August 2012 um 21:47

    So lange es sich bei den 'Paketen' um TCP-Pakete handelt bist du doch im Besitz des Sockets über das du Pakete an den Client senden kannst?

  • Mehr als 4096 Zeichen in einer Zeile

    • BinDannMalWeg
    • 17. August 2012 um 18:10

    Warum möchtest du denn alles in einer Zeile?

    [autoit]

    $Text = "text|text1|text2|text3|"
    $Text &= "text|text1|text2|text3|"
    $Text &= "text|text1|text2|text3|"
    $Text &= "text|text1|text2|text3"
    GuiCtrlSetData($Combo1, $Text)

    [/autoit]
  • Wettbewerb | Taschenrechner

    • BinDannMalWeg
    • 16. August 2012 um 16:37
    [autoit]

    $input = 0
    $output = ConsoleWrite(Execute($input) & @CRLF)

    [/autoit]


    You Know? :P
    Warum sollte man sich Mühe machen, wenn Execute ja erlaubt ist... :D

  • MultiFileMove

    • BinDannMalWeg
    • 15. August 2012 um 13:38

    Und wo liegt nun dein Problem? ^^

  • adresszeile aller browser und deren geöffnete tabs auslesen !?

    • BinDannMalWeg
    • 14. August 2012 um 23:57

    Nein ich habe es gerade wieder gefunden... Ich meine den 'Process Monitor'

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™