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

Beiträge von limette

  • Funktion aus Funktion heraus nutzen

    • limette
    • 24. April 2009 um 18:06
    [autoit]

    GUICtrlSetOnEvent(-1, ItemClick($array[$c][0]))

    [/autoit]

    Wenn ich das richtig weiß, darfst du bei GUICtrlSetOnEvent keine Parameter übergeben. ;)

  • [TCP/IP] Traytip

    • limette
    • 23. April 2009 um 21:24

    Nachdem der Client sich in den Server eingeklinkt hat
    läuft das auch ganz normal mit TCPSend...

    Und achte mal bitte etwas auf Satzzeichen, Grammatik etc.,
    je einfacher man deine Posts lesen kann, desto eher ist man auch bereit sich
    damit auseinanderzusetzen... ;)

  • [TCP/IP] Traytip

    • limette
    • 23. April 2009 um 21:17

    TCP-Fragen gab es gerade in der letzten Woche massenhaft,
    es existieren also ganz frische Einträge im Forum,
    also einfach mal suchen...

    Und eigentlich sind die TCP-Befehle in der Hilfe sehr ausführlich dokumentiert,
    inkl. lauffähigem Script, wüsste da ohne eine konkrete Frage deinerseits nichts
    zu erklären... ;)

  • Buttons in Schleife erstellen mit Funktion

    • limette
    • 21. April 2009 um 17:21

    Ach ja ?

    Zitat
    [autoit]

    For $i = 1 to 528

    [/autoit]

    Willst du für jeden Button eine eigene Funktion erstellen ? :rofl:

  • Buttons in Schleife erstellen mit Funktion

    • limette
    • 21. April 2009 um 17:16

    Die Buttons in einer Array zu speichern macht durchaus Sinn.
    Da kannst du aber besser im OnEventMode arbeiten, und jedem
    Button einfach dieselbe Funktion zuweisen.
    In der Funktion kann man dann mit @Ctrl_Id oder so abfragen, welcher
    der Buttons geklickt wurde ;)

    Oder aber im Loop-Mode:
    Case $Button[$i] - funktioniert so einfach nicht.
    Du musst dann schon in einer Schleife prüfen, ob die ControlID mit der
    eines Buttons übereinstimmt. ^^

  • Überprüfen ob eine Exe ausgeführt wurde.

    • limette
    • 21. April 2009 um 16:07

    Alina:
    Lesen ?
    Er sagte doch extra, dass ProcessExists nicht seinen Anforderungen entspricht,
    da so allein nicht sicher ist, von wo die Exe ausgeführt wurde.... ;)

  • Überprüfen ob eine Exe ausgeführt wurde.

    • limette
    • 21. April 2009 um 15:59

    Startest du die Exe aus einem Script ?
    Dann kannst du dir ja die PID ausgeben und
    auf eben die mit ProcessExists prüfen lassen.

    Und wenn dem nicht der Fall ist suchst du also nach einer Möglichkeit, von einem Prozess den
    Pfad zu ermitteln, oder wie muss ich das verstehen ? ^^

    Edit: [ gelöst ] Prozess zu Pfad

  • TCP

    • limette
    • 20. April 2009 um 19:28

    Ich hab noch eine Anmerkung:
    Soweit ich weiß wird die Endbedingung der For-Schleife, also
    hier das Ubound, nur einmal überprüft.
    Hatte das Problem letztens mit meinem Rat.:
    Wenn hier ein Client offline geht und du das entsprechende
    Array-Item löschst, hat das Array weniger Elemente !
    Bsp: 100 Clienten sind anfangs drin.
    Nummer 42 und 67 fliegen raus:
    Nur noch 98 Elemente - das Script läuft aber weiter bis 100 !
    ==> Subscript used with .. blabla-Error ^^

    Schreib das in eine Do-Until -Schleife um und die Sache ist geritzt ;)

  • TCP

    • limette
    • 20. April 2009 um 19:17

    Was für ein Error ?
    Gibt AutoIt einen kritischen, oder werden die Clienten einfach
    alle gelöscht ?

  • TCP

    • limette
    • 20. April 2009 um 19:09
    [autoit]

    $Recv=TCPRecv($Acc[$i],999999)

    [/autoit]

    Ob 999999 in der Funktion aktzeptiert wird ?
    Mal mit kleineren Werten, wie 2048, versucht ?

  • TCP

    • limette
    • 20. April 2009 um 18:41

    Im Router halt.
    Virtual Server, oder Special Applications, oder vielleicht heißt es bei dir "Port-Forwarding" ?

    Klar hat das Auswirkungen:
    Alle Anfragen, Verbindungsversuche, die von außen über den einen Port kommen werden auf
    den Server-PC weitergeleitet.
    Kann u.U. Probleme mit anderen Programmen geben,
    zum Thema Sicherheitslücke kann ich nichts zu sagen, hab ich nicht viel Ahnung von.

    Edit:
    @nof@ker : Hast du meinen Einwand inzwischen verstanden ?

  • TCP

    • limette
    • 20. April 2009 um 18:27

    Es geht doch gerade darum, wie das im Internet läuft ?

    Der Client muss die WAN-Ip des Servers angeben.

    -- Zu langsam. ^^ Portweiterleitung hatte ich im übrigen schon erwähnt ;)

  • TCP

    • limette
    • 20. April 2009 um 18:12
    Zitat von nof@ker2

    ich weiß ich nicht aber bei mir stimmt das ... :) und es geht auch :D

    Das kann so nicht gehen.
    Du prüfst, ob der Wert von $Acc[$i] gleich ist mit dem aktuellen Wert des @error-Makros !
    Zuvor hast du aber $Acc[$i] als die Socket-Nummer des neuen Clienten definiert, und
    $Acc[$i] wird auch an keiner anderen Stelle ein neuer Wert zugewiesen !

    Was du tun musst ist, wie zuvor beschrieben, prüfen, ob beim Empfangen von Daten mit
    TCPRecv ein Fehler auftritt !! :pinch:


    Edit: Über "weitreichende Gebiete":
    Server IP in TCPListen muss Lokale IP sein.
    Im Router des Netzwerkes des Servers muss der genutzte Port auf die Lokale IP weitergeleitet werden.
    Der Client muss die Globale IP des Server im TCPConnect angeben.
    Wie auch in X Threads zuvor erklärt...

  • TCP

    • limette
    • 20. April 2009 um 17:50
    [autoit]

    For $i=0 to Ubound($Acc,1)-1
    If $Acc[$i] = @error Then
    _ArrayDelete($Acc,$i)
    EndIf
    Next

    [/autoit]

    Fehler !
    Warum sollte $Acc[$i] aufeinmal = @error sein ?

    Die Aussonderung der verlorenen Clienten muss nach dem
    TCPRecv geschehen:

    [autoit]


    $Recv = TCPRecv( $Acc[$i], 2048 )
    If @error Then
    _ArrayDelete( $Acc, $i )
    ContinueLoop
    EndIf

    [/autoit]


    ;)

  • TCP

    • limette
    • 20. April 2009 um 17:21

    Versuch das doch einfach Schritt für Schritt
    selber umzusetzen, ich versteh nicht, warum immer
    alle für alles ein Beispiel haben wollen...

    Ich bin der Ansicht, dass meine Beschreibung detailliert genug war. ;)
    Ansonsten gibt es hier noch andere Threads mit fertigen Chats oder Ansätzen dazu...

  • TCP

    • limette
    • 20. April 2009 um 16:27

    Für mehrere Verbindungen, also beim Server, kannst du
    einfach im Main-Loop weitere Verbindungen annehmen und die
    Sockets in einer Array speichern.
    Was du sowieso machen musst, ist, ebenfalls im Main-Loop, alle Sockets, alle
    angenommenen Verbindungen, auf eingehende Nachrichten zu überprüfen, bzw.
    Nachrichten in Empfang zu nehmen:
    Mit TCPRecv.
    Wird vom Clienten nichts gesendet wird der Versuch nach X Millisec abgebrochen,
    kannst du mit Opt( .. ) einstellen. Wenn der Client die Verbindung getrennt hat wird
    dazu noch ein @error auftreten, den kannst du abfragen und den entsprechenden
    Eintrag aus deiner Array löschen. =)

  • Bestimmen, wie lang das Script maximal brauchen darf, um einmal komplett durch zu sein

    • limette
    • 19. April 2009 um 13:16

    Also ...
    bei

    [autoit]

    Do
    Until True

    [/autoit]


    Ist die Bedingung sofort erfüllt und der Loop läuft nur einmal.
    Wenn dann so:

    [autoit]

    Do
    Until False

    [/autoit]

    Mit der Abbruchbedingung drin... ;)

  • Variable inerhalb einer Funktion speichern

    • limette
    • 19. April 2009 um 13:12

    Dann habe ich dich richtig verstanden.
    Antwort: siehe oben ;)

  • Skripte erstellen

    • limette
    • 19. April 2009 um 12:38

    Mensch was seid ihr alle süchtig oO ;)

    Lasst ihn doch erstmal selber ausprobieren, wenn da schon fertiger Code steht
    ist die Versuchung immer sehr groß, den zu übernehmen ohne ihn ganz zu verstehen ;)

  • Variable inerhalb einer Funktion speichern

    • limette
    • 19. April 2009 um 12:02

    Scheint ja so.
    Aber warum muss das IniReadSection unbedingt in die Funktion ?
    Wenn du die nur einmal einlesen willst musst du das entweder außerhalb
    der Funktion machen - dann als Global oder eben der Funktion die Array übergeben,
    oder die Variable Global vorher zB auf -1 setzen und in der Funktion eben abfragen,
    If $array = -1, oder logischer: If Not IsArray( $array ) Then $array = IniReadSection ...

    Ansonsten wüsste ich nicht, was du meinen könntest ;)

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™