Autor Beitrag
Basti
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 345

Windows Vista
D2005 Pers, D7 Pers
BeitragVerfasst: Mi 11.08.04 16:03 
Hallo Leute,
ich habe ein Problem, weiss aber nicht recht welches. Es geht um Wegpunkte
in einem Leveleditor, die ich über einen dynamischen Array ständig erweitern können möchte.
1. Frage: Geht das so, wie ich es hier mache?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.OnClick_WPcreate(Sender: TObject);
var i:integer;
begin
  i:=length(Wegpunkte)+1;
  setlength(Wegpunkte,i);
  Wegpunkte[i]:=TTVMesh.Create(self);
  Wegpunkte[i].ConnectTo(scene.CreateMeshBuilder('Wegpunkt '+IntToStr(i)));
  Wegpunkte[i].CreateSphere(0,2,20,20,$FFFF0000);
end;

2. Frage: Wenn ja, warum kommt dann ein Fehler:
Zitat:
[Warnung] u_formular.pas(451): Konstantenausdruck verletzt untere Grenzen

Das ist die Stelle wo ich den Hexadezimal Code als Farbe angebe.
Nun bin ich mir nicht sicher, ob ich den Array falsch aufbaue oder die Farbe alles kaputtmacht,
jedenfalss kann ich nur einen Wegpunkt erstellen, beim 2. geht nix mehr :(
Vielleicht kann mir jemand helfen (der vielleicht auch TrueVision3D hat).
Dankeschön
Sebastian
raziel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: Mi 11.08.04 16:15 
Basti hat folgendes geschrieben:
1. Frage: Geht das so, wie ich es hier mache?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.OnClick_WPcreate(Sender: TObject);
var i:integer;
begin
  i:=length(Wegpunkte)+1;
  setlength(Wegpunkte,i);
  Wegpunkte[i]:=TTVMesh.Create(self);
  Wegpunkte[i].ConnectTo(scene.CreateMeshBuilder('Wegpunkt '+IntToStr(i)));
  Wegpunkte[i].CreateSphere(0,2,20,20,$FFFF0000);
end;


Nein ;)
Wenn i die neue Länge des Array sein soll, dann greifst Du auf das letzte Element mit i-1 zu! Wegpunkte[i] gibt es in diesem Fall nicht!!

Basti hat folgendes geschrieben:
2. Frage: Wenn ja, warum kommt dann ein Fehler:
Zitat:
[Warnung] u_formular.pas(451): Konstantenausdruck verletzt untere Grenzen

Das ist die Stelle wo ich den Hexadezimal Code als Farbe angebe.

Welcher Typ wird denn bei der Hexzahl verlangt?

raziel

_________________
JSXGraph
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Mi 11.08.04 16:16 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.OnClick_WPcreate(Sender: TObject);  
var i:integer;  
begin  
  i:=length(Wegpunkte);    
  setlength(Wegpunkte,i+1);
  Wegpunkte[i]:=TTVMesh.Create(self);  
  Wegpunkte[i].ConnectTo(scene.CreateMeshBuilder('Wegpunkt '+IntToStr(i+1)));  
  Wegpunkte[i].CreateSphere(0,2,20,20,Integer($FFFF0000)); 
end;
Das sollte eigentlich funktionieren. Hat übrigens nix mit TV3D zu tun. Das Array started bei 0, die Zählung allerding bei 1. Daher muss musst du da ein bisschen aufpassen. Das Problem in der letzten Zeile sollte eigentlich keines sein. Keine Ahnung warum, wenn du Integer davor schreibst, geht's!

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
Basti Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 345

Windows Vista
D2005 Pers, D7 Pers
BeitragVerfasst: Mi 11.08.04 16:28 
Titel: Argg
Oh man - Ich vergesse das irgendwie IMMER. :autsch:
Wann präge ich mir mal ein, dass das mit 0 anfängt und deshalb immer 1 abgezogen werden muss...
Das ist aber auch doof - wer hat bloß die 0 erfunden? :motz:
Das Farbproblem konnte ich mit einer TV3D Umwandlung lösen: DelphiGlobals.Colorkey($FFFF0000);
Danke für eure Hilfe.