Ostatnio zaktualizowałem sobie Lazarusa z wersji 1.6.2 do 1.6.4 - rekompilowałem swój projekt i mało szlag mnie nie trafił, zaświecił jak choinka. Na starszej wersji wszystko się kompilowało, a nowa wersja nie potrafiła obsługiwać helperów znajdujących się w osobnym module - przez to dostałem całą litanię błędów illegal qualifier
przy wszystkich wywołaniach metod helperów. Sytuacja istniała jedynie w mojej paczce komponentów, bo w testowej aplikacji wszystko działało. Wywaliłem nową wersję i z powrotem wróciłem do 1.6.2 - jeszcze większy WTF...
Aby w konsolowej aplikacji móc korzystać z modułu Graphics z paczki LCL, wystarczyło przejść do okna Project Inspector i dodać paczkę do Required Packages. Dzięki temu można było korzystać z tego modułu i klas jakie zawiera.
Po reinstalacji środowiska, nie mogę normalnie z tego modułu korzystać. Tworzę projekt, dodaję paczkę do wymaganych, piszę kod używający TBitmap
i już przy pierwszej wywołanej z obiektu metodzie dostaję wyjątek SIGSEGV.
Przykładowy kod:
{$MODE OBJFPC}{$LONGSTRINGS ON}
uses
Graphics;
var
LBitmap: TBitmap;
begin
LBitmap := TBitmap.Create();
try
LBitmap.PixelFormat := pf24bit;
LBitmap.SetSize(100, 100);
LBitmap.Canvas.Brush.Color := clRed;
LBitmap.Canvas.FillRect(LBitmap.Canvas.ClipRect);
LBitmap.SaveToFile('C:\bitmap.bmp');
finally
LBitmap.Free();
end;
Write('done...');
ReadLn();
end.
Wyjątek leci w linijce:
LBitmap.SetSize(100, 100);
Po zamknięciu komunikatu o wyjątku, przenosi mnie do pliku lclintf.inc do poniższej funkcji:
function RawImage_QueryDescription(AFlags: TRawImageQueryFlags; var ADesc: TRawImageDescription): Boolean;
begin
Result := WidgetSet.RawImage_QueryDescription(AFlags, ADesc);
end;
Spotkał się ktoś z takim problemem już? :D
Normalnie ręce opadają... Mam naklepanych trochę narzędzi do obróbki grafiki właśnie w postaci apek konsolowych (które tworzyłem głównie w wersji 1.6.2), które tworzyłem właśnie w taki sposób jaki opisałem. I teraz jak bym chciał to nie mogę ich przekompilować, bo przestaną działać. Wszystko działało dopóki nie zabrałem się za aktualizowanie.