Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Befehl zum pausieren (https://www.delphipraxis.net/154940-befehl-zum-pausieren.html)

Sir Rufo 2. Okt 2010 18:45

AW: Befehl zum pausieren
 
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

Mesion 2. Okt 2010 19:38

AW: Befehl zum pausieren
 
Zitat:

Zitat von xZise (Beitrag 1053380)
Möchtest du das man mehrere Tasten gleichzeitig drücken kann?

Nein, es soll immer nur eine Funktion ausgeführt werden.

Zitat:

Zitat von xZise (Beitrag 1053380)
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

Zitat:

Zitat von Sir Rufo (Beitrag 1053387)
// 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;

Sir Rufo 2. Okt 2010 20:33

AW: Befehl zum pausieren
 
Zitat:

Zitat von Mesion (Beitrag 1053395)
Zitat:

Zitat von Sir Rufo (Beitrag 1053387)
// 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

xZise 2. Okt 2010 21:57

AW: Befehl zum pausieren
 
Zitat:

Zitat von Mesion (Beitrag 1053395)
[...]
Zitat:

Zitat von xZise (Beitrag 1053380)
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 :stupid:

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
Delphi-Quellcode:
if (x = true) then
schreibst, dann ist das quasi nix anderes als:
Delphi-Quellcode:
if (x = true) = true then
. Wenn du mal
Delphi-Quellcode:
if (x = false) then
hast, dann ist das Äquivalent
Delphi-Quellcode:
if (not(x)) then
.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:13 Uhr.
Seite 2 von 2     12   

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