Autor Beitrag
kdfssl
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Do 19.03.09 20:47 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
function wall_up (x:integer;y:integer):boolean;
 var i,h:integer;
 begin
 x:=x+1;
 for i:=1 to 2 do
 begin
   if ((x >= walls[i].x2) and (x <= walls[i].x3)) then
begin
 if (y <= walls[i].y3) and (y >= walls[i].y2)then
  h:=1
 end
 else
 result:=false;
 if h=1 then
 result:=true;
 end;
 end;


Was ich damit machen wollte: Ich grenze mit dem Feld ein Bereich ab der sozusagen gesperrt ist, den man nicht betreten darf, und die Funktion liefert false, wenn der bereich den ich betreten will, in dem code abgegrenzten Bereich liegt.

Problem: manchmal klappt diese function aber manchmal auch nicht


Wenn ihr wollt zeig ich euch den gesamten quelltext.

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Do 19.03.09 22:15 
Du könntest damit anfangen, den Code vernünftig einzurücken, dass man sieht, welche Zeile zu welchem If gehört.

Danach:
Haltepunkt setzen (F5), Debugger benutzen..

Außerdem:
- Warum noch den Umweg über die Variable h? Warum nicht gleich das result auf true setzen?
- Hat das einen Grund, dass du bei der inneren if y3 und y2 vertauscht hast? Ich mein, im Vergleich zu den beiden X Werten.

_________________
PROGRAMMER: A device for converting coffee into software.
Chemiker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 194
Erhaltene Danke: 14

XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit, Win 10, Win 11
BDS 2006, RAD Studio 2009+C++, Delphi 13, VS 2010 Prof.
BeitragVerfasst: Do 19.03.09 22:30 
Hallo kdfssl,

Du hast h keinen Wert zugewiesen. Das bedeutet das wenn die IF-Abfrage nicht TRUE ist, h einen Zufallswert hat.

Bis bald Chemiker
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 20.03.09 12:44 
Irgendwie erinnert mich das an eine Diskussion, die ich grad vor paar Tagen erst selber wieder benötigt hab:
www.delphi-forum.de/viewtopic.php?t=83487

Ich denk mal, da sollte die Erklärung enthalten sein, die dir dieses "Mal klappt's" genauer erklärt, auch wenn's in der Diskussion speziell um Booleans geht.

P.S.: Es ist IMMER eine gute Idee, jegliche Warnungen des Compilers zu beheben, bevor man Programmverhaltensfehler sucht.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.