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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

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
kot3

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

Цитата:
В доках они пишут

Спасибо за ссылку почитал.
Получается прощай FastMM4. А так его хвалили и пиарили.
Более того, теперь для Win64x нет возможности заменить менеджер памяти.
А я пытался это делать и не мог понять почему не получалось.

Всего записей: 444 | Зарегистр. 15-12-2005 | Отправлено: 12:46 23-01-2025 | Исправлено: kot3, 13:01 23-01-2025
kaz_av

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

Цитата:
Подскажите, чем заменили модуль winapi.icmp в Rad Studio 12.2?

Такого модуля в Delphi не было.

Всего записей: 461 | Зарегистр. 15-02-2006 | Отправлено: 12:50 23-01-2025
Tulnov



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

Цитата:
чем заменили модуль winapi.icmp в Rad Studio 12.2?

Все вызовы из icmp.dll есть в Winapi.Winsock2

Всего записей: 804 | Зарегистр. 15-05-2003 | Отправлено: 15:08 24-01-2025
RUBOP



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

Цитата:
Все вызовы из icmp.dll есть в Winapi.Winsock2

Большое спасибо за информацию. А то всю жизнь сидел на 7 версии, а тут решил перейти на самую свежую версию и столкнулся с кучей проблем)

Всего записей: 94 | Зарегистр. 13-02-2008 | Отправлено: 07:06 27-01-2025
Sulphide

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа, такая грабля. У приложения иконка только в 32битах соответственно размеры все вплоть до 256х256. В эксплорере иконка екзешника отображается, в тоталкмд иконка отображается. Запускаю приложение - в таскбаре отображается дефолтная иконка екзешника как если бы у него не было иконок. Перезапускаю процесс эксплорера, иконка запущенного приложения отображается корректно в таскбаре. Закрываю приложение, запускаю заново. И все по кругу. Иконки родной нет. В чем может быть проблема?

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

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide
Попробуй Win+R, ie4uinit.exe -ClearIconCache

Всего записей: 461 | Зарегистр. 15-02-2006 | Отправлено: 11:08 01-02-2025
Sulphide

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kaz_av
Всё так же без изменений, проверил еще и на соседнем компе.. Там не совсем нет иконки, иконка как у екзешника, у которого нет своих иконок. Ну типа какое-то приложение с контролами.

Всего записей: 294 | Зарегистр. 20-03-2008 | Отправлено: 22:17 02-02-2025 | Исправлено: Sulphide, 21:56 04-02-2025
persicum

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Какая щас есть проверенная либа в виде юнита (возможно с DLL) для сырого чтения накопителя по USB?

Всего записей: 639 | Зарегистр. 27-06-2007 | Отправлено: 00:59 08-02-2025
stanzdor



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
persicum, а эта разве не работает?
https://github.com/ZYHPRO/Delphi-libusb

Всего записей: 606 | Зарегистр. 12-04-2004 | Отправлено: 21:40 09-02-2025
persicum

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нарвался на такую траблу:
FreeMem(a) иногда не отрабатывает сиюминутное освобождение памяти, команда исполняется, а память доступная процессу реально не возвращается. В результате естественно последующий код, который думает, что памяти полно, вываливается изза ее нехватки. Как заставить FreeMem освобождать память наверняка?  
 
Пока придумал такое шаманство.  
FreeMem(a);
FreeMem(b), где b это указатель на память, которая тоже уже больше не нужна, но срочности освобождения не имела.
Видимо, диспетчер памяти или как он там называется, рассуждает, раз пошла такая пьянка, то чего там b, можно и а.
 
Вот думаю, толи код у меня кривой и подпортил рантайм дельфи, толи это дельфи так "заботится", жалеет память возвращать.
 

Всего записей: 639 | Зарегистр. 27-06-2007 | Отправлено: 19:56 25-02-2025
zedxxx

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

Цитата:
жалеет память возвращать

Не жалеет, а оптимизирует доступ к памяти. Обычно это имеет смысл, но если вам вдруг это мешает, можете обращаться напрямую к WinAPI: Heap Functions

Всего записей: 1587 | Зарегистр. 14-07-2008 | Отправлено: 20:43 25-02-2025 | Исправлено: zedxxx, 20:45 25-02-2025
BugDigger



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
persicum
Внутри у него 3 типа блоков: мелкие, средние и большие (размеры были в документации). "Большие" вроде по логике должен освобождать немедленно, остальные придерживает для будущего распределения (чтобы не нырять каждый раз в API, что долго), пока сумма придержанного ниже некоторого порога или просто число отложенных операций ниже порога (точно не знаю). Когда вы освобождаете 2 раза подряд, пороги, наверное, превышаются, и делается освобождение.
 
Выпадать из-за нехватки памяти может не только из-за реальной нехватки, но и из-за фрагментации памяти, когда много мелких блоков отводятся и потом в случайном порядке освобождаются. В результате в сумме есть много свободной памяти, но она оказывается в виде мелких участков между занятыми. И когда вы пытаетесь выделить блок заметных размеров, можете получить отказ. Разные менеджеры памяти борются с этим с разной степенью успешности, FastMM в этом смысле вроде вполне на уровне. Когда вы освобождаете 2 смежных блока, образуется бОльшая свободная дырка, в которую может влезть очередной запрошенный блок.
 
Есть еще одна засада с большими bmp (на 32 битах, на 64 я не работаю и потому не знаю) с PixelFormat=pfDevice, т.е. по умолчанию. Тут вступают в действие достаточно жесткие ограничения видеокарты (или драйвера, хз). И, между прочим, "безобидные" bmp.SaveToFile/LoadFromFile используют внутри себя pfDevice...

Всего записей: 189 | Зарегистр. 14-06-2007 | Отправлено: 07:40 26-02-2025
asutp2

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

Цитата:
FreeMem(a) иногда не отрабатывает сиюминутное освобождение памяти, команда исполняется, а память доступная процессу реально не возвращается. В результате естественно последующий код, который думает, что памяти полно, вываливается изза ее нехватки.
Чувак, ты точно программист?)))





А если без оскорблений?

Всего записей: 820 | Зарегистр. 22-10-2004 | Отправлено: 00:41 27-02-2025 | Исправлено: asutp2, 10:56 01-03-2025
stanzdor



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
недавно на ютубе смотрел дебаты метров: хорошо или плохо FreeAndNil
_https://www.youtube.com/watch?v=w5UbeWup_lg
если у них уже разные мнения ..

Всего записей: 606 | Зарегистр. 12-04-2004 | Отправлено: 18:24 27-02-2025
BugDigger



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Старые препирательства (им лет 20, не меньше) остроконечников с тупоконечниками.
 
Нет ничего "плохого" или "хорошего", есть адекватное потребности и неадекватное. Я, например, иногда использую goto, где это нужно, и сплю спокойно, без кошмаров по этому поводу.
 
А уж если принять во внимание, что дельфевая объектная модель просто основана на том, что различаются присвоенные и неприсвоенные указатели, такие как поля класса, обработчики событий и т.п. (не зря для нового объекта автоматически обнуляется выделенная для него память) и rtl полна вызовов freeandnil или его эквивалентов), то "дискуссия" приобретает оттенок разговора шизофреников.

Всего записей: 189 | Зарегистр. 14-06-2007 | Отправлено: 07:16 28-02-2025
persicum

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
asutp2
Программист Matlab/Mathematica). Если бы в этих средах Clear a или Clear all работали бы через раз, что бы сказали пользователи? Утечки памяти в Дельфи "по вине" отложенного исполнения freemem для меня в диковинку, ибо 1000 раз все было хорошо, а на 1001 начались вылеты. Понятно, виновата фрагментация. Сначала были большие блоки, потом между ними спрятались маленькие блоки. Freemem не схотел отдавать маленькие блоки. Потом пошли средние блоки, они легли на свежие страницы. Примерно так. И память закончилась.
Всетаки Дельфи среда быстрой разработки, я не привык использовать всякие winapi которые не обернуты в паскальные функции. Со строками в дельфи хорошо на автомате, это не нолики ловить в конце строк. А тут менеджер памяти провоцирует: заберите себе всю память сколько нужно у операционной системы и не отдавайте ее до самого конца. Но это же неудобно.

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

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

Цитата:
Утечки памяти в Дельфи "по вине" отложенного исполнения freemem для меня в диковинку

Нет никакого отложенного исполнения FreeMem. Есть особенности работы менеджера памяти (у любого ММ они есть, и у системного тоже), который использует пулы (если речь о Delphi 2006 и выше), именно для того, чтобы избежать фрагментирования. Не знаю, о какой версии Delphi идет речь, но до Delphi XE7 в комплекте была демка Usage Tracker, где наглядно было представлено состояние ММ, его пулы и их использование. Выглядело это примерно так:
   
 
Подключив модуль из этой демки к своему приложению можно понаблюдать, что происходит с менеджером и адресным пространством процесса.
 

Цитата:
Всетаки Дельфи среда быстрой разработки, я не привык использовать всякие winapi которые не обернуты в паскальные функции.

Есть несколько альтернативных ММ для Delphi (гуглинг, гитхабинг), можно поэкспериментировать. Либо, можно сменить разрядность приложения на 64-битную и забыть о фрагментации.

Всего записей: 461 | Зарегистр. 15-02-2006 | Отправлено: 18:49 04-03-2025
BugDigger



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для 32-битных программ на Win64 есть еще способ улучшить ситуацию с памятью: в опциях линкера проставить флаг -GF:LARGEADDRESSAWARE, что даст доступ к старшим (без малого) 2 Гб памяти, которую в Win32 занимает система.

Всего записей: 189 | Зарегистр. 14-06-2007 | Отправлено: 07:48 05-03-2025
kot3

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите в чем может быть прикол.
Пытаюсь установить terminate handler function в простейшем консольном приложении (С++):

Код:
 
#include <iostream>
#include <tchar.h>
#include <windows.h>
 
//---------------------------------------------------------------------------
void terminate(void) {
  std::cout << L"terminate" << std::endl;
  Beep(400, 200);
}
 
//---------------------------------------------------------------------------
int _tmain(int argc, _TCHAR* argv[])
{
  std::terminate_handler before = std::get_terminate();
  std::set_terminate(terminate);
  std::terminate_handler after = std::get_terminate();
  *((int*)0x73) = 0;
  system("pause");
}
 

 
Адрес старого обработчика заменяется моим, но мой обработчик явно не вызывается - на пару секунд появляется консольное окно и закрывается.
 
Попробовал этот же код в Dev-Cpp картина похожая, только окно не закрывается, а пишет что программа завершилась с кодом 3221225477 (0xc0000005).
 
Может быть кто сталкивался с этим? Подскажите в чем собака зарыта?

Всего записей: 444 | Зарегистр. 15-12-2005 | Отправлено: 07:00 07-03-2025
BugDigger



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kot3
Никогда не пользовал, поэтому первые попавшиеся мысли.
 
Использовать std в terminate, возможно, не очень правильная идея.
 
Beep вроде работает со древним динамиком, каковой в современном компе зачастую отсутствует.
 
Вы используете std-версии, попробуйте из стандартной rtl (то же самое, но без std:: ).
 
Попробуйте с разными компиляторами (классический 32, новые 32/64), там у них периодически вылазят всякие недоделки, связанные с исключениями.
 
А что отладчик говорит? Можно попробовать посмотреть и на уровне CPU.
 
 
 
 

Всего записей: 189 | Зарегистр. 14-06-2007 | Отправлено: 08:00 07-03-2025 | Исправлено: BugDigger, 08:06 07-03-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

Компьютерный форум 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