Ergebnis 1 bis 10 von 10

Thema: EINFACHES Wait in Delphi

  1. #1

    Miaaa Gast

    EINFACHES Wait in Delphi

    Guten Tach.
    Wie wir ja alle wissen (odda auch nicht ), bin ich der absolute N00b bei Delphi und möchte deshalb auch gleich eine absolute N00b-Frage vom Stapel lassen: Wie kann ich [in Delphi] ein EINFACHES Wait machen (sowas wie Wait(stunden,minuten,sekunden); fertig)?
    Ich weiß, is bestimmt ganz einfach, aber weder auf http://www.grundlagen.delphi-source....l/syntax.shtml noch auf http://home.pages.at/dbr-software/delphi/ habe ich irgendetwas zu dem Thema gefunden, was weniger als zwei Bildschirmseiten lang war und noch dazu funktionierte. (Meine Ansprüche sind aber auch verflixt hoch )
    Danke schon mal im voraus!

  2. #2
    wie wärs mit der sleep api?

    Declare Sub Sleep Lib "kernel32.dll" ( _
    ByVal dwMilliseconds As Long)

    wie du das in delphi aufrufst wirste ja sicher wissen.

  3. #3
    hm .. dkie frage ist gar nicht so trivial ...

    Willst du, das dein programm in der zeit weiterarbeitet, und etwas anderes machen kann, oder willst du es generell anhalten ?

    fuer den ersteren Fall koenntest du einen Timer vom Typ TTimer verwenden und den entsprechenden Code im Event plazieren ..

    ist letzteres der Fall koenntest du das in etwa so machen

    Code:
    var time:Longint;
    begin
    ...
    time:=GetTickCount;
    while (GetTickCount-time < wartezeit_in_millisekunden) do
     application.ProcessMessages; //sonst friert das Programm ein
    ...
    end;

  4. #4
    Ich darf mal kurz die Delphi-hilfe zitieren (achtung english!)

    Code:
    Sleep 
    Unit: IdGlobal
    ------------------------------------
    Suspends the current thread for the specified number of milliseconds.
    
    
    procedure Sleep(ATime: cardinal);
    
    Parameters
    
    ATime: cardinal
    
    The number of milliseconds to sleep.
    
    
    Description
    
    Sleep is a procedure used to suspend the current thread of execution
    for the number of milliseconds specified in ATime. 
    While the current thread is suspended, control passes to other 
    processes with an equal or higher priority.
    Sleep encapsulates the platform-specific procedures or functions used 
    to suspend the current thread of execution. For the Windows platform,
     the procedure used is Windows.Sleep. On the Linux platform, Sleep 
    tries to select a non-existent socket handle for the specified number 
    of milliseconds.

  5. #5

    Miaaa Gast
    Danke!
    Das mit den Timern hab' ich jetz versucht...
    Und es funzt!!! (Sleep und Delay gingen nicht, weil Gleichzeitig auf eine Eingabe gewartet werden sollte, aber nach (z.B.) 3 Sekunden nicht mehr gewartet werden sollte.)
    Inzwischen hab' ich so schon 7 Level fertiggeproggt! (Und sage und schreibe 63 Timer verwendet )

  6. #6

    Miaaa Gast
    Guten Tach.
    Tschuldigung für den Doppelpost,aber ich wollte keinen neuen Thread aufmachen.
    Also, ich habe zwei neue Fragen:
    Erstens, wie kann ich einen Strich ziehen? (Falls jemand eine genauere Erklärung meines Problems möchte - kann er haben! Ich möchte den Klassiker "Missile Command" nachbauen [Den kennt man vielleicht.] und brauche für die Schüsse immer Verbindungslinien, die am Ausgangspunkt des Schusses anfangen und dann langsam 'wachsen', bis sie am Endpunkt des Schusses angekommen sind.)
    Zweites Problem: Wie macht man es, dass man zwei Forms anzeigt (OK, das kann selbt ich ja noch... ) und dann BEIDE Formulare aktiviert sind. (Also nicht so, wie bei einem normalen Form2.ShowModal;-Befehl, bei dem, wenn Form2 nicht geclosed wurde, bei einem Klick auf Form1 nur ein Ton 'erklingt'.)

    (PS: In meinem Minigame "Two Souls" haben inzwischen 124 Timer Verwendung gefunden und in "Space Invaders" 30 WIRKLICH LANGE Timer... )

  7. #7
    Ich könnte dir ja jetzt die Mathematische Funktion für eine Linie geben... aber ich hab keine... das überlass ich mal den lieben Onkel Luki^^

    Wenn du mir sagst welche Grafik API / Wrapper du benutzt geht das aber vieleicht auch einfacher über ne ferige Funktion.

    Probier mal "FormXX.Show;". Damit bleibt das ausgangsformular zwar nicht Aktiviert, aber es bleibt für sämtliche Messages Verfügbar (z.b. einen Klick drauf oder ähnliches). Nur Tastatureingaben werden nicht mehr genommen (alles IMHO).

    Empfehlen kann ich noch www.DelphiSource.de ... da findet man viele lösungen zu alltagsproblemen mit Delphi.. hilft mir auch oft

  8. #8

    Miaaa Gast
    Guten Tach.
    Das mit 'FormXX.Show' funzt wunderbar , aber ich habe (mal wieder) ein neues Problem. (Das mit dem Linienziehen aber bittä nicht vergessen.)
    Kann miaaa irgendjemand sagen, wo ich ein Tool herbekomme, mit welchem man *.3DS-Dateien herstellen kann? (Ich habe miaaa jetzt nämlich TrueVision 3D 'runtergeladen und brauche noch einige 3D-Figuren.)
    Wie immer-schon mal Thanke im Voraus!

  9. #9
    wie freezy schon in seinem post sagte, koennen wir dir bei deinem lienienproblem nur helfen, wenn du uns ein paar mehr informationen gibst

  10. #10

    Miaaa Gast
    Ich würde euch ja gerne mehr Informationen geben, aber ich als N00b weiß nu wirklich gar nicht was für Informationen man dafür benötigt.
    Aber ich sag mal alles was ich weiß:
    1. Das ganze Minigame ist Image-basiert. Will heißen: Alle Grafiken werden in Images angezeigt, soll sich etwas bewegen, bewegt sich das Image.
    2. Nach einer bestimmten Zeit (Timer) wird von einem beliebigen Punkt (Random) oben am Formrand ein Strich gezogen.
    3. Dieser Strich bewegt sich mehr oder weniger langsam (kommt auf den Schwierigkeitsgrad an) auf den unteren Rand zu.
    4. Währenddesen werden (durch andere Timer vom ersten Timer ausgelöste) weitere Strich von oben herabfallen. (Nach und nach Rndoms, ob sie sich teilen)
    5. Wenn ein Strichende auf einer bestimmten Höhe ist, (ein sich selbst immmer wieder aufrufender Timer überwacht das - wie ich finde eine gute Alternative zu Parallel Processes vom guten alten RPGMaker) dann wird abgefragt wo genau das Strichende 'einschlägt' und entsprechend wird erst BottleAnimation aufgerufen (procedure, die ein ExplosionsImage für einige Sekunden über den Einschlagsort legt) und dann zum Beipiel das Visible für das Image mit einer Stadt auf false gestellt und Stadt (Integer) := Stadt - 1; gesetzt.
    6. Dann kommt wieder eine Abfrage, die (wenn Stadt gleich null ist) die HighscoreProcedure aktiviert.

    Wahrscheilich sind dies nicht die Informationen die ihr braucht, aber von Wrappern und so was versteh ich (leider ) nichts.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •