![]() |
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. |
Re: Inputbox und For-Schleife -> Fehler?!
Ich glaube nicht das du das brauchst:
Delphi-Quellcode:
Kommt es zu einem Laufzeitfehler oder einem Fehler während der Kompilierung?
with TGegenstand.Create(DXSpriteEngine1.Engine) do
Hast du e intialisiert? mytar |
Re: Inputbox und For-Schleife -> Fehler?!
Doch, das brauch ich. Das Level wird aus einer Textdatei aufgebaut und ohne dem geht das nicht.
Es kommt erst dann zu einem Fehler, wenn die Procedure ausgeführt wird. Er kompiliert mir das ohne Fehlermeldung Ahm, wie meinst Initalisiert?? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:06 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