класс исключения 'External: SIGABRT'

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

класс исключения 'External: SIGABRT'

Сообщение slpo10 » 03.12.2012 13:03:15

Выполняю в потоке:
Код: Выделить всё
   
Png := TPortableNetworkGraphic.Create;
   png.Canvas.Create;
   png.Canvas.Lock; // не помогло!
   Png.SetSize(450,300);
   Png.PixelFormat:=pf8bit;
   Png.Transparent:=true;
   Png.TransparentColor:=clBlue;
   Png.Canvas.Brush.Color:=clBlue;
   Png.Canvas.FillRect(0,0,450,300);
   Png.Canvas.Brush.Color:=clYellow;
   Png.Canvas.Ellipse(10,10,246,246);
   png.canvas.Font.Size:=40;
   png.canvas.Brush.Color:=clBlue;
   png.canvas.Pen.Color:=clwhite;
   png.canvas.Font.Color:=clwhite;
   png.canvas.TextOut(40,40,'Проверка текста');
   //png.SaveToStream(OutputData);
   png.SaveToFile('111.png');
   png.Canvas.unLock; //
   png.Free;       


Получаю или вылет программы или "программа вызвала subj"
Проблема возникает при первой же попытке отрисовать на канве.

Не в потоке под Linux и в потоке под Вынь код отрабатывает нормально.
Куда копать? Трабл в canvas и threads - попробовал работать с TBitmap - тоже самое.

Попробовал fcl-image - отрисовывает в потоке без проблем, но вывод текста (canvas.texout) там без кириллицы

Добавлено спустя 2 часа 9 минут 33 секунды:
Попробую сделать sinchronize

Добавлено спустя 19 часов 55 минут 7 секунд:
Ну сам себе и отвечу.
1) Synchronize действительно решил проблему
2) Canvas.lock, как альтернатива synchronize для визуальных компонентов, почему то не дал результата
Остался таки вопрос из области теории: в задаче спрашивалось "Отрисовать png в памяти и вывести в файл".
Если бы я рисовал что-либо на канве формы, было бы понятно, зачем блокировки, но я то рисовал в памяти, какого же тогда потребовалась блокировка?
slpo10
незнакомец
 
Сообщения: 1
Зарегистрирован: 03.12.2012 12:22:47

Re: класс исключения 'External: SIGABRT'

Сообщение Иван Шихалев » 10.12.2012 00:32:32

Из кода не ясно, где и как создается Thread.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

Рейтинг@Mail.ru