AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Repeat-Until Schleife bei Bewegen eines Bilds
Thema durchsuchen
Ansicht
Themen-Optionen

Repeat-Until Schleife bei Bewegen eines Bilds

Ein Thema von Haxx0r79 · begonnen am 9. Okt 2009 · letzter Beitrag vom 9. Okt 2009
Antwort Antwort
Haxx0r79

Registriert seit: 9. Okt 2009
12 Beiträge
 
#1

Repeat-Until Schleife bei Bewegen eines Bilds

  Alt 9. Okt 2009, 13:35
Hi erstmal

Ich hab dieses Forum gefunden und dachte mir ich mach mal nen Account und stell gleich mal meine erste Frage

Also hier kommt sie

////////////////////////////////////////////////
procedure TForm1.losfahrenClick(Sender: TObject);
var streckev:integer;

begin
streckev:=StrToInt(strecke.Text)
repeat
autobild.Left:=autobild.Left+1
until autobild.Left=streckev


end;

end.
///////////////////////////////////////////////

das hier ist mein Code den ich benutze.
Meine Aufgabe ist es ein Bild von nem Auto über den Bildschirm fahren zu lassen.

Dazu nehm ich mal den Leftwert des Bildes und addiere halt etwas dazu.

ich habn Eingabefeld undn Button
ins Eingabefeld kommt die Strecke die das auto fahren soll(in metern)
und der Code oben ist halt was passieren soll.

ABER

Wenn ich das ausführe steht da
[Fehler] Unit1.pas(54): Operator oder Semikolon fehlt
[Fehler] Unit1.pas(59): Inkompatible Typen: 'Integer' und 'procedure, untyped pointer or untyped parameter'
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden

was mache ich falsch?
  Mit Zitat antworten Zitat
Benutzerbild von Forlan
Forlan

Registriert seit: 17. Feb 2008
Ort: Herford
265 Beiträge
 
Delphi 2007 Architect
 
#2

Re: Repeat-Until Schleife bei Bewegen eines Bilds

  Alt 9. Okt 2009, 13:39
Erstmal Willkommen

Schau dir erstmal Grundlagen an.
Anschließend suchst du nach Hier im Forum suchenTTimer , da Schleifen zur Bildbewegung zu performence-fressend sind.

[Edit] Bevor irgendwann diese Frage kommen sollte, hier schon mal die Lösung... Um das Flackern abzustellen setzt du das Formular auf DoubleBuffered := True [/Edit]
Marcel
マルセル
www.youtube.com/beethoven1990
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#3

Re: Repeat-Until Schleife bei Bewegen eines Bilds

  Alt 9. Okt 2009, 13:44
Tach und willkommen im Forum

Delphi-Quellcode:
procedure TForm1.losfahrenClick(Sender: TObject);
var
  streckev:integer;
begin
  streckev := StrToInt(strecke.Text);
  repeat
    autobild.Left := autobild.Left + 1;
  until autobild.Left = streckev;
end;

end.
Hinter jede Anweisung muss ein Semikolon. Dann geht auch schon alles. Ausserdem müsstest du in die Schleife vermutlich noch ein Application.ProcessMessages() packen, damit das kompiliert. Und weil man dann gar nichts sieht, weil das Bild sofort weg ist, müsste man noch ein Sleep() mit einbauen.
Toll, roter Kasten. Ich poste trotzdem mal, obwohl Forlan vermutlich nicht ganz unrecht hat. Auch der Timer wäre hier auf jedenfall vorzuziehen.

HTH
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Benutzerbild von Forlan
Forlan

Registriert seit: 17. Feb 2008
Ort: Herford
265 Beiträge
 
Delphi 2007 Architect
 
#4

Re: Repeat-Until Schleife bei Bewegen eines Bilds

  Alt 9. Okt 2009, 13:45
Er sollte auf jeden Fall einen Timer nehmen, da sonst seine CPU Auslastung auf 100% steigen würde.
Marcel
マルセル
www.youtube.com/beethoven1990
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#5

Re: Repeat-Until Schleife bei Bewegen eines Bilds

  Alt 9. Okt 2009, 13:48
Naja, mit Sleep() nicht. Aber es ist trotzdem äußerst unschön.
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Haxx0r79

Registriert seit: 9. Okt 2009
12 Beiträge
 
#6

Re: Repeat-Until Schleife bei Bewegen eines Bilds

  Alt 9. Okt 2009, 14:50
Wow super vielen dank für die schnellen Antworten!

Als Info:
Ich kenn net mal alle Grundlagen in Delphi weil wir erst seit kurzem Delphi in Informatik benutzen

@wicht.
hab jetzt überall wo du gesagt hast nen Semikolon hinzugefügt und es funtzt!!!!
Vielen Dank!

Aber ich würd des Programm gerne langsamer die Schritte von z.b. 0 bis 200 machen lassen, also net dass der gleich nen Sprung von a nach b macht
Wo füg ich da dann das sleep ein? und vorallem welche Zahl?
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#7

Re: Repeat-Until Schleife bei Bewegen eines Bilds

  Alt 9. Okt 2009, 15:10
Du solltest auf den von Forlan vorgeschlagenen Ansatz eingehen. Die Schleife so zu machen wie du es jetzt hast macht dir nur Probleme. Und ein kleines Tutorial durchlesen (hier sind genug verlinkt denke ich, über die Suche) wäre sicherlich angebracht, ohne es böse zu meinen.
Also, pack auf dein Formular einen Timer. Den kannst du dann beim Klick auf den Button auf Enabled setzen und ihm davor Intervall zuweisen. In den Code des OnTick-Events (oder wie es heißt) des Timers packst du einfach dein autobild.Left := autobild.Left + 1; rein. Über das Intervall kannst du dann eben die Millisekunden bestimmen, die zwischen den einzelnen Verschiebungen des Bildes liegen.
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Haxx0r79

Registriert seit: 9. Okt 2009
12 Beiträge
 
#8

Re: Repeat-Until Schleife bei Bewegen eines Bilds

  Alt 9. Okt 2009, 15:40
wo soll ich den quellcode einfügen?
wo isn dieser Code des OnTick-Events??
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#9

Re: Repeat-Until Schleife bei Bewegen eines Bilds

  Alt 9. Okt 2009, 15:45
Klick einfach doppelt auf den Timer drauf im Designer. Dann bist du an der richtigen Stelle.
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Haxx0r79

Registriert seit: 9. Okt 2009
12 Beiträge
 
#10

Re: Repeat-Until Schleife bei Bewegen eines Bilds

  Alt 9. Okt 2009, 16:00
Tut mir Leid, aber wo ist dieser Timer im Designer den du meinst?

/edit:
Gefunden


So der startet ja automatisch.
Wie kann ich des machen dass der per klick startet?

vllt irgendwie etwas wie
onklick
set OnTick:=True?


/edit2:

Habs selbst hinbekommen!

Musste nen Button erstellen und dann
begin
Timer1.Enabled:=True
end;
eingeben

Vielen Dank an alle!!!!
Hab(erstmal)keine Fragen mehr!
  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 16:55 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