![]() |
Inputbox und For-Schleife -> Fehler?!
Wie gesagt bereitet mir eine Inputbox in einer For-Schleife einen Fehler.
Wenn ich einfach ein Programm erstellen würde, was, wenn ich auf einen Button klicke folgende procedure macht:
Delphi-Quellcode:
dann funktioniert das ja, aber in meinem Falle nicht, da das ganze Programm ein bisschen komplexer ist.
for i:=0 to 3 do begin
eingabe:=inputbox('','',''); end;
Delphi-Quellcode:
Bei folgendem Code hängt sich das Programm auf und makiert die Zeile if Gegenstand[k]... blau. Aber wieso?? Würde diese if-Bedingung nicht hier stehen, würde alles funktionieren.
for i:=0 to 3 do begin
if Gegenstand[i].hand=true then begin eingabe:=inputbox('','',''); end; end; Weiss nicht, ob das von bedeutung ist, aber Gegenstand ist folgendes:
Delphi-Quellcode:
TGegenstand = class(TImageSprite)
public constructor Create(AParent: TSprite ); override; end; var Gegenstand:=array[0..3] of TGegenstand |
Re: Inputbox und For-Schleife -> Fehler?!
hallo,
lass mal in der folgenden zeile das = weg
Delphi-Quellcode:
raik
var Gegenstand:=array[0..3] of TGegenstand
|
Re: Inputbox und For-Schleife -> Fehler?!
Statt
Code:
kannst du
if Gegenstand[i].hand=true then begin
Code:
schreiben
if Gegenstand[i].hand then begin
Ist die Methode Hand in TImageSprite, oder selbst definiert? Has du den Konstruktor aufgerufen? mytar |
Re: Inputbox und For-Schleife -> Fehler?!
Hai ISAS,
wie und wo ist denn Hand deklariert? BTW: Du solltest es auf jeden fall vermeiden eine Variable vom Typ BOOLEN mit = True zu prüfen. Schlecht:
Delphi-Quellcode:
Gut:
var
blubb : Boolean; begin blubb := True; if (blubb = True) then begin end; end;
Delphi-Quellcode:
[Edit] Und der Hinweiss von Kiar ist natürlich auch richtig (schnell mal die Brille putzt)
var
blubb : Boolean; begin blubb := True; if (blubb) then begin end; end; |
Re: Inputbox und For-Schleife -> Fehler?!
hallo hai, es ist aber auch noch früh :mrgreen:
|
Re: Inputbox und For-Schleife -> Fehler?!
Bei dem Gegenstand:Array[0..3] of Tgegenstand hab ich mich nur hier verschrieben.
Das Hand ist bei TGegenstand drinnen. Deswegen heissts ja Gegenstand[i].hand. Und wenn ich bei der If-Bedinngung das so schreibe, wie ihr gesagt habt, ändert sich leider nichts. Der Fehler wird noch immer angezeigt. Ich erläutere mal mehr: Das ist eine selbstgeschriebene procedure:
Delphi-Quellcode:
Sie wird bei OnMouseUp aufgerufen. Das wäre alles, was man noch dazu sagen kann
procedure TSpiel;
begin end; |
Re: Inputbox und For-Schleife -> Fehler?!
Hast du die Klasse für jedes Arrayselement instanziert (Construktor aufgerufen) ?
|
Re: Inputbox und For-Schleife -> Fehler?!
Ja, das hab ich
|
Re: Inputbox und For-Schleife -> Fehler?!
Ich denke wir kommen hier schwer weiter, vielleicht wärst du so nett
und postest die Klassendeklaration, den Konstruktor und die Hand - Methode dann schaun wir weiter mytar |
Re: Inputbox und For-Schleife -> Fehler?!
Delphi-Quellcode:
TGegenstand = class(TImageSprite)
public hand:boolean; constructor Create(AParent: TSprite ); override; end; gegenstand:array [0..3] of tgegenstand; constructor tgegenstand.Create(AParent: TSprite ); begin inherited Create(AParent); Image:=Form1.DXImageList1.Items[1]; Width :=Image.Width; Height :=Image. Height; X:=32; Y:=32; z:=1; end; if typ=5 then begin with TGegenstand.Create(DXSpriteEngine1.Engine) do begin Gegenstand[e]:=TGegenstand.Create(DXSpriteEngine1.Engine); Gegenstand[e].Image:=Form1.DXImageList1.Items[10]; Gegenstand[e].x:=strtoint(s)*32; Gegenstand[e].y:=strtoint(t)*32; e:=e+1; end; end; (Ist unwichtig. Das is nur das laden des Levels bei OnCreate) procedure TForm1.PSpiel; begin for k:=0 to e do begin if (Gegenstand[k].hand) then begin eingabe:=inputbox('nm','l','klj'); end; end; end; Sonst noch etwas?? Das wäre eigentlich schon fast alles. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 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 by Thomas Breitkreuz