freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-09 10:10 am

Общее • Re: UI в отдельном потоке

Posted by stikriz11

sts писал(а):
когда вы запускаете обработчик в отдельном потоке вам все равно надо учесть что пока он не отработает,

Пока от отрабатывает с мордой аплиухи можно делать все сто угодно. Лочить надо ограниченное количество контролов. Как правило кнопку, которая запускает наш поток. А когда он закончит работу, надо вызвать синхронизе - вся морда встанет, отдать результат основному потоку из нитки. Это делается так. Это очень простая и логичная схема. Зачем делать по другому? Даже философски если рассуждать, то основной поток в нашем мире и тут же сидит макрообъект - человек. А параллельные нитки квантовой механики запускаются в параллельном мире, и пока оно там живет, нет никакой возможности понять что происходит в волновой функции... И только квантовая запутанность позволяет нам вернуть результат в наш мир, но с уничтожением параллельной нитки. Все логично же. :shock:

Добавлено спустя 7 минут 21 секунду:
stikriz11 писал(а):
ну и спец кнопка прервать

В цикле потока проверять переменную через мьютекс. Именно для этого оно и придумано.

Добавлено спустя 32 минуты 26 секунд:
Нитки надо хранить либо в списке, либо в ссылке. Потому, что если пользователь захочет закрыть аплиуху, вы должны им сделать либа вайт фо и не закрывать, либо терминате и вайт фо. Так что, все равно где-то придется проверять, мол, не пора ли остановиться.

Статистика: Добавлено stikriz11 — 09.09.2025 10:10:03


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-08 07:48 pm

Потрепаться • Re: Ошибка Windows 11 начала ломать SSD

Posted by Alex2013

А я тут недавно проверил на читаемость 3.5" дискет записанных в мохнатых 90-х ( через USB привод ) к моему удивлению процент "выживших" за последние 5-10 лет не изменился ни на байт ( особенно живучи те что обработаны программой оптимизации reform ) .

В общем вывод прост не храните на флешках вообще НИЧЕГО (юзать чисто для переноса и услуги в качестве талисмана "вдруг понадобится"). Исключения бывают например есть у меня a-data 8gb неизвестно какого года работает как часы ни разу "не заряжал" (много лет хранил на ней демки утилиты и мелкие игры от Sony PS/2 и там-же кстати расформировал(возможно дело в этом?)) - но доверять им себе дороже хотя память в телефонах и планшетах довольно живуча.
Зы
А еще "в дикой природе" существует довольно много фирменных утилит восстановления и анализа флешь накопителей но честно говоря помогают они довольно редко

Статистика: Добавлено Alex2013 — 08.09.2025 19:48:46


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-08 06:34 pm

Общее • Re: UI в отдельном потоке

Posted by sts

stikriz11 писал(а):
Вы ставите телегу перед лошадью, по моему.

тут речь о том чтобы UI компоненты поддерживали многопоточность а какой поток главный вторично, когда вы запускаете обработчик в отдельном потоке вам все равно надо учесть что пока он не отработает, другие "кнопки" должны дождаться его завершения, например, соединение с бд одно (ну и спец кнопка прервать), в итоге имеем кучу ручных проверок, а надо чтоб само работало, в силу архитектуры

Статистика: Добавлено sts — 08.09.2025 18:34:15


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-08 03:02 pm

RxLib • Re: Фильтр в RxDBGrid

Posted by alexs

Надо сделать. Вопрос здравый

Статистика: Добавлено alexs — 08.09.2025 15:02:34


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-08 02:20 pm

Общее • Re: UI в отдельном потоке

Posted by stikriz11

Вы ставите телегу перед лошадью, по моему. ГУИ должна работать в потоке приложения, а свои обработчики делайте в отдельных нитках - так правильно. По крайней мере для офисных программ. Ну, а если вы игроделы, то нафига вам вообще окна и гуи?

Статистика: Добавлено stikriz11 — 08.09.2025 14:20:07


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-08 11:11 am

Общее • Re: UI в отдельном потоке

Posted by sts

WAYFARER писал(а):
Подозреваю что нет.

проблеме, а точнее задаче более 20 лет, зря разработчики так плотно сфокусировались на VCL, есть в ней ряд фундаментальных недостатков, да они нормальны для первых версий делфы, а вот потом надо было переработать.
WAYFARER писал(а):
Получается наоборот.

я под основным потоком имею ввиду APP поток в котором запускается функция MAIN. нужно чтобы в нем работала логика программы, как и сейчас, а вот для форм запускался отдельный UI поток, который является основным для UI компонент и в нем они создаются. DB компоненты работают APP потоке а визуализация в подбрасывается в UI поток.
Я делал прототип такого приложения в делфе, для этого надо разделить UI контрол на две части, первая доступна из APP потока, вторая из UI потока,в LCL разделение уже сделано, надо UI поток добавить

Статистика: Добавлено sts — 08.09.2025 11:11:31


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-08 12:42 am

Потрепаться • Re: Ошибка Windows 11 начала ломать SSD

Posted by Сквозняк

RRYTY писал(а):
Вот бы воспроизводимо подтвердить. Скажем, в трех случаях с погрешностью не более (пусть будет много, для наглядности эксперимента) 10%. Берем три одинаковых флэшки, пишем, кладем рядом. Сколько ждать самостирания?


Мне подтверждение не нужно, уже сам с таким сталкивался и переход дешёвых сандисковых флешек (чёрные пластиковые усб2) в режим "только чтение", из которого даже спецутилитой не вытащить, только день зря тратится, наблюдал. Стираешь большое количество файлов или пытаешься обновить гит и всё - записать потом ничего нельзя.

В последний раз прикол с самостиранием случился недавно с флешкой микродрайв усб2 64 гб, с алика, пришла летом прошлого года:
Изображение

Multifunctional OTG Usb Flash Drive type c 32gb Pen drive 64gb 128gb флешка mobile phone usb 2.0 flash memory stick pendrive похожие на эти
https://www.aliexpress.com/item/1005006 ... in_prod%3A
только дешевле.

На одной из флешек хранил драйвера, клипы, музон и файлы, которые с компа на комп перекидывал. Знал про прикол с самостиранием, уже его проходил, но не уследил. Недавно стал с флешки в виртуалку драйвер устанавливать, а он копируется паталогически медленно, а потом при установке ошибку кидает. Нашёл на жёстком диске копию этого же драйвера, залил на флешку и нормально его установил. И оказалось что куча видео уже битая, а прошло меньше года с момента его заливки - иногда флеху подзаряжал, но график не вёл, потому не могу сказать когда случилось "чудо".

Алиса конечно чудит и не ищет то, что находила несколько месяцев назад. Но у меня ходы записаны:

Скорость потери данных на флеш-памяти зависит от типа накопителя и условий хранения:

SLC-память (Single Level Cell) сохраняет данные несколько десятков лет без питания.
MLC-память — несколько лет.
TLC-память — около полугода.
QLC-память — несколько недель.

iphones.ru
Эти сроки указаны для накопителей, которые не используются активно. При активном использовании флеш-память теряет данные быстрее, так как ячейки постоянно перезаписываются. cyberforum.rudzen.ru
Также скорость потери данных зависит от температуры: чем выше температура, тем быстрее идёт процесс. Например, при высокой температуре данные на изношенных накопителях могут храниться всего пару недель. iphones.ru
Важно учитывать, что заявленные сроки хранения данных могут варьироваться в зависимости от модели флеш-памяти и условий эксплуатации. Реальные показатели известны только производителю, а все тесты и замеры проводятся исключительно в рабочих режимах.


Ещё можно прочитать статью на швабре - https://habr.com/ru/articles/512886/
Code:
Можете смеяться, но я видел своими глазами, как разработчики флешек именно «заряжали» свои изделия, устанавливая их в зарядники на некоторое время!



Нельзя оставлять данные лежать долго в одиночестве в NAND-flash памяти, за ними надо ухаживать. А именно — периодически перезаписывать. Правильный контроллер производит периодически перечитывание данных, контроль числа битовых ошибок и перезапись данных в случае необходимости (пока число битовых ошибок не превысило допустимое). Разумеется, для этого также контроллеру необходимо «свободное время».


А сколько времени нужно чтобы обслуживать 64Гб на усб2, когда там случились какие-то проблемы - тайна великая, но точно ясно, что времени когда что-то мимоходом записывается и читается, не хватает.

Статистика: Добавлено Сквозняк — 08.09.2025 00:42:22


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-07 08:08 pm

Общее • Re: UI в отдельном потоке

Posted by WAYFARER

Подозреваю что нет. И тут скорее дело даже не в LCL, а в библиотеках виджетов. Что в windows все окна, формы и контролы WinAPI обязаны жить в том потоке, где находится message loop. Этот цикл сообщений существует только в одном потоке. Что в GTK, все вызовы GTK должны выполняться СТРОГО из главного потока.
В общем все визуальные компоненты и события живут только в главном GUI-потоке и никак иначе. Это фундаментальное нерушимое правило)))
Разве что Qt допускает несколько потоков, но виджеты жёстко привязаны к потоку где они были созданы. То есть у каждого окна есть “свой” event loop, и обращаться к нему из других потоков запрещено, так что вряд ли это тебе поможет.

Добавлено спустя 11 минут 4 секунды:
sts писал(а):
т.е. чтобы OnClick работал в основном потоке а формы рисовались в отдельном и соответственно нажатие кнопки в потоке UI пробрасывало вызов OnClick в основной.
аналогично DB компоненты работают в основном а дбгрид в UI

Получается наоборот. DB компоненты выносить в рабочие потоки. Ну или если нужна полная изоляция, то дели на два процесса (грубо говоря клиент-сервер).

Статистика: Добавлено WAYFARER — 07.09.2025 20:08:52


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-07 07:14 pm

Потрепаться • Re: Ошибка Windows 11 начала ломать SSD

Posted by WAYFARER

Снег Север писал(а):
У меня на винде другая проблема, которую я не могу решить уже давно - с какого-то момента перестают распознаваться и подключатся флешки по USB. Причем и сама флешка и разъём USB в полном порядке. Флешка распознаётся и читается без проблем на стареньком ноуте с линухом, другие устройства USB в том же разъёме тоже распознаются. Одну из самых нужных флешек удалось подключить, пошаманив в административных функциях устройств.

Подозреваю что удаление всех устройств в диспетчере в разделах "Контроллеры USB" и "Запоминающие устройства USB" с последующей перезагрузкой уже опробовано, потому остается один вариант.
Удали целиком ветку HKEY_LOCAL_MACHINESYSTEMCurrentControlSetEnumUSBSTOR , это должно помочь
И можно на всякий случай проверить службу USBSTOR (HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesUSBSTOR, параметр start должен быть равен 3)

Дело в том, что в USBSTOR хранятся устаревшие или повреждённые привязки к драйверам, и Windows продолжает пытаться использовать их, вместо того чтобы создать новые.
Для каждой флешки создаётся папка в реестре в которой хранится информация для Plug&Play (какой драйвер назначен, какой том создать, какая буква диска и многое другое).
Это очень хрупкая система которая при активном использовании накопителей выходит из строя через какое то время.
А в "позорном линухе" принцип иной. В системе не хранится "паспорт" с данными флешки, при подключении устройство регистрируется каждый раз заново.

PS. PnP в Windows на мой взгляд немножко застрял в 90х годах в своем развитии, в идее постоянного хранения истории устройств. Нафига запоминать кучу ненужно информации и захламлять реестр, если для тех же флешек используется ОДИН ЕДИНСТВЕННЫЙ универсальный драйвер, а аппаратные конфликты практически невозможны? Ради удобного администрирования платить стабильностью глупо. Да и при динамической модели все это легко реализуется (например udev правилами в Linux)

Статистика: Добавлено WAYFARER — 07.09.2025 19:14:09


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-07 05:47 pm

Потрепаться • Re: Ошибка Windows 11 начала ломать SSD

Posted by RRYTY

Сквозняк писал(а):
... Скорость самостирания данных зависит от типа памяти, температуры при записи и температуры при хранении. ...


Вот бы воспроизводимо подтвердить. Скажем, в трех случаях с погрешностью не более (пусть будет много, для наглядности эксперимента) 10%. Берем три одинаковых флэшки, пишем, кладем рядом. Сколько ждать самостирания?

Статистика: Добавлено RRYTY — 07.09.2025 17:47:07


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-06 07:05 pm

Потрепаться • Re: Ошибка Windows 11 начала ломать SSD

Posted by Сквозняк

Снег Север писал(а):
Не понимаю, зачем люди публично несут заведомый бред???


Понимать, это не ваша специализация. Многим хватает копирования мыслей авторитетов, вот когда они на эту тему выскажутся, внезапно "поймёте".

Статистика: Добавлено Сквозняк — 06.09.2025 19:05:49


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-06 07:26 am

Потрепаться • Re: Ошибка Windows 11 начала ломать SSD

Posted by Снег Север

Сквозняк писал(а):
вдруг включен режим только для чтения.

Не понимаю, зачем люди публично несут заведомый бред???

Статистика: Добавлено Снег Север — 06.09.2025 07:26:19


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-05 10:57 pm

Потрепаться • Re: Ошибка Windows 11 начала ломать SSD

Posted by Сквозняк

Снег Север писал(а):
От верблюда. Я же написал, что на нотбуке с позорным линухом те же флешки распознаются и читаются без проблем.


Ну да, если больной пришёл к доктору сам, то он здоров! Пусть заплатит за приём и идёт нафиг, не мешает людям работать. Замечательная логика :mrgreen:

А потом: проблем нет, проблем нет, вдруг включен режим только для чтения.

Статистика: Добавлено Сквозняк — 05.09.2025 22:57:16


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-05 06:36 pm

Общее • UI в отдельном потоке

Posted by sts

Существует ли вариант LCL или аналог работающий в отдельном потоке?
т.е. чтобы OnClick работал в основном потоке а формы рисовались в отдельном и соответственно нажатие кнопки в потоке UI пробрасывало вызов OnClick в основной.
аналогично DB компоненты работают в основном а дбгрид в UI

Статистика: Добавлено sts — 05.09.2025 18:36:09


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-05 06:53 am

Потрепаться • Re: Ошибка Windows 11 начала ломать SSD

Posted by Снег Север

Сквозняк писал(а):
Откуда известно, что флешки в порядке?

От верблюда. Я же написал, что на нотбуке с позорным линухом те же флешки распознаются и читаются без проблем.

Статистика: Добавлено Снег Север — 05.09.2025 06:53:56


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-05 05:05 am

Потрепаться • Re: Ошибка Windows 11 начала ломать SSD

Posted by Сквозняк

Откуда известно, что флешки в порядке? Флешки, это нудный хранитель данных. На них данные постоянно размываются диффузией и нужно регулярно их втыкать на много часов в гнездо с электричеством, чтобы контроллер подновил данные. Возможно, на твоих флешках уже есть критические повреждения информации, на которые линукс пока забивает, а винда на них натыкается и привет. Скорость самостирания данных зависит от типа памяти, температуры при записи и температуры при хранении. Но, поскольку неприятную информацию производители выкладывать не любят, для каждых флешек нужно узнавать частоту и длительность техработ опытным путём. А если флешек много, то подзаряжать их - просто звиздец. Желательно, чтобы кто-то выпустил компактный подзаряжатель на 10-20 флешек - подключил его к ИБП, воткнул вечером в него половину флешек, как иголки в ёжика, и пусть питаются до утра.
Но это ещё не вся беда. Контакты на флешках ненадёжные. Воткнёшь флешку на подзарядку, а контакт отойдёт, и техработы не проведутся в полном объёме.

Статистика: Добавлено Сквозняк — 05.09.2025 05:05:31


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-04 07:10 am

Free Pascal Compiler • Re: Компиляция под 32-бита из 64-битной системы

Posted by Сквозняк

Оказалась ложная тревога, компилятор древнего 32 битного лазаруса в древнем 64 битном линуксе, в виртуалке (в новом линуксе линковщик не тот, для него новый fpc нужен) нормально компилирует, несмотря на такие сообщения
Code:
/usr/bin/ld: warning: link.res contains output sections; did you forget -T?
/usr/bin/ld: skipping incompatible /usr/lib64/libpthread.so when searching for -lpthread
/usr/bin/ld: skipping incompatible /usr/lib64/libpthread.a when searching for -lpthread
/usr/bin/ld: skipping incompatible /usr/lib64/libdl.so when searching for -ldl
/usr/bin/ld: skipping incompatible /usr/lib64/libdl.a when searching for -ldl
/usr/bin/ld: skipping incompatible /usr/lib64/libX11.so when searching for -lX11
/usr/bin/ld: skipping incompatible /usr/lib64/libXrandr.so when searching for -lXrandr
/usr/bin/ld: skipping incompatible /usr/lib64/libGL.so when searching for -lGL
/usr/bin/ld: skipping incompatible /usr/lib64/libGLU.so when searching for -lGLU
/usr/bin/ld: skipping incompatible /usr/lib64/libm.so when searching for -lm
/usr/bin/ld: skipping incompatible /usr/lib64/libm.a when searching for -lm
/usr/bin/ld: skipping incompatible /usr/lib64/libz.so when searching for -lz
/usr/bin/ld: skipping incompatible /usr/lib64/libz.a when searching for -lz
/usr/bin/ld: skipping incompatible /usr/lib64/libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib64/libc.a when searching for -lc

Просто у меня линкуемые статичные 32 битные библиотеки побились за годы таскания по винтам, гитам и флешкам. Поставил вместо них такие же из другой заначки, и процесс пошёл.

Статистика: Добавлено Сквозняк — 04.09.2025 07:10:44


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-01 02:23 pm

Lazarus • Re: Ошибки нет в одной версии Lazarus, но есть в другой.

Posted by mike

Скорее всего в 2.2.6 или срабатывает какой-то лишний $IFDEF, или наоборот, не срабатывает нужный, в результате компилируется код, предназначенный для другой версии (или для Delphi).

Статистика: Добавлено mike — 01.09.2025 14:23:56


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-01 10:07 am

Lazarus • Re: Ошибка: не найден system.ppu.

Posted by jsa

На новом установленном Lazarus 4.2.0 проблема повторилась
Вот нашел как решил ее в прошлый раз https://bugzilla.altlinux.org/25991


NotHAM 2013-03-14 14:43:24 MSK

Эта ошибка будет актуальна и Лазарусе 1.0.6.
Обойти ее очень просто (по кр. мере у меня сработало).
1. Сначала, когда не находит system.ppu, проигнорировать и запустить IDE.
2. В запущеной IDE в меню "Сервис" кликнуть на пункте "Пересмотреть каталог
исходного кода FPC". После чего можно перезапустить Лазаря.

Никакой Check your fpc.cfg не требуется. Оно само всё прочекит. :)

У меня после проделанного ругань пропадала навсегда и в 1.0.4 и в 1.0.6.
И вообще это, похоже, микроскопический глючок, который ничему не
мешает.
Вполне достаточно отразить это в документации.
Как было в 0.9.30 - уже не помню.

Статистика: Добавлено jsa — 01.09.2025 10:07:57


freepascal.ru ([syndicated profile] freepascal_ru_feed) wrote2025-09-01 09:33 am

Lazarus • Re: аналог xmldoc.FormatXMLData существует?

Posted by jsa

sts писал(а):
https://forum.lazarus.freepascal.org/index.php?topic=22159.0

?

Спасибо посмотрю.

Статистика: Добавлено jsa — 01.09.2025 09:33:16