dem Array lassen sich keine Werte zuweisen



  • ich hoffe ihr könnt mir weiterhelfen, ich habe eine neue Struktur erzeugt.

    struct CUSTOMVERTEX
    {
    	FLOAT x, y, z;		// The transformed position for the vertex.
    	D3DXVECTOR3 normal; // The surface normal for the vertex.
    };
    

    so aus diesem habe ich dann einen Array erzeugt

    CUSTOMVERTEX vertices[30000];
    

    und nun kann ich den einzelnen Elementen von Customvertex keine neuen Werte zuordnen...also wenn ich folgendes mache, dann passiert garnichts

    vertices[(3*AnzVertices)].x = x;
    vertices[(3*AnzVertices)].y = HF[x][y];   //in HF steht ein float wert
    vertices[(3*AnzVertices)].z = y*1.0f;
    vertices[(3*AnzVertices)].normal = D3DXVECTOR3(nx,ny,nz); //nx,ny,nz sind float werte
    

    ich hoffe ihr habt eine idee woran es liegen könnte...glaub zwar nicht das es damit was zu tun hat aber ich erstelle eigentlich eine windows form anwendung. Aber ich glaube trotzdem das es eher in das Forum passt.



  • Fehlermeldung? 🙄



  • tommy1987 schrieb:

    und nun kann ich den einzelnen Elementen von Customvertex keine neuen Werte zuordnen...also wenn ich folgendes mache, dann passiert garnichts

    Wie, passiert garnichts? Zeige lieber mal den Code wo man sieht wie du das Array verwendest (wird es irgendwo übergeben, usw.).

    tommy1987 schrieb:

    ...glaub zwar nicht das es damit was zu tun hat aber ich erstelle eigentlich eine windows form anwendung. Aber ich glaube trotzdem das es eher in das Forum passt.

    Auch wenn du vermutlich kein C++ sondern vermutlich die Sprache C++/CLI verwendest (anderes Unterforum), dürfte es hierbei vermutlich keinen Unterschied geben.



  • also Fehlermeldung kommt an dieser Stelle erstmal keine, der Fehler ist mir beim Debuggen meines Programms aufgefallen. im Array steht bereits ein Wert, der aber einfach nicht überschrieben wird.



  • tja lEute keine Ahnung woran es lag, ich war kurz telefornieren und als ich wieder kahm hats funktioniert, ohne das ich irgendwas verändert habe, vielleicht hatte der Compiler nen schlechten Tag^^



  • Habe das auch ab und zu, dass mir etwas nicht kompiliert, weil irgendwas mit irgendwelchen Dateien nicht stimmt o.ä.
    Musst mal auf die Fehlermeldung achten. Die hat dann nichts mit deinem Projekt zu tun (direkt). Erneut kompilieren geht dann. (Wobei bei mir das eher beim Linken passiert).



  • jetzt hab ich das Problem schon wieder, und ich bekomme auch weder Fehlermeldungen noch Warnungen...als wenn jemand ne idee hat woran es liegen könnte...

    So hab die Lösung gefunden, es liegt scheinbar daran das ich den array ursprünglich global definiert hatte. aber jetzt wo er lokal definiert ist, lassen sich die Werte zuordnen, aber hat jemand ne idee warum das so ist?



  • Das klingt mir eher nach undefiniertem Verhalten.
    Wahrscheinlich greifst du da einfach auf ungültigen Speicher.

    Ein erster Schritt das zu kontrollieren ist anstatt ein Array zu benutzen mal ein std::vector zu nehmen und da ev. at benutzen. Da kannst du dann sicher sein, dass du auf einen gültigen Speicher zugreifst.

    Ansonsten können wir nicht viel sagen, da wir nicht wissen, wie deine Anwendung sonst aussieht.

    Ansonsten:
    Bist du sicher, dass nichts ins Array geschrieben wird? - Der Debugger kann dir manchmal falsche Sachen anzeigen (wegen Optimierungen). Gib die Werte einfach mal aus.



  • ich glaube du hast recht, hab es gerade nochmal schnell getestet und die ergebnisse sind bei beiden Varianten gleich. Allerdings zeigt er mir die änderung beim debuggen nur an, wenn ich den array lokal definiere.


Anmelden zum Antworten