AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Befehl zum pausieren

Ein Thema von Mesion · begonnen am 1. Okt 2010 · letzter Beitrag vom 2. Okt 2010
Antwort Antwort
Seite 1 von 2  1 2      
Mesion

Registriert seit: 1. Okt 2010
11 Beiträge
 
#1

Befehl zum pausieren

  Alt 1. Okt 2010, 20:07
Delphi-Version: 7
Guten Tag,
ich hoffe, dass ich hier in das richtige Unterforum schreibe, wenn nicht, dann tut es mir Leid.

Seit ein paar Wochen habe ich nun Informatik in der Schule und als Hausaufgabe sollen wir ein Paintprogramm mit 8 Funktionen programmieren.
Für besondere Funktionen gibt es Pluspunkte.

Ich habe mir nun überlegt eine Funktion zu machen bei der ein ausgefüllter Kreis gezeichnet wird, der immer größer wird, je länger die Maus gedrückt wurde.
Das untere ist dabei herrausgekommen und es funktioniert auch, aber der Kreis vergrößert sich zu schnell, deswegen suche ich nach einem Befehl den ich in die If-Verzweigung bauen kann, der sozusagen die Zeit kurz stehen lässt, sodass die Schleife zum Beispiel 0,1 Sekunden eine Pause einlegt.

Es wäre sehr nett, wenn mir vielleicht jemand helfen könnte.

Mit freundlichen Grüßen
Mesion

Delphi-Quellcode:
                  repeat

                  If dieMaus.istGedrueckt = false then
                  begin
                  hposition2:=0;
                  meinStift.bewegeBis(dieMaus.hPosition,dieMaus.vPosition);
                  end;

                  If dieMaus.istGedrueckt = true then
                  begin
                  meinStift.bewegeBis(meinStift.hPosition,meinStift.vPosition);
                  hposition2:=(hposition2+1);
                  meinStift.zeichneKreis(1+hposition2);
                  end;

                  until
                  dieMaus.doppelklick;
[EDIT]Delphi-Tags eingefügt. Bitte künftig selber machen. Danke. MfG. Christian Seehase[/EDIT]

Geändert von Christian Seehase ( 1. Okt 2010 um 20:40 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Befehl zum pausieren

  Alt 1. Okt 2010, 21:59
Delphi-Quellcode:
repeat
  If not dieMaus.istGedrueckt {= false} then
    begin
      hposition2:=0;
      meinStift.bewegeBis(dieMaus.hPosition,dieMaus.vPosition);
    end{;}
  else
  {If dieMaus.istGedrueckt then}
    begin
      meinStift.bewegeBis(meinStift.hPosition,meinStift.vPosition);
      hposition2:=(hposition2+1);
      meinStift.zeichneKreis(1+hposition2);
    end;
          
  sleep(150); // oder besser delay aus der Codelib nehmen
until dieMaus.doppelklick;
Grüße
Klaus
Klaus

Geändert von Klaus01 ( 1. Okt 2010 um 22:01 Uhr)
  Mit Zitat antworten Zitat
Mesion

Registriert seit: 1. Okt 2010
11 Beiträge
 
#3

AW: Befehl zum pausieren

  Alt 1. Okt 2010, 22:27
Vielen Dank für deine Antwort.

Wenn ich das mit sleep mache, dann steht da Undefinierter Bezeichner, muss ich den Befehl eventuell auf Deutsch benutzen?
Schlafen, Ruhen und Pausieren habe ich aber schon ausprobiert ^^
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Befehl zum pausieren

  Alt 1. Okt 2010, 22:38
Nein, die Funktion wird so geschrieben.

Du hast deine Zeichenfunktionen wahrscheinlich in einer extra Unit. Da wird nicht der Standard-Satz externer Units eingetragen.

In der Unit, in welcher Du sleep() verwenden willst, in die uses Liste Windows mit aufnehmen (uses im Quelltext suchen).

Tipp:
Cursor über geschriebenes sleep(), dann F1. In dem Hilfetext steht auch immer die externe Unit, in der die Funktion/Procedure etc. definiert ist. Natürlich nur wenn es ein bekannter Bezeichner ist.

Geändert von Satty67 ( 1. Okt 2010 um 22:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Befehl zum pausieren

  Alt 1. Okt 2010, 22:38
Sollte eigentlich in der Windows.pas deklariert sein. Hast du die Unit unter uses eingebunden?

Aber sag mal, mit was für einer VCL programmiert ihr da in der Schule, da da ja irgendwie alles auf deutsch ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Befehl zum pausieren

  Alt 1. Okt 2010, 22:48
Sieht mir eher nach einer teilweise deutschsprachigen Komponenten/Objekt-Sammlung zum Zecihnen aus.
  Mit Zitat antworten Zitat
Mesion

Registriert seit: 1. Okt 2010
11 Beiträge
 
#7

AW: Befehl zum pausieren

  Alt 2. Okt 2010, 17:47
Guten Tag,
vielen Dank für die zahlreichen Antworten.
Wir arbeiten mit Stifte und Mäuse Version 2.4

Ihr habt Recht und der Befehl wurde umgenannt.
Er heisst "warte()".
Ich habe aber schon wieder ein Problem.
Ich soll ja 8 Funktionen schreiben und die meisten habe ich jetzt auch schon, aber sie lassen sich irgendwie nicht ineinanderfügen.
Alleine funktionieren sie aber einwandfrei.
Ich glaube das Problem hat mit der Tastatur zu tun.

In der Schule hatten wir schon 2 Funktionen in einem Programm: Malen und Radieren.
Ich habe nach dem gleichen Schema dann noch 3 Funktionen von mir eingefügt.
Kreise die immer größer werden, je länger man drückt.
Das gleiche nochmal mit Rechtecken und dann noch Linien zeichnen.


Es wäre echt nett wenn mir da jemand helfen könnte,
ich bin schon am verzweifeln.

Mit freundlichen Grüßen
Mesion



Delphi-Quellcode:
begin
  meinStift.hoch;
  repeat
    if (dieTastatur.wurdeGedrueckt) then
    begin
    dieTastatur.zeichen;
      if (dieTastatur.zeichen='r') then
      begin
        meinStift.radiere;
        meinStift.bewegeBis(dieMaus.hposition,dieMaus.vposition);
        if (dieMaus.istGedrueckt) then
        begin
          meinStift.runter;
        end
        else
        begin
          meinStift.hoch;
        end;
      end;
      if (dieTastatur.zeichen='z') then
      begin
        meinStift.normal;
        meinStift.bewegeBis(dieMaus.hposition,dieMaus.vposition);
        if (dieMaus.istGedrueckt) then
        begin
          meinStift.runter;
        end
        else
        begin
          meinStift.hoch;
        end;
      end;
      if (dieTastatur.zeichen='k') then
      begin
        if (dieMaus.istGedrueckt = true) then
        begin
          meinStift.setzeLinienBreite(2);
          meinStift.bewegeBis(meinStift.hPosition,meinStift.vPosition);
          RadiusKreis:=(RadiusKreis+1);
          warte(10);
          meinStift.zeichneKreis(Radiuskreis);
        end
        else
        begin
          meinStift.bewegeBis(dieMaus.hposition,dieMaus.vposition);
          meinStift.hoch;
          Radiuskreis:=0;
        end;
        if (dieTastatur.zeichen='e') then
        begin
          if (dieMaus.istGedrueckt = true) then
          begin
            meinStift.setzeLinienBreite(2);
            meinStift.bewegeBis(meinStift.hPosition,meinStift.vPosition);
            BreiteRechteck:=(BreiteRechteck+1);
            LaengeRechteck:=(LaengeRechteck+1);
            warte(10);
            meinStift.zeichneRechteck(BreiteRechteck,LaengeRechteck);
          end;
        end
        else
        begin
          meinStift.bewegeBis(dieMaus.hposition,dieMaus.vposition);
          meinStift.hoch;
          BreiteRechteck:=0;;
          LaengeRechteck:=0;
        end;
        if (dieTastatur.zeichen='l') then
        begin
          if (dieMaus.istGedrueckt = true) then
          begin
            meinStift.runter;
            meinStift.zeichneKreis(3);
            meinStift.bewegeBis(meinStift.hPosition,meinStift.vposition);
          end
          else
          begin
            meinStift.bewegeBis(dieMaus.hposition,dieMaus.vposition);
            meinStift.hoch;
          end;
        end;
      end;
      dieTastatur.weiter;
    end;
  until (dieMaus.doppelklick);
end;
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Befehl zum pausieren

  Alt 2. Okt 2010, 18:09
Es wird nur schwierig sein Hilfe zu so einer externen Bibliothek von uns zu bekommen.

Stell dir vor ich baue mir eine Bibliothek und für die Ausgabe eines Textes auf dem Bilschirm wird der Befehl
Code:
Popel
benutzt.

Wer soll dass wissen, dass für die Ausgabe folgender Code notwendig ist
Popel( 'du mich auch' ); Dazu muss man die Bibliothek kennen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Mesion

Registriert seit: 1. Okt 2010
11 Beiträge
 
#9

AW: Befehl zum pausieren

  Alt 2. Okt 2010, 18:55
Ja das ist natürlich einleuchtend ^^

Es geht halt darum, dass das Programm immer das letzte Zeichen der Tastatur abfragt und dadurch soll dann immer eine bestimmte Schleife ausgeführt werden.

Bei dieTastatur.wurdeGedrueckt; wird abgefragt ob die Tastatur überhaupt ein Zeichen enthält.

Der Befehl zum abfragen welcher Buchstabe es ist, ist dieTastatur.zeichen;

Und um das vorderste Zeichen zu löschen bzw. die Tastatur zu ''resetten''gibt es den Befehl dieTastatur.weiter;

Mehr Befehle haben wir für die Tastatur nicht bekommen.

Mit freundlichen Grüßen
Mesion
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#10

AW: Befehl zum pausieren

  Alt 2. Okt 2010, 19:00
Möchtest du das man mehrere Tasten gleichzeitig drücken kann?

Außerdem, müsstest du doch, wenn man das k drückt, sagen, dass die Tastatur ein Zeichen weiter geht oder?
Delphi-Quellcode:
if (dieTastatur.zeichen='k') then
begin
  if (dieMaus.istGedrueckt = true) then
  begin

  end
  else
  begin

  end;

  if (dieTastatur.zeichen='e') then
  begin

  end
  else
  begin
    // HIEEEEERR
  end;

  if (dieTastatur.zeichen='l') then
  begin

  end;
end;
Er wird immer im HIEEEEERR Block landen oder?

Übrigens, könntest es auch so schreiben:
Delphi-Quellcode:
if (zeichen = 'a') then
begin

end
else if (zeichen = 'b') then
begin

end;
Weil beide Zeichen gleichzeitig werden wohl nicht gehen.

Und dann kriegt man das noch besser hin:
Delphi-Quellcode:
case zeichen of
  'a' : ;
  'b' : ;
end;
MfG
Fabian
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler

Geändert von xZise ( 2. Okt 2010 um 19:05 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz