Beta-Test-Area: Betatests abgeschlossen deshalb --- geschlossen ---

  • Hallo Stefan,
    schön, dass Du da bist! :)


    Es geht um die Scripte "warten" und "fertig". "Warten" soll die Klicksperre einschalten, "fertig" beenden.
    Vielleicht setze ich hier zunächst mal die alten Scripte rein, die nach meiner Erinnerung 100%ig funktioniert haben.


    Der Aufruf erfolgte in der Regel über die Hilfs-exe Warten.exe und Fertig.exe:
    RunWait ("\My Flash Disk\Sokobana\MortScript\warten.exe")


    PS: Den Aufruf hatte ich hier zunächst falsch reinkopiert, sorry


    Warten:
    If ( RegValueExists ("HKCU", "Software\Koord\Server", "KoordServ"))
    Run ("\My Flash Disk\Sokobana\Koord2\koord465.exe", "Window=0 KoordServ=1 RORegKeys=0")
    Endif
    Run ("\My Flash Disk\Sokobana\Koord2\koord465.exe", "Window=0 KoordServ=1 wndrefresh=-1 t=1 rb=0 gb=0 bb=0 ServWnd=text,0,0,-1,-1,5060,255,0,0,-1,-1{bitte warten...}\text,450,0,30,30,-5030,255,255,0,-1,0{x}|")


    Fertig:
    If ( RegValueExists ("HKCU", "Software\Koord\Server", "KoordServ"))
    Run ("\My Flash Disk\Sokobana\Koord2\koord465.exe", "Window=0 KoordServ=1 RORegKeys=0")
    Endif
    Run ("\My Flash Disk\Sokobana\Koord2\koord465.exe", "Window=0 SendKey=\fPrototype\m0x0010")


    Nach Umstellung auf Aufruf ohne Hilfs-exe (MortScript wird außerdem nach jedem HR automatisch registriert) und Nutzung eines ClassNames, gibt es nun hin und wieder, anscheinend insbesondere beim ersten Aufruf z.B. nach Neustart von Gopal den Effekt, dass "Warten" zwar anspringt, aber nicht beendet wird.


    Die Scripte sehen nach einigem Rumprobieren nun folgendermaßen aus:


    Aufruf z.B.:
    # --- Bitte warten nur ausführen, wenn genug Speicher frei ist ------
    Speicher=FreeMemory()
    If (Speicher > 5000)
    Run ("\My Flash Disk\Sokobana\MortScript\warten.mscr")
    Sleep ( 500 )
    EndIf


    Warten:
    If ( RegValueExists ("HKCU", "Software\Koord\Server_Warten", "KoordServ"))
    Run ("\My Flash Disk\Sokobana\koord2\koord465.exe", "Window=0 KoordServ=1 ClassName=Warten| RORegKeys=0")
    EndIf
    #Sleep ( 2000 )
    Run ("\My Flash Disk\Sokobana\koord2\koord465.exe", "Window=0 KoordServ=1 ClassName=Warten| wndrefresh=-1 t=1 rb=0 gb=0 bb=0 ServWnd=text,0,0,-1,-1,5060,255,0,0,-1,-1{bitte warten...}\text,450,0,30,30,-5030,255,255,0,-1,0{x}|")


    Fertig:
    If ( RegValueExists ("HKCU", "Software\Koord\Server_Warten", "KoordServ"))
    Run ("\My Flash Disk\Sokobana\koord2\koord465.exe", "Window=0 ClassName=Warten| KoordServ=1 RORegKeys=0")
    EndIf
    Run ("\My Flash Disk\Sokobana\koord2\koord465.exe", "Window=0 SendKey=\fPrototype\m0x0010")


    Falls oben alles ok ist:
    Liegt es vielleicht einfach nur an der zusätzlichen Bedingung beim Aufruf? Eher nicht, oder?


    Noch eine Verständnisfrage:
    Beim Beenden benutze ich ja "SendKey=\fPrototype\m0x0010". Aber was bedeutet das nochmal genau? ;(
    Und kann man die ganze Geschichte mit der Klicksperre auch einfacher gestalten?


    Gruß sokobana

  • Es geht um die Scripte "warten" und "fertig". "Warten" soll die Klicksperre einschalten, "fertig" beenden.....



    Hallo Sokobana,


    Du solltest Dir mal den Sinn genau durch den Kopf gehen lassen, warum Du "warten" einen ClassName verpassen willst?
    Ich sehen da nur "Unsinn"! 8) Insbesondere wo es doch vorher funktionierte....


    Man kann sich das Leben auch unnötig schwer machen.... ;(

  • Danke für Deine Einschätzung, ssnweb.


    Ich habe es natürlich auch ohne ClassName versucht.
    Auch da gibt es die "Aussetzer".


    Mein Gedanke war der:
    Ich habe u.a. als mögliche Fehlerquelle auch mal eine "Wechselwirkung" mit einem laufenden Server vermutet.
    Das könnte man m.E. gut ausschließen, wenn man einer bestimmten Aktion einen eigenen Server zuordnet. Dem funkt dann niemand rein.


    Wie gesagt, alles Versuche ...


    Siehst Du in meiner Vorgehensweise nur "Unsinn" oder auch einen Fehler, der das verursacht?
    Hast Du noch einen anderen Lösungsansatz parat?


    Gruß sokobana


    PS:
    Durch das direkte Starten der .mscr ohne .exe (aber mit Registrierung von MortScript) ergeben sich Möglichkeiten des Startens, die eventuell nicht unbedingt immer sinnvoll oder von mir nicht zu Ende gedacht sind. Ich kann ein mscr-Script aufrufen durch:
    a) Callscript
    b) Run
    c) RunWait


    In Verbindung mit Koord-Serv liegt vielleicht hier eine Fehlerquelle verborgen?


    PPS:
    - andere Ursachen könnten das Timing oder Speicherprobleme sein. Was meinst Du Stefan, brauche ich noch Sleeps zur Sicherheit?

    2 Mal editiert, zuletzt von sokobana ()

  • Hallo sokobana,


    ich versuche mal mit Kommentaren nach zu vollziehen, was passieren soll:


    Warten:
    # Wenn der "Warten"-Server bereits läuft...
    If ( RegValueExists ("HKCU", "Software\Koord\Server_Warten", "KoordServ"))
    # ... wird er ordnungsgemäß beendet -> ok
    Run ("\My Flash Disk\Sokobana\koord2\koord465.exe", "Window=0 KoordServ=1 ClassName=Warten| RORegKeys=0")
    # Problem dabei ist: Ist der Server nicht gelaufen, sondern existierte nur noch der Reg-Eintrag
    # so wird der Server ohne Fenster neu gestartet und läuft!!! -> Problem!
    EndIf
    #Sleep ( 2000 )
    # Hier wird der "Warten"-Server mit "Warten"-Fenster gestartet,
    # kein Reg-Eintrag erzeugt (RORegKeys=0 fehlt)
    ->
    Problem!

    Run ("\My Flash Disk\Sokobana\koord2\koord465.exe", "Window=0 KoordServ=1 ClassName=Warten| wndrefresh=-1 t=1 rb=0 gb=0 bb=0 ServWnd=text,0,0,-1,-1,5060,255,0,0,-1,-1{bitte warten...}\text,450,0,30,30,-5030,255,255,0,-1,0{x}|")

    Fertig:
    # hier würde der "Warten"-Server
    ordnungsgemäß beendet werden, wenn vorher ein RegKey
    # erstellt worden wäre -> wird also nie ausgeführt


    If ( RegValueExists ("HKCU", "Software\Koord\Server_Warten", "KoordServ"))
    Run ("\My Flash Disk\Sokobana\koord2\koord465.exe", "Window=0 ClassName=Warten| KoordServ=1 RORegKeys=0")
    EndIf
    # das ist die "Holzhammer-Methode" und den Koord-Server dennoch zu beenden
    # Aber folgendes Problem: "Prototype" ist der Fenstername aller Koordserver!
    # laufen mehrere gleichzeitig, so wird der beendet, der zuerst gefunden wird!
    # Ohne Classname gab es nur einen aber jetzt können es mehrere sein
    # Lösung: ab V1.13 Rev.4 kann man auch ein Fenster nach dem ClassName suchen:
    # \f#Warten\m0x0010
    Run ("\My Flash Disk\Sokobana\koord2\koord465.exe", "Window=0 SendKey=\fPrototype\m0x0010")

    Wenn aber der ClassName immer richtig gesetzt wird, könnte man das Ganze so vereinfachen:


    Warten:
    # das könnte ggf. ab hier auch entfallen ...


    If ( RegValueExists ("HKCU",
    "Software\Koord\Server_Warten", "KoordServ"))


    Run ("\My Flash
    Disk\Sokobana\koord2\koord465.exe", "Window=0 KoordServ=1
    ClassName=Warten| RORegKeys=0")


    EndIf


    # ... bis hier


    Run ("\My Flash Disk\Sokobana\koord2\koord465.exe",
    "Window=0 KoordServ=1 ClassName=Warten|
    RORegKeys=0 wndrefresh=-1 t=1 rb=0 gb=0 bb=0
    ServWnd=text,0,0,-1,-1,5060,255,0,0,-1,-1{bitte
    warten...}\text,450,0,30,30,-5030,255,255,0,-1,0{x}|")


    Fertig:
    If ( RegValueExists ("HKCU",
    "Software\Koord\Server_Warten", "KoordServ"))


    Run ("\My Flash Disk\Sokobana\koord2\koord465.exe", "Window=0
    ClassName=Warten| KoordServ=1 RORegKeys=0")
    EndIf


    Gruß,
    Stefan


  • Also folgende Probs sehe ich:


    1) Du brichst (würgst) den KoordServer in deinem V3 (V4?) immer wieder ab. Ich hatte mal darüber geschrieben.
    2) Mit Callscript hatte ich beim KoordMenu enorme Probleme und habe alles wieder aud Run und RunWait (trotz zusätzlicher .Exen) umgestellt.
    3) Mit "SendKey=\fPrototype\m0x0010" suchst Du das Fenster "Prototype" (KoordServer ohne ClassName) und beendest Ihn, wenn erläuft. Probleme könnten entstehen, wenn mehrere Prototypes laufen...
    3a) Ich beende den KoordServer immer mit KoordServ=\| - das beendet Ihn und würgt Ihn nicht ab!
    4) Kurz aufeinander folgende Koordbefehle führen zu Hängern!


    Demnach würde ich Dir raten:


    Warten ohne ClassName
    Fertig mit KoordServ=\|
    und jeweis vor und nachher ein sleep ( 1500 )
    Beworzugt mit RunWait arbeiten


    Dann sollte es auch bei Dir funktionieren. ;)

  • Irgendwo habe ich eine Simulation veröffentlicht. Da gibt es Staus im Raum Berlin in Hülle und Fülle. Auch 5 auf der Route gleichzeitig. Wer kennt den genauen Veröffentlichungsort?


    Hallo sokobana,
    dieser hier ?: RDS tauschen

  • Kannst Du Dich an "frühere Zeiten" erinnern? Null Komme nix Probleme mit "warten" etc.


    Vermutlich bedarf es nur eines Winks von StefanDausR oder ssnweb oder so, und wir werden eine befriedigende Lösung finden.


    Oder ich hole alle alten exe-Dateien wieder raus ... :gab


    Kann ich, war ja selbst dabei :)


    StefanDausR winkt doch schon kräftig, und ssnweb steht dir tatkräftig zur Seite, was soll da noch schiefgehen ?


    Nur das nicht, würde uns um ca. 20 betas zurückwerfen :D
    Die Sache mit dem "bitte warten" halte ich auch nicht für vorrangig, die Funktionen laufen ja korrekt ab (soweit ich das beurteilen kann)!

  • Ja, genau, randharzer! :applaus


    Ich habe es gleich auf varioskin.de verlinkt , damit ich nicht immer suchen muss ... :wow


    Gruß sokobana

  • Hallo sokobana,
    ich versuche mal mit Kommentaren nach zu vollziehen, was passieren soll:
    # Hier wird der "Warten"-Server mit "Warten"-Fenster gestartet,
    # kein Reg-Eintrag erzeugt (RORegKeys=0 fehlt)
    ->
    Problem!

    Das war schon mal ein Volltreffer! Immer diese "Flüchtigkeitsfehler"! :wand


    Vielen Dank Stefan :tup für diese ausführliche Koord-Lektion! :applaus
    Ich habe gleich Deine Verbesserungvorschläge umgesetzt. Bisher habe ich keine Fehler mehr an dieser Stelle bemerkt.


    Aber warten wir mal ab, wenn sich randharzer drüber hermacht, dann wird er wohl noch mehr bei mir entdecken. :lachen


    @ssnweb
    Auch Dir vielen Dank für Deine Tipps! :tup


    Gruß sokobana

  • Hallo Randharzer, hallo Sokobana,


    danke für die Info zur TMC-Simulation.


  • Verbesserungvorschläge umgesetzt. Bisher habe ich keine Fehler mehr an dieser Stelle bemerkt.


    Hallo Sokobana,


    solltest Du dennoch Probleme haben, habe ich mal folgendes ausgetestst:


    1) Dein Problem sind in der Tat die ständigen abwürgereien des KoordServers.
    1a) Das noch zu korrigieren ist sehr aufwendig


    2) daher lass die warten.mscr das wie folgt korrigieren:


    If WndExists ("Prototype")
    sleep ( 1500 )
    Run ("\My Flash Disk\Sokobana\KoordMenu\koord465.exe", "Window=0 KoordServ=\|")
    sleep ( 1500 )
    EndIf
    Run ("\My Flash Disk\Sokobana\Koord2\koord465.exe", "Window=0 KoordServ=1 wndrefresh=-1 t=1 rb=9 gb=0 bb=0 ServWnd=......


    die Fertig.mscr sieht dann wie folgt aus:
    If WndExists ("Prototype")
    sleep ( 1500 )
    Run ("\My Flash Disk\Sokobana\KoordMenu\koord465.exe", "Window=0 KoordServ=\|")
    sleep ( 1500 )
    EndIf


    Ist getestet und funktioniert bei Deinen KoordKnoten vom 3.64! 8)



    Deinen anderen, langfristigen KoordServerfunktionen würde ich dann den ClassNamen verpassen...

  • Hallo Sokobana,
    solltest Du dennoch Probleme haben, habe ich mal folgendes ausgetestst:


    1) Dein Problem sind in der Tat die ständigen Abwürgereien des KoordServers.
    1a) Das noch zu korrigieren ist sehr aufwendig

    Hey, ssnweb!
    Vorsicht, Vorsicht mit derartigen, zumal haltlosen, Beschuldigungen. :schimpf
    Sonst werde ich hier bald als "sokobana der Würger" gehandelt.
    :lachen


    Falls ich das als "vorauseilendes Desinteresse oder Arbeitsverweigerung" werten soll, kommst Du damit bei mir nicht durch! :P


    Schließlich geht es um die sinnvolle Nutzung der wundervollen Koord-Server-Möglichkeiten. :sonne Da gilt bei mir momentan, dass ich mich eher für das "Entdecke-die-Möglichkeiten" und den Nachweis der Machbarkeit zuständig fühle. Nicht aber für den "Schönheitspreis" für den verwendeten Scriptcode. :ugly


    Schließlich bin ich auch im täglichen Leben dafür bekannt, dass ich Beziehungen auf "humane" Weise beende, und nicht durch "Würgen" oder andere Gewaltmaßnahmen. :engel Vielleicht bekommen wir das ja im Scriptbereich auch noch zustande?


    Gruß sokobana

  • Kann ich, war ja selbst dabei :)
    StefanDausR winkt doch schon kräftig, und ssnweb steht dir tatkräftig zur Seite, was soll da noch schiefgehen ?

    Beta 13, die Fünfte ist online.


    Habe den Warten-Bildschirm repariert (danke an StefanDausR und ssnweb) :tup
    Zu Testzwecken wird jetzt noch der Speicherverbrauch eingeblendet.


    Viele neue Ansage-Wavs wurden verkleinert. Danke für die Mühe, randharzer! :tup


    Außerdem habe ich die Sat-Suche verbessert, hoffentlich ... ^^
    Nach einer längeren Versuchsreihe kann ich jetzt wohl sagen, dass es nicht mehr zu sporadischen Hängern bei der Grafikeinblendung dieser Funktion kommt. Bitte mal fleißig testen.


    [Blockierte Grafik: http://varioskin.de/vario3-satsuche.gif]


    Gruß sokobana