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
Satty67

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

AW: Befehl zum pausieren

  Alt 1. Okt 2010, 21: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
 
#2

AW: Befehl zum pausieren

  Alt 2. Okt 2010, 16: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
 
#3

AW: Befehl zum pausieren

  Alt 2. Okt 2010, 17: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
 
#4

AW: Befehl zum pausieren

  Alt 2. Okt 2010, 17: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
 
#5

AW: Befehl zum pausieren

  Alt 2. Okt 2010, 18: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 18:05 Uhr)
  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
 
#6

AW: Befehl zum pausieren

  Alt 2. Okt 2010, 18:45
Bitte nicht auf True prüfen!
Delphi-Quellcode:
if (dieTastatur.zeichen='k') then
begin
  // NIE NIEMALS NICHT AUF TRUE PRÜFEN !!!!
  if (dieMaus.istGedrueckt {= true} ) then
  begin

  end
  else
  begin

  end;

end;
Die Gründe wurden zuhauf hier im Forum erläutert
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
 
#7

AW: Befehl zum pausieren

  Alt 2. Okt 2010, 19:38
Möchtest du das man mehrere Tasten gleichzeitig drücken kann?
Nein, es soll immer nur eine Funktion ausgeführt werden.

Außerdem, müsstest du doch, wenn man das k drückt, sagen, dass die Tastatur ein Zeichen weiter geht oder?
Ganz am Ende der ersten If-Verzweigung geht die Tastatur ein Zeichen weiter

// NIE NIEMALS NICHT AUF TRUE PRÜFEN !!!!
Ok, dann prüfe ich nicht auf true, scheint ja fast eine Straftat zu sein ^^


Mittlerweile habe ich es geschafft die Funktionen einzubauen, der einzige Schönheitsfehler ist jetzt nurnoch, dass ich bei meinen eigenen Funktionen, also mit dem Kreis, Rechteck und Linie, dass ich die Aktivierungstaste gedrückt halten muss, damit es funktioniert.

Delphi-Quellcode:
    meinStift.hoch;
    repeat
    meinStift.bewegeBis(dieMaus.hposition,dieMaus.vposition);;
      if (dieMaus.istGedrueckt) then
      begin
        meinStift.runter;;
      end
      else
      begin
        meinStift.hoch;;
      end;

    if (dieTastatur.wurdeGedrueckt) then
    begin


      if (dieTastatur.zeichen='r') then
      begin
        meinStift.radiere;
      end;


      if (dieTastatur.zeichen='z') then
      begin
        meinStift.normal;
      end;


    If (dieTastatur.zeichen='k') then
    begin

      While dieMaus.istGedrueckt = true do
      begin
        meinStift.setzeLinienBreite(2);
        meinStift.bewegeBis(meinStift.hPosition,meinStift.vPosition);
        RadiusKreis:=(RadiusKreis+1);
        warte(10);
        meinStift.zeichneKreis(Radiuskreis);
        meinStift.hoch;
      end;
        meinStift.bewegeBis(dieMaus.hposition,dieMaus.vposition);
        meinStift.hoch;
        Radiuskreis:=0;
      end;


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

      While dieMaus.istGedrueckt = true do
      begin
        meinStift.setzeLinienBreite(2);
        meinStift.bewegeBis(meinStift.hPosition,meinStift.vPosition);
        BreiteRechteck:=(BreiteRechteck+1);
        LaengeRechteck:=(LaengeRechteck+1);
        warte(10);
        meinStift.zeichneRechteck(BreiteRechteck,LaengeRechteck);
        meinStift.hoch;
      end;
        meinStift.bewegeBis(dieMaus.hposition,dieMaus.vposition);
        meinStift.hoch;
        BreiteRechteck:=0;
        LaengeRechteck:=0;
      end;




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

      meinStift.bewegeBis(dieMaus.hposition,dieMaus.vposition);
      meinStift.hoch;

      While dieMaus.istGedrueckt = true do
      begin
        meinStift.runter;
        meinStift.zeichneKreis(3);
        meinStift.bewegeBis(meinStift.hPosition,meinStift.vposition);
        end;

    end;

     dieTastatur.weiter;
     end;


    until
    dieMaus.doppelklick;
  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, 20:33
// NIE NIEMALS NICHT AUF TRUE PRÜFEN !!!!
Ok, dann prüfe ich nicht auf true, scheint ja fast eine Straftat zu sein ^^
Es könnte sein, dass dein Programm extrem seltsam reagiert ... aber wie gesagt, steht hier im Forum an mehreren Stellen erläutert
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
Benutzerbild von xZise
xZise

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

AW: Befehl zum pausieren

  Alt 2. Okt 2010, 21:57
[...]
Außerdem, müsstest du doch, wenn man das k drückt, sagen, dass die Tastatur ein Zeichen weiter geht oder?
Ganz am Ende der ersten If-Verzweigung geht die Tastatur ein Zeichen weiter[...]
Das ist aber zu spät. Ich habe dir doch das entsprechende Codesegement raus kopiert. Wenn du den Buchstaben k drückst, dann testest du darin ob der Buchstabe e gedrückt wurde. Jetzt verrate mir mal, wie man gleichzeitig eine Taste drücken soll, die zugleich k und e sein soll

Und der Schönheitsfehler ist schnell erklärt:
Wenn du radieren willst drückst du r und der "Pinsel" ist im Radiermodus. Wenn du aber einen Kreiswachsen lassen willst, dann sagst du nicht: Mache einen Kreis und er wird jedes mal ein größer wenn er in der äußeren Schleife ist (das könnte auch etwas schwieriger werden).

Übrigens rücke das doch etwas schöner ein aktuell verwirrt es zumindest mich, dass der Test ob der Buchstabe k gedrückt ist, auf der gleichen Höhe ist, wie der Test ob die Maus gedrückt ist, und dabei eigentlich eine Ebene tiefer ist.

MfG
Fabian

PS: Wenn du if (x = true) then schreibst, dann ist das quasi nix anderes als: if (x = true) = true then . Wenn du mal if (x = false) then hast, dann ist das Äquivalent if (not(x)) then .
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz