AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler am Ende einer Prozedur

Ein Thema von flomei · begonnen am 7. Mär 2003 · letzter Beitrag vom 8. Mär 2003
Antwort Antwort
Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#1

Fehler am Ende einer Prozedur

  Alt 7. Mär 2003, 22:56
In meinem Spiel steuere ich ein Image nach links und rechts. Das mach ich mit Buttons (ist schön einfach) und ner OnKeyDown Prozedur.
Wenn ich jetzt eine Begrenzung festlegen will, damit mein Image nicht zu weit nach links oder rechts bewegt wird krieg ich nen Fehler.
Code:
procedure TForm1.Border(Sender: TObject);
begin
if
Ship.Left= Ship.Left -150 //maximal 150 Pixel nach links
then
moveleft.Enabled:= false
or
if
Ship.Left= Ship.Left +150 //maximal 150 Pixel nach rechts
then
moveright.Enabled:= false
end;
Wenn ich das jetzt starten will krieg ich diese Meldung:
Zitat:
Operator not applicable to operand type
Der Cursor steht dann am Ende der Prozedur nach "end" und vor ";"

Wo hab ich den Fehler gemacht???

Thx im Voraus!
MfG Florian
Angehängte Dateien
Dateityp: txt code.txt (681 Bytes, 3x aufgerufen)
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#2
  Alt 7. Mär 2003, 23:09
Code:
procedure TForm1.Border(Sender: TObject);
var mittelwert:integer;
begin
mittelwert:=200; // z.b.
if
Ship.Left= mittelwert-150 //maximal 150 Pixel nach links
then
moveleft.Enabled:= false
else
if
Ship.Left= mittelwert+150 //maximal 150 Pixel nach rechts
then
moveright.Enabled:= false;
end;
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#3
  Alt 7. Mär 2003, 23:37
Code:
procedure TForm1.move(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
 if Key=ord('A') then
 moveleft.Click
 else if Key = ord('S') then
 moveright.Click;
end;

procedure TForm1.moveleftClick(Sender: TObject);
begin
  if (border('L')) then
  Ship.Left:= Ship.Left -5;
end;

procedure TForm1.moverightClick(Sender: TObject);
begin
  if (border('R')) then
  Ship.Left:= Ship.Left +5;
end;

function TForm1.Border(LorR:string):boolean;
var mittelwert:integer;
begin
  result:=true;
  mittelwert:=200; // z.b.
  if Ship.Left= mittelwert-150 then //maximal 150 Pixel nach links
  begin
    if LorR='L' then
    result:=false;
  end
  else if Ship.Left= mittelwert+150 then //maximal 150 Pixel nach rechts
  begin
    if LorR='R' then
    result:=false;
  end;
end;

end.
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 8. Mär 2003, 00:25
Moin Florian,

Dein Fehler besteht darin, dass Du zu sehr das, was Du Dir im Klartext gedacht hast in Pascal geschrieben hast.


"Wenn .... dann oder Wenn... dann"

dieses OR in der Mitte ist das Eigentliche Problem.

Kurz geschrieben könnte Deine Funktion so aussehen:

Delphi-Quellcode:
MoveLeft.Enabled := Ship.Left = (Ship.Left-150);
MoveRight.Enabled := Ship.Right = (Ship.Right+150);
(Das sieht jetzt vielleicht etwas verwirrend aus, deshalb eine kurze Erklärung dazu:
Man kann Boolschen Eigenschaften (hier: Enabled) direkt das Ergebnis eines Vergleiches zuweisen (hier, u.a.: Ship.Left = (Ship.Left-150)))

Allerdings würde das dennoch nicht funktionieren, da das Ergebnis immer false wäre (was Dir auch der Compiler als Warning melden würde).
Jan's Lösung müsste funktionieren.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#5
  Alt 8. Mär 2003, 00:27
Der Code ist nicht mehr aktuell. Dank Jan´s und Daniel_B´s Hilfe funktioniert es jetzt endlich. Noch mal vielen Dank!




MfG Florian
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  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:20 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