![]() |
Bild fällt ... nicht
Huhu,
ich möchte das Bild gerne immer schneller fallen lassen:
Delphi-Quellcode:
Nur ich bekomme dann die Fehlermeldung:
var
Form1: TForm1; Fallen: real; Höhe: integer; ... procedure TForm1.Timer1Timer(Sender: TObject); begin Fallen:= 1; with Image1 do repeat Höhe:= Image1.Top; Fallen:= Fallen*1.1; Image1.Top:=Image1.Top - Fallen; until ( Image1.Top = Höhe - 250 ); end; [Fehler] Unit1.pas(36): E2010 Inkompatible Typen: 'Integer' und 'Extended' Was muss ich den dort machen :gruebel: mfg |
Re: Bild fällt ... nicht
Wenn du von einem Gnazzahltypen einen Fließkommadatentyp abziehst, ist das Ergebnis auch ein Fließkommadatentyp. Der Ganzzahldatentyp wird bei dieser Operation entsprechend erweitert. Die Eigenschaft Top benötigt aber einen Ganzzahldatentyp, da es keine Bruchteile von Pixel gibt. Du musst also aus deinem Fließkommadatentyp mit
![]() ![]() |
Re: Bild fällt ... nicht
Eine Höhe ist eine Ganzzahl, Fallen eine Gleitkommazahl. Zum Umwandeln kannst du z.B. round() oder trunc() nehmen.
Aber mal ernsthaft: Genau das steht doch eigentlich in der Fehlermeldung. Wir nutzen hier doch kein C++. :gruebel: Außerdem muss in die Schleife noch ein Application.ProcessMessages, sonst siehst du nichts. |
Re: Bild fällt ... nicht
Delphi-Quellcode:
so müsste es laut delphihelp sein:
round(Fallen);
Delphi-Quellcode:
geht aber nicht:
For the last two cases, the result of calling the round() function is not the same as the result of adding 0.5 and then calling the floor() function because positive zero will be returned in such cases.
The following function call returns 3. round(2.6) The following function call returns 2. round (2.4) [Fehler] Unit1.pas(36): E2014 Anweisung erforderlich, aber Ausdruck vom Typ 'Int64' gefunden - Ich wusste nur nich ob sich die meldung auf Top oder auf Fallen bezieht ;) EDIT: ok richtig lesen muss man:
Delphi-Quellcode:
nun kommt jedoch trozdem die Fehlermeludng:
Fallen:=round(Fallen);
[Fehler] Unit1.pas(37): E2010 Inkompatible Typen: 'Integer' und 'Extended' bei Image1.Top:=Image1.Top - Fallen; :gruebel: |
Re: Bild fällt ... nicht
Wenn Du richtig gelesen hättest, wäre Dir aufgefallen, dass Du es so machen sollst:
Delphi-Quellcode:
Image1.Top:=round(Image1.Top - Fallen);
|
Re: Bild fällt ... nicht
Ahso danke.
Nur rennt das jetzt innerhalb von 2 sec ins unendliche ... will das eigentlich langsam fallen lassen. Gibts da ne möglichkeit? |
Re: Bild fällt ... nicht
Du benutzt doch einen Timer. Also entweder dessen Interval höher stellen oder den Faktor (1.1) verkleinern.
|
Re: Bild fällt ... nicht
Sollte ja auch noch flüssig sein. Was mich wundert:
Delphi-Quellcode:
(Interval=2000)
procedure TForm1.Timer1Timer(Sender: TObject);
begin Fallen:= 1; with Image1 do repeat Höhe:= Image1.Top; Fallen:= Fallen*1.01; Image1.Top:=round(Image1.Top + Fallen); until ( Image1.Top = 50 ); end; Wenn es bei Top=50 bleibt es kurz stehen und dann rennt es ins unendliche nach unten. Warum? :( |
Re: Bild fällt ... nicht
Zitat:
|
Re: Bild fällt ... nicht
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:29 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