Integer Posted February 4, 2011 Report Share Posted February 4, 2011 { Lista wierzchołków ------------------------------------------------------ } PglV = ^TglV; // Vertex TglV = packed record x,y,z : real; end; PglArrV = ^TglArrV; TglArrV = array of TglV; // tablica dynamiczna wierzchołków PglListV = ^TglListV; TglListV = record arr: TglArrV; max: Integer; cnt: Integer; end; procedure TglModel.DrawVertex; var L : Integer; // licznik linii begin // glDisable(GL_TEXTURE_2D); glDisable(GL_LIGHTING); // Sprawca widocznosći kolorów glDisable(GL_COLOR_MATERIAL); glColor3f(0.8,0.8,0.8); // Cieniowanie tekstury // W tym miejscu w ShowMessage wyświetlam poprawnie zawartosć tabicy // czyli do tego momentu jest wszystko ok try if FglListV.cnt>0 then begin for L := 0 to FglListV.max do begin glBegin(GL_POINTS); glVertex(FglListV.arr[L].x, FglListV.arr[L].y, FglListV.arr[L].z); glEnd(); end; end; except ShowMessage('Błąd'); end; end; Witam. Powyższy kod ma za zadanie wyświetlić wierzchołki i jak to robię bezpośrednio w kodzie to jest ok a jak wczytuje z tablicy to czy to są zmienne x, y, z, typu Real czy Single to wyrzuca mi Access Violation mimo że wcześniej sobie sprawdziłem i liczba pozycji w tablicy odczytywana jest poprawnie. Tak czy owak natrętnie pokazuje ShowMessage('Błąd'); czy ktoś może powiedzieć, gdzie zrobiłem błąd? Pozdrawiam Link to comment Share on other sites More sharing options...
Integer Posted February 4, 2011 Author Report Share Posted February 4, 2011 dopisze tylko że tablica jest sprawdzona, wyświetlałem kolejno pozycje i nie ma pustych; wychodzi na to ze ta struktura wyświetlania wywołuje efekt błędu ale dlaczego .. nie ma pojęcia Link to comment Share on other sites More sharing options...
Adam27 Posted February 4, 2011 Report Share Posted February 4, 2011 Albo tablica nie jest indeksowana od 0, albo pole max nie przechowuje numeru ostatniego indeksu tablicy. Po co ci dwie zmienne max i cnt? Etharnion - 2D RPG Szukam grafika chętnego do współpracy przy projekcie. Link to comment Share on other sites More sharing options...
Integer Posted February 4, 2011 Author Report Share Posted February 4, 2011 max jest tylko do testów, jak wstawię tak to jest ok if 10>0 then begin try glBegin(GL_POINTS); // for L := 0 to FglListV.cnt-1 do for L := 0 to 10 do begin glVertex(0.5*L, 0.0, 0.5*L); end; glEnd(); except ShowMessage('Błąd'); end; end; -kjKh+$jKŁy]zZaY [Y[BY[ÓSĘNHLHHLY[^ JJ N[[ N^ÓYYJ NŹY NĘN[[ Link to comment Share on other sites More sharing options...
Integer Posted February 4, 2011 Author Report Share Posted February 4, 2011 zmieniłem tylko przy if-ie ----- Już działa, wczytywanie było wywołane z Create klasy, przeniosłem na zewnątrz i działa. Link to comment Share on other sites More sharing options...
5corpio Posted February 4, 2011 Report Share Posted February 4, 2011 To ja wrzucę swoje grosze i poznam opinię innych Bo wg. mnie nie ma sensu bawienie się w Try/Except i inne sprawdzanie błędów tego typu np. w grach. Bo po cholerkę ? Jak się nie wczyta np. 1tekstura to i tak bez sensu sprawdzać cokolwiek bo gra nie ma prawa się uruchomić Co Wy o tym sądzicie ? Ot taka mini-strona moja po godzinach http://www.wnetrzekuchni.pl Link to comment Share on other sites More sharing options...
Integer Posted February 4, 2011 Author Report Share Posted February 4, 2011 nie no try .. było tylko po to żeby znaleźć błąd Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.