Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Embarcadero RAD Studio

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333

Открыть новую тему     Написать ответ в эту тему

V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
         
Обсуждаем новые возможности и баги
 
Просьба писать про Embarcadero RAD Studio XE5, XE6, XE7, XE8, 10.x (Seattle, Berlin,Tokyo)
  По вопросам скачивания - Тема в Варезнике (lite-версии тут)
  Вопросы по неюникодным версиям Delphi — шестая бумага
  Бесплатные Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus
  Коммерческие компоненты и утилиты для Delphi/BCB
  Вопросы по компонентам для Delphi, C++ Builder разных версий
  Новые языковые возможности, начиная с Delphi 2005 по XE4 — здесь, и New!здесь еще
  Англоязычный официальный форум Embarcadero — здесь
  Embarcadero Quality Central, веб интерфейс — здесь, новый Quality Portal тут
  Программирование на Delphi — викиверситет
  Другие ресурсы
   Предыдущие бумаги
 
     Вопросы ..XE4       Вопросы ..XE3    Вопросы ..XE2      
  Вопросы ..2009-XE    Вопросы ..<2009 / ч.5    Вопросы ..<2009 / ч.4      
  Вопросы ..<2009 / ч.3    Вопросы ..Delphi 2 / ч.2    Вопросы ..Delphi  

  Выключение встроенного эксперта Castalia  для XE8 (иногда помогает при вылетах и тормозах)  
  Полезные плагины(эксперты)

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 15:25 11-09-2013 | Исправлено: Komandor, 15:49 31-03-2024
BugDigger



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide
Может что-то с параллельной компиляцией?..

Всего записей: 190 | Зарегистр. 14-06-2007 | Отправлено: 07:12 25-03-2025
VadimShvarts

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
All
D12 Distiller (version 49)
Обновление XE Distiller для Delphi 12.3 Athens
 
Исходники (Build 49),  
исполняемый модуль (Build 49)

Всего записей: 82 | Зарегистр. 03-11-2006 | Отправлено: 13:45 26-03-2025
Sulphide

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа как по человечески добавить в екзешник дополнительные иконки помимо MAINICON при компиляции разумеется?
Если просто закинуть в проект, то он создает RC файлик где четко указаны эти иконки, но в новый RES файл их не добавляет, соответственно они не попадают в екзешник.
Если создать отдельный RES файл со своими иконками, то эта скотина все делает хорошо, НО он меняет местами самые последние по индексу иконки у MAINICON и идущей за ней MAINICON2 условной))) MAINIСON3 не страдает, я заколебался с ним воевать...
Смысл такой - MAINICON должна быть первой, все ок, в ней 9 иконок разных размеров от 16 до 256, с индекасами от 1го до 9ти, при компиляции она попадает в пересоздаваемый RES файл и далее в екзе.
Дополнительно созданный мной RES файл содержит 2 набора иконок и тоже по 9 штук в наборе, с такими же размерами.
 
В dpr файле после
{$R *.res}
добавляю  
{$R дополнительно.res}
 
в екзешнике я получаю MAINICON с индексом 9 (256х256) замененную на иконку из первого набора дополнительных у которой индекс должен быть 18 (256х256), а на месте 18го индекса оказывается иконка приложения MAINICON у которой должен быть индекс 9. Индексы считаются с единички. Второй дополнительный набор иконок никак при этом не страдает, он в целости и сохранности (в екзешнике он третий по счету).
Пока добавил в доп наборы первой в списке копию набора иконок MAINICON. Пусть меняет правильную на правильную)) но это такой себе вариант, потому что при ассоциации файлов открываемых приложением надо будет учитывать что индекс набора 1 - это временный набор и придется прописывать индексы наборов 2 или 3. нулевой набор - это набор иконок самого приложения.
 

Всего записей: 294 | Зарегистр. 20-03-2008 | Отправлено: 17:33 27-03-2025 | Исправлено: Sulphide, 17:45 27-03-2025
madnomad

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide, не поручусь, что верно понял, как именно у Вас сделано.
Поделюсь просто тем, как у меня это работает. Може быть, чем-то поможет. Я когда-то шибко попарил мозги, пока получил желаемый результат.
Важное замечание: такую мульку я делал только в старом проекте на Delphi 2007. Возможно, в более новых версиях поведение иное, в них я такими фокусами не занимался.
 
Файл ресурсов лежит рядом с dpr-файлом приложения "MyProg.dpr" и называется "MyProgRes.rc".
Я к сожалению, уже не помню историю, почему файл назван не точно так же, как проект. Подозреваю, что это сделано для того, чтобы его не затирало стандартным файлом в каких-то ситуациях.
 
В самом начале "MyProgRes.rc" вот такое:

Код:
// Name                 Type    Filename
APPICON1                ICON    "Res\Main.ico"
APPICON2                ICON    "Res\Main2.ico"
APPICON3                ICON    "Res\Main3.ico"

 
Если я верно помню то давнее исследование, в качестве иконки приложения всегда берётся та, которая имеет самое первое по алфавиту название ресурса. Нигде явно в коде это вручную не указывается.
 
В самом начале "MyProg.dpr" прописано так:

Код:
program MyProg;
 
{$R 'MyProgRes.res' 'MyProgRes.rc'}

 
Ниже, под секцией uses, есть и стандартная строка  

Код:
{$R *.res}

 
Дальше в dpr там ещё есть, кстати, установка при некоторых условиях альтернативной иконки приложения через  

Код:
Application.Icon.LoadFromResourceName(HInstance, 'APPICON2');

 
Совсем не факт, что мой вариант корректен и оптимален, но он работает.
 
 

Всего записей: 62 | Зарегистр. 25-01-2007 | Отправлено: 19:39 28-03-2025 | Исправлено: madnomad, 19:44 28-03-2025
Sulphide

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Заметил такое, кинул на форму Image1, на старте создал в нем Bitmap, он создался как DDB!!! Раньше всегда был DIB. И хотя написано что DDB работает быстрее, в моей тестовой проге где есть ReadPixel, SetPixel именно DDB работает в 2 раза медленнее DIB. Ваял функцию для рисования antialiased линий произвольной толщины. Сейчас переписываю на прямую запись через ScanLine и вот заметил такое поведение.
Пришлось пока прописать так от греха подальше))
    Image1.Picture.Bitmap.Create(Image1.Width, Image1.Height);
    Image1.Picture.Bitmap.HandleType := TBitmapHandleType.bmDIB;
 
тогда создает pf32bit как обычно, а не pfDevice.
 
Добавлено:
madnomad
Всё вроде разобрался, твой пост прям натолкнул на верный путь. Спасибо!
Короче, у меня в dpr вначале стоит
{$R *.dres}
 
Куда компилятор видимо складывает доп.ресурсы.
 
Этот файл дельфя сама пересоздает при компиляции и видимо сама и прописывает в dpr, если нет то просто надо ручками добавить...
А сами дополнительные наборы иконок тупо закидываются в проект (окошко с pas/dfm/inc файлами - инспектор проекта) и только при наличии в этом окошке файлов типа ICO и других, помеченных как ресурсы, дельфя создает каждый раз при сборке автоматически RC файлик в корне проекта! И после того как закинул в инспектор проекта иконки на них можно тыкнуть в списке и тут же в другом окошке Object Inspector'a можно переименовать Resource Identifier на нужный, чтобы шел по алфавиту за MAINICON, а то студия по умолчанию именует их Icon_1.. 2.. и т.д. Сам RC файл в проект прописывать не надо, должен быть только *.dres и *.res
 
Теперь убрал свой дополнительный res файл со своими иконками, закинул их в инспектор проекта, в объектном инспекторе задал им resource_id с нужным именем и все иконки включая MAIN нормально запихиваются в екзе, MAINICON уже в настройках проекта задается как обычно. Так же соответственно можно и другие всякие штуки пихать в ресурсы через инспектор. Просто поменять тип и ресурс ID.

Всего записей: 294 | Зарегистр. 20-03-2008 | Отправлено: 21:29 28-03-2025 | Исправлено: Sulphide, 23:54 28-03-2025
persicum

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А для чего Дельфи 7/2007 (а может и другие версии) кладет 7 в дос-заглушку? Типа This program must be run under Win32 0D 0A $ 7? PE идет гораздо позже, с 100.

Всего записей: 639 | Зарегистр. 27-06-2007 | Отправлено: 23:35 28-03-2025
Sulphide

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А еще странная фигня, в итоге я дописал функцию рисования сглаженных линий с блендингом и дебаг версия рисует линию в 5 раз быстрее чем релиз версия.. это как вообще?))) Кому не сложно под катом потестите плиз у себя на 12.3 (на форме TImage, кнопка и 2 статик текста, желательно в полный экран тестить чтобы линии максимально длинные были)
 
зы в 32битах все ок - релиз версия слегка быстрее дебаг версии, в 64 все плохо - дебаг версия быстрее релиза раз в 5)
зыы если в релизе отключить оптимизации, то все ок становится, скорость как у дебаг версии... мда... одно лечим, другое калечим..
 
 
 
Добавлено:
persicum
у 12.3 так же

Всего записей: 294 | Зарегистр. 20-03-2008 | Отправлено: 00:25 29-03-2025 | Исправлено: Sulphide, 09:48 29-03-2025
persicum

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide
Я правильно понимаю, что эта 7 просто мусор, строка кончается на $? Или она нужна?

Всего записей: 639 | Зарегистр. 27-06-2007 | Отправлено: 10:19 29-03-2025
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
persicum
Строка заканчивается на $:
http://www.codenet.ru/progr/dos/dos_0017.html
Но дальше данные вполне могут использоваться виндовой частью. PE-заголовок начинается со смещения, e_lfanew (LONF 03Ch). Между $ и PE-хидером часто какие-то данные есть в стабах.

Всего записей: 13291 | Зарегистр. 11-03-2002 | Отправлено: 11:52 29-03-2025 | Исправлено: Pasha_ZZZ, 11:52 29-03-2025
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide
У меня такой же результат как и у вас на D11. Но на самом деле, если бы мне нужны были красивые линии, то я бы использовал TDirect2DCanvas или вообще Skia4Delphi.

Всего записей: 2323 | Зарегистр. 24-05-2007 | Отправлено: 00:24 30-03-2025
Sulphide

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins
У меня OGL приложение с виндовым интерфейсом и не хочется пихать в достаточно простой контрол целый графический апи, который по факту будет дико мешать основному  
Но по поводу линий - это какой-то дикий баг либо ртл либо компилятора, такого быть не должно, если не влом, кто хочет может закинуть им репорт...

Всего записей: 294 | Зарегистр. 20-03-2008 | Отправлено: 01:54 30-03-2025 | Исправлено: Sulphide, 02:07 30-03-2025
persicum

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ
Я нашел немного другое. Между $ и PE располагается недокументированная зона метаданных, Rich header. Там компиляторы, а может линкеры, оставляют свои пометки. Много пишет туда Visual Studio, шифруя XORом. Эти данные не использует ни досовская, ни виндусовская часть, можно смело затирать нулями или чем угодно. Особенно озадачены этой областью различные вредоносописатели.

Всего записей: 639 | Зарегистр. 27-06-2007 | Отправлено: 15:25 30-03-2025
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
persicum
Так этот стаб вместе с заголовком можно заменить на что-то свое собственное вообще. Понятно, что это ни на что влиять не будет.
Даже вот этой тулзой, например, можно заменить стаб на свой или встроенный (сверхмаленький).

Всего записей: 13291 | Зарегистр. 11-03-2002 | Отправлено: 15:59 30-03-2025
BugDigger



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide

Цитата:
кинул на форму Image1, на старте создал в нем Bitmap, он создался как DDB!!! Раньше всегда был DIB.

 
Умм... Не знаю, как "раньше" (я на 2007 сижу), но по умолчанию TBitmap имеет PixelFormat=pfDevice, что плохо, например, для LoadFrom/SaveToFile больших bmp в памяти (с форматом pf24bit и т.п.), т.к. там создаются промежуточные bmp в DDB, которые драйвер видеокарты не в состоянии прожевать (исключение OutOfResourses из Graphics), пришлось клепать свои подпрограммы для прямой работы с файлами.

Всего записей: 190 | Зарегистр. 14-06-2007 | Отправлено: 07:06 31-03-2025
Sulphide

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BugDigger
Ну может я конечно слегка украсил ситуацию =) Но достаточно часто в VCL ранее домогался прямым доступом к битмапу через ScanLine, и всегда везде было pf32bit (хотя может я и сам его таким устанавливал=)) по умолчанию, еще думал а что за pfDevice и как его обрабатывать вообще?!... А тут прям сходу наткнулся на него. Естественно я даже не знаю в каком формате там данные хранятся и походу сами абракадабровцы не знают или знают, но молчат =) Ну по крайней мере SetPixel с ним точно крайне медленно работает.

Всего записей: 294 | Зарегистр. 20-03-2008 | Отправлено: 19:37 31-03-2025 | Исправлено: Sulphide, 19:43 31-03-2025
BugDigger



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide
DDB завязан на работу с видеокартой, соответственно там гораздо больше наворотов и неявных ограничений, например, объем DDB-данных, существующих в данный момент во всех программах в системе (!).
Остальные форматы работают чисто с памятью и только в вашем процессе, никаких особых ограничений при этом нет.
 
Первое утверждение несколько шокирует, не правда ли? Чтобы убедиться в его наличии (давно этого не делал, но думаю, что воз и ныне там), достаточно сделать простенькое VCL-приложение, где можно отводить DDB bmp желаемого размера (он, как мы знаем, по умолчанию DDB). Увеличиваете размер (шага в 1 Мб вполне достаточно), пока не появится исключение OutOfRes. Запоминаете объем данных, когда это случается (у меня было каких-то жалких 32 Мб), несколько снижаете и заводите (успешно) bmp. Затем запускаете второй экземпляр тестовой программки и начинаете отводить bmp, постепенно повышая его размер. Результат: исключение появится, когда сумма в обоих экземплярах программ превысит ранее запомненный вами доступный объем.
 
Такое ограничение выглядит, согласитесь, очень странно, и должно было бы приводить к постоянным крахам при запуске в параллель программ разных производителей. Поскольку этого мы не наблюдаем (?), можно предположить (чистая спекуляция), что DDB имеют некую глобальную метку, относящую его при создании к какому-то глобальному пулу, имеющему (на уровне драйвера) ограничение по размеру. VCL вполне может без задней мысли проставлять свою постоянную метку вместо того, чтобы генерировать новую в каждом новом экземпляре приложения. В таком случае есть шанс, что это уже исправлено (я сижу на 2007, как упоминал ранее), можете попробовать проверить для интереса в свежей студии.

Всего записей: 190 | Зарегистр. 14-06-2007 | Отправлено: 07:36 02-04-2025
Samotek

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
Затрахала одна вещь: при поиске сколько не отключай опцию "Entire scope", она все равно возвращается! Есть ли какое-то решение запретить ей воскрешать?

Всего записей: 2773 | Зарегистр. 18-05-2005 | Отправлено: 12:00 02-04-2025
Sulphide

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Но на самом деле, если бы мне нужны были красивые линии, то я бы использовал TDirect2DCanvas или вообще Skia4Delphi.

Ладно, запихнул GDI+ =)

Всего записей: 294 | Зарегистр. 20-03-2008 | Отправлено: 12:04 02-04-2025
persicum

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ламерские вопросики:
1) порядок исполнения цикла for настраивается? Обнаружил, что результат либо не соответствует ожиданиям об очередности, либо вообще неверный. Это изза того, что для экономии одного такта или одной командочки кода цикл исполняется от большего к меньшему.
 
2) хотел вставить absolute в описание типа, но это там не работает. Тогда понадобился довольно дурной и запутанный синтаксис вроде case byte of 0:() 1:(), а может case char of 'a': 'b': . Могу ошибаться, но примерно так. Непонятно, на что это вообще влияет? Зачем нужен тип в перечислении?

Всего записей: 639 | Зарегистр. 27-06-2007 | Отправлено: 20:48 02-04-2025 | Исправлено: persicum, 20:51 02-04-2025
relictus

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
persicum
Попросил ИИ тебе ответить, ибо самому влом писать
Ответы на вопросы

Всего записей: 3787 | Зарегистр. 19-04-2005 | Отправлено: 21:35 02-04-2025
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Embarcadero RAD Studio


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru