1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

ASS : Programm während repeat noch reagrieren? : Datenbank wie? : Ein genauer Timer

Dieses Thema im Forum "OS X-Developer" wurde erstellt von jannk, 02.05.08.

  1. jannk

    jannk Niederhelfenschwiler Beeriapfel

    Dabei seit:
    17.06.07
    Beiträge:
    838
    Hallo
    Entschuldigt den langen Titel, aber da ich Titel wie "2 Fragen" (währe passeng gewesen) hasse und lieber zutreffende suche, müssen die halt manachmal etwas lange seino_O

    So, nun zu den 2 (mittlerweile 3) Fragen

    Programm während repeat noch reagieren:
    Ich habe folgende Situation:
    Durch klicken des Start-Buttons wird eine Endlosschleife mit folgendem Code gestartet: (Abgekürzt)
    Code:
    		repeat
    			tell progress indicator "bar" of window "Main" to animate
    			set contents of text field "mfeld" of window "Main" to (contents of text field "mfeld" of window "Main") + 1
    			delay 0.075
    		end repeat
    Es wird also eine Stoppuhr gestartet.

    Nun gibt es 6 Bahnen,, die alle zusammen starten sollen aber unterschiedlich aufhören. Hier hätte sich die Möglichkeit geboten, 6 einzelne Stoppuhren zu erstellen. Ich habe aber eine andere gewählt:
    Wenn man nun auf einen der 6 Stop-Buttons klickt, dann fragt dieser den aktuellen Wert des Textfeldes ab und stellt diesen bei seinem eigenen dar. (Folgender Code: )
    Code:
    	else if (theObjectName is "1stop") then
    		set contents of text field "1feld" of window "Main" to contents of text field "mfeld" of window "Main"
    
    Dies funktioniert auch, aber nur mit einem Haken:
    Das klicken auf den Stop-Button (oder einen anderen) wird nicht erkannt, wenn die Endlosschleife läuft. Man muss also erst die Endlosschleife durch Befehl-Punkt abbrechen, damit andere Buttons gedrückt und erkannt werden können. Was kann man dagegen tun?


    Datenbank wie?
    Hierfür empfehle ich euch (wie auch vorher) zuerst ein Mal das XCode-Projekt downzuloaden.
    Im Main-Window hat es ein paar Text-Felder, Pop-Up's und Check-Boxen. Wie kann ich nun dessen Zustand speichern und beim nächsten Programmstart anzeigen?
    Währe es sogar möglich, dass man bei dem Table/Scroll View, dass sich auf der linken Seite des Main-Window befindet, beliebig viele Einträge machen könnte, und jeder dieser Einträge die oben genannten Daten für sich speichert? (Text-Felder, Pop-Up's und Check-Boxen).


    Ein genau gehender Timer:
    Vielleicht habt ihr schon gemerkt, dass bei der Endlosschleife oben delay 0.075 steht. Obwohl dies eigentlich 0.1 betragen sollte, denn der Abstand zwischen 0.1 sec und 0.2 sec beträgt ja eigentlich 0.1 sec. Das Problem ist aber, dass mein iMac für diese Addition auch etwas Zeit benötigt, deshalb also das Delay nur 0.075 ist. Doch: Hab ich mehrere Programme offen, benötigt er länger, der Timer ist also zu langsam. Habe ich allerdings nur dieses Programm offen, ist der Timer plötzlich zu schnell. Ausserdem sollte ja ein MacPro diese Aufgabe schneller ausführen können als ein Mac Mini. Ich habe diese Problem jetzt einfach so gelöst, dass auf der GUI ein Text-Field Namens Pause vorhanden ist, in dem man diesen Wert beliebig anpassen kann. Diese Lösung gefällt mit persönlich aber nicht wirklich. Was gibt es hier für Alternativen?


    So, ich hoffe ihr könnt mir helfen. Ich habe noch zur 2. Frage ein Video erstellt, das ich bald hier hineinstellen werde. Und nun noch das XCode-Projekt:
     

    Anhänge:

    • iRun.zip
      Dateigröße:
      178,5 KB
      Aufrufe:
      271
  2. hubionmac

    hubionmac Rheinischer Krummstiel

    Dabei seit:
    25.06.04
    Beiträge:
    379
    such' mal bei Apple nach dem on Idle Handler... da schreibst Du das rein...
    In dem ApplScript-Studio-Beispielen gibt es auch ein Projekt mit einem Vorschritts-Balken da kannst Du sehen, wie die das gelöst haben
     

Diese Seite empfehlen