![]() |
Delphi-Version: 7
Befehl zum pausieren
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:
[EDIT]Delphi-Tags eingefügt. Bitte künftig selber machen. Danke. MfG. Christian Seehase[/EDIT]
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; |
AW: Befehl zum pausieren
Delphi-Quellcode:
Grüße
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; Klaus |
AW: Befehl zum pausieren
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 ^^ |
AW: Befehl zum pausieren
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. |
AW: Befehl zum pausieren
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. |
AW: Befehl zum pausieren
Sieht mir eher nach einer teilweise deutschsprachigen Komponenten/Objekt-Sammlung zum Zecihnen aus.
|
AW: Befehl zum pausieren
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; |
AW: Befehl zum pausieren
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:
benutzt.
Popel
Wer soll dass wissen, dass für die Ausgabe folgender Code notwendig ist
Delphi-Quellcode:
Dazu muss man die Bibliothek kennen.
Popel( 'du mich auch' );
|
AW: Befehl zum pausieren
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 |
AW: Befehl zum pausieren
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:
Er wird immer im HIEEEEERR Block landen oder?
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; Übrigens, könntest es auch so schreiben:
Delphi-Quellcode:
Weil beide Zeichen gleichzeitig werden wohl nicht gehen.
if (zeichen = 'a') then
begin end else if (zeichen = 'b') then begin end; Und dann kriegt man das noch besser hin:
Delphi-Quellcode:
MfG
case zeichen of
'a' : ; 'b' : ; end; Fabian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 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