Integer Napisano Luty 4, 2011 Zgłoś Share Napisano Luty 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 do komentarza Udostępnij na innych stronach More sharing options...
Integer Napisano Luty 4, 2011 Autor Zgłoś Share Napisano Luty 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 do komentarza Udostępnij na innych stronach More sharing options...
Adam27 Napisano Luty 4, 2011 Zgłoś Share Napisano Luty 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 do komentarza Udostępnij na innych stronach More sharing options...
Integer Napisano Luty 4, 2011 Autor Zgłoś Share Napisano Luty 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 do komentarza Udostępnij na innych stronach More sharing options...
Integer Napisano Luty 4, 2011 Autor Zgłoś Share Napisano Luty 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 do komentarza Udostępnij na innych stronach More sharing options...
5corpio Napisano Luty 4, 2011 Zgłoś Share Napisano Luty 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 do komentarza Udostępnij na innych stronach More sharing options...
Integer Napisano Luty 4, 2011 Autor Zgłoś Share Napisano Luty 4, 2011 nie no try .. było tylko po to żeby znaleźć błąd Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.