Kujivunia

Пользователь

Регистрация: 10.01.2015

Сообщения: 5505

Рейтинг: 996

Kujivunia

Регистрация: 10.01.2015

Сообщения: 5505

Рейтинг: 996

Сразу начну с вопроса, а потом расскажу про историю:

 

Кто поможет понять, почему в цикле на 144-182 строке программа ИНОГДА вылетает с ошибкой, которая связана с {$omp parallel for} ?  я же вроде убрал всё, что может конфликтовать, а остальное пометил как критическую секцию... https://gitlab.com/Roman.Svetlov/pic-to-acii/-/blob/master/main

 

История: два года назад я подумал, что будет круто написать прогу, которая будет пропускать картинку через ascii фильтр. Из-за проблем со шрифтами и совместимостью я сделал вывод в виде картинки, а не настоящего ascii арта. Но прога работала медленно. Очень медленно. А вчера я наткнулся на неё, и изрядно оптимизировал. 

 

Изрядно - это насколько? Скажем так, первая версия обрабатывала картинку 69 секунд + ~10? секунд первичной обработки. 

Новая версия обрабатывает ту же самую картинку за 6 секунд полностью. В 13-14 раз быстрее. 

 

Но есть один недостаток: таинственная ошибка из начала поста. Помогите. 

 

Для тех, кто хочет пощупать прогу: 

качаете по ссылке экзешник, картинку и текстовик, кладёте их в 1 папку, кидаете туда же свою картинку, запускаете прогу. 

Настройки в текстовике:

1. имя исходной картинки вместе с расширением

2. имя картинки, которая создастся после обработки 

3. Первая строка

4. Последняя строка

5. Первый столбец

6. Последний столбец - это рамки прямоугольника ascii таблицы (в символах. Размер таблицы 0..15, 0..15 символов), из которого будут браться символы. По умолчанию используется вся таблица. 

 

dota-2-dota-art-luna-moon.jpgJPGJMb9.png

И Луна, но нарисованная только буквами своего имени

THkUUHp.png

 

Kujivunia

Пользователь

Регистрация: 10.01.2015

Сообщения: 5505

Рейтинг: 996

Kujivunia

Регистрация: 10.01.2015

Сообщения: 5505

Рейтинг: 996

Кажется, я нашёл ошибку.

Итак, по порядку.

DelphiВыделить код
1 2 3 
except     on E: Exception do       Print(E.InnerException.ToString + ' поднята ошибка, с сообщением : ' + E.Message);

Нашёл этот код в интернете для Дельфи, но работает на Паскале. Не очень понимаю, как оно работает, что это за "on", но благодаря этому я получил более подробные сведения об ошибке. Ошибка возникала из-за одновременно вызова ut.GetHeight.

Создал переменную

PascalВыделить код
1 
var utHeight:= ut.Height

Сделал замену по всему коду ut.Height на utHeight.

и ошибки вроде пропали.

ZipZap(D2)

Пользователь

Регистрация: 10.05.2015

Сообщения: 5127

Рейтинг: 2648

ZipZap(D2)

Регистрация: 10.05.2015

Сообщения: 5127

Рейтинг: 2648

красавчик CoolNut.png

Kujivunia

Пользователь

Регистрация: 10.01.2015

Сообщения: 5505

Рейтинг: 996

Kujivunia

Регистрация: 10.01.2015

Сообщения: 5505

Рейтинг: 996

ZipZap(D2) сказал(а):

красавчик CoolNut.png

Нажмите, чтобы раскрыть...

Эт про найденную ошибку, или про прогу? 

 

pdP1cvaNsbvczjQQW8d0SZImWYjNroduhQ6PUDozKSF921o5D6nzSYgHACPZOq6bMLxfGs_2QC6yyj3G9tFTNUukJ68

ZipZap(D2)

Пользователь

Регистрация: 10.05.2015

Сообщения: 5127

Рейтинг: 2648

ZipZap(D2)

Регистрация: 10.05.2015

Сообщения: 5127

Рейтинг: 2648

Kujivunia сказал(а):

Эт про найденную ошибку, или про прогу? 

 

pdP1cvaNsbvczjQQW8d0SZImWYjNroduhQ6PUDozKSF921o5D6nzSYgHACPZOq6bMLxfGs_2QC6yyj3G9tFTNUukJ68

Нажмите, чтобы раскрыть...

про прогу PepeSprint.gif?1592102756

HiThere

Пользователь

Регистрация: 24.06.2016

Сообщения: 3470

Рейтинг: 2602

HiThere

Регистрация: 24.06.2016

Сообщения: 3470

Рейтинг: 2602

ну че сказать, респект таким парнямCoolNut.png

Kujivunia

Пользователь

Регистрация: 10.01.2015

Сообщения: 5505

Рейтинг: 996

Kujivunia

Регистрация: 10.01.2015

Сообщения: 5505

Рейтинг: 996

Браузер через этот фильтр выглядит как инопланетная голограмма-панель из голливудских фильмов

1.png