sybic Napisano Wrzesień 5, 2012 Zgłoś Share Napisano Wrzesień 5, 2012 Mam program z którego korzysta ponad 100 użytkowników na WinXP, Vista i Win7. Jest tam sporo procedur wykorzystujących funkcje ScanLine. Wszystko OK, ale trafił mi się user, któremu wszędzie tam gdzie owa funkcja występuje wywala błąd „Scan line index of range”. Oczywiście nic nie jest poza zakresem, bo wszystko chodzi jak trzeba, a tu taki problem. Pytanie : Czy we wspomnianej funkcji jest jakiś haczyk? Uzależniony od systemu, czy sprzętu? Klient jest akurat z Japonii, ale tak chyba systemy są takie same Problem występuje wszędzie tam gdzie jest scnaline Poniżej przykładowe procedury, na których program się wywala. Procedure Blur( var Bitmap :TBitmap); var TL,TC,TR,BL,BC,BR,LL,LC,LR:^TRGBTriple; H,V:Integer; begin Bitmap.PixelFormat :=pf24bit; for V := 1 to Bitmap.Height - 2 do begin TL:= Bitmap.ScanLine[V - 1]; TC:=TL; TR:=TL; BL:= Bitmap.ScanLine[V]; BC:=BL; BR:=BL; LL:= Bitmap.ScanLine[V + 1]; LC:=LL; LR:=LL; inc(TC); inc(TR,2); inc(BC); inc(BR,2); inc(LC); inc(LR,2); for H := 1 to (Bitmap.Width - 2) do begin BC.rgbtRed:= (BC.rgbtRed+ BL.rgbtRed+BR.rgbtRed+ TC.rgbtRed+ TL.rgbtRed+TR.rgbtRed+ LL.rgbtRed+ LC.rgbtRed+LR.rgbtRed) div 9 ; BC.rgbtGreen:=( BC.rgbtGreen+ BL.rgbtGreen+BR.rgbtGreen+ TC.rgbtGreen+ TL.rgbtGreen+TR.rgbtGreen+ LL.rgbtGreen+ LC.rgbtGreen+LR.rgbtGreen) div 9 ; BC.rgbtBlue:=( BC.rgbtBlue+ BL.rgbtBlue+BR.rgbtBlue+ TC.rgbtBlue+ TL.rgbtBlue+TR.rgbtBlue+ LL.rgbtBlue+ LC.rgbtBlue+LR.rgbtBlue )div 9 ; inc(TL);inc(TC);inc(TR); inc(BL);inc(BC);inc(BR); inc(LL);inc(LC);inc(LR); end; end; end; Link do komentarza Udostępnij na innych stronach More sharing options...
olesio Napisano Wrzesień 5, 2012 Zgłoś Share Napisano Wrzesień 5, 2012 Proponuje sformatować po ludzku kod i wrzucić go w odpowiednie znaczniki to może ktoś spojrzy, ja nie mam doświadczenia ze ScanLine, więc się nie wypowiadam. Pozdrawiam: olesio Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Wrzesień 8, 2012 Zgłoś Share Napisano Wrzesień 8, 2012 blad dziwny, ustaw sobie aserty sprawdzajace czy wskaznik BC nie wyjezdza ci za daleko i czy nie nadpisujesz przez to pamieci. Pozatym nazwy zmienny mienią się w oczach, ręcznie je iterujesz na dziwnych zakresach pętli więc na tym też bym assercje poustawiał aby się upewnić że nie wychodzą tam gdzie nie trzeba. Always Dark<br /> 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.