Евгений Корепов
Пользователи-
Постов
738 -
Зарегистрирован
-
Посещение
-
Победитель дней
101
Евгений Корепов стал победителем дня 15 октября
Евгений Корепов имел наиболее популярный контент!
Информация о Евгений Корепов
- День рождения 22 июля
Информация
-
Пол
Мужчина
-
Город
Ухта
Посетители профиля
23 077 просмотров профиля
Достижения Евгений Корепов
-
Sergey S отреагировал на сообщение в теме: Узнать IP адрес устройства без дополнительных разрешений
-
Vladimir Gaivoronsky отреагировал на ответ на вопрос: Ввод числа - самый простой способ фильтрации
-
AngryOwl отреагировал на ответ на вопрос: IdTCPClient, IdTCPServer и соеденение
-
Евгений Корепов отреагировал на ответ на вопрос: Создать класс с параметром и без
-
Tumaso отреагировал на ответ на вопрос: Компонент/библиотека для работы с bzip2
-
Добавлю - если у вас цель экономия трафика через мобильные сети, то вы можете использовать https://docwiki.embarcadero.com/Libraries/Sydney/en/System.ZLib.TZCompressionStream для сжатия данных перед передачей.
-
Вы ошибаетесь. TZipFile отлично работает с TStream и остальными TMemoryStream, TFileStream и т.д. Вот пример: uses System.Zip; .... procedure TForm1.Test(); var FZip : TZipFile; AArchiveStream : TStream; AFileStreamSource : TStream; ADecompressionStream, AFileStreamDest : TStream; ALocalHeader : TZipHeader; AArchivePath, AFileSourcePath, AFileName : String; begin AArchivePath := 'D:\0\005\test.zip'; AFileSourcePath := 'D:\0\005\test.txt'; AFileName := TPath.GetFileName(AFileSourcePath); // Добавляем в архив AFileStreamSource := TFileStream.Create('D:\0\005\test.txt', fmOpenRead); AArchiveStream := TFileStream.Create(AArchivePath, fmCreate); FZip := TZipFile.Create; FZip.Open(AArchiveStream, TZipMode.zmWrite); FZip.Add(AFileStreamSource, AFileName, TZipCompression.zcDeflate); FZip.Close; FZip.Free; AArchiveStream.Free; // распаковываем из архива FZip := TZipFile.Create; AArchiveStream := TFileStream.Create(AArchivePath, fmOpenRead or fmShareDenyNone); FZip.Open(AArchiveStream, TZipMode.zmRead); FZip.Read(AFileName, ADecompressionStream, ALocalHeader); AFileStreamDest := TFileStream.Create('D:\0\005\test_dest.txt', fmCreate); AFileStreamDest.CopyFrom(ADecompressionStream, ADecompressionStream.Size); AFileStreamDest.Free; ADecompressionStream.Free; FZip.Close; FZip.Free; AArchiveStream.Free; end; В примере берем файл D:\0\005\test.txt и архивируем его в архив 'D:\0\005\test.zip. Потом достаем из этого архива файл test.txt и сохраняем как D:\0\005\test_dest.txt. Все через потоки. Код написан на коленке, при использовании в реальной задаче вам нужно добавить критические секции и обработчики try finally. Кстати вы можете использовать и сжатие BZIP2. В данном примере замените TZipCompression.zcDeflate на TZipCompression.zcBZIP2, ну и самое интересное для разработчика - напишите свою реализацию алгоритма архивирования и зарегистрируйте ее с помощью FZip.RegisterCompressionHandler(TZipCompression.zcBZIP2, .....); Да, это будет не просто, но опыта наберетесь с лихвой.
-
Евгений Корепов отреагировал на ответ на вопрос: Подключение из приложения под Андроид к удаленной БД сайта MySQL в С++ Builder XE
-
RADStudioDeveloper подписался на Евгений Корепов
-
Andrey Efimov отреагировал на ответ на вопрос: Узнать размер видеопамяти
-
Разобрался с помощью коллег из https://t.me/fmx_flood, спасибо kami! Определение: nvmlDeviceGetHandleByPciBusId_v2 : function (const pciBusId : PAnsiChar; pHandle: p_nvmlDevice_t) : nvmlReturn_t; stdcall; Импорт: function ProcNV(var Fun: Pointer; const FunName: WideString) : boolean; begin Fun := nil; Fun := GetProcAddress(LibHandleNV, PWideChar(FunName)); Result := Assigned(Fun); end; ... ProcNV(@nvmlDeviceGetHandleByPciBusId_v2, 'nvmlDeviceGetHandleByPciBusId_v2'); Использование: В функцию GPUusageNVIDIA надо вместо GPU ID передавать PCI BUS ID. PCI BUS ID получаем так clStatus := clGetDeviceInfo(PlatformDevices[DevN], CL_DEVICE_PCI_BUS_ID_NV, SizeOf(AValueCardinal), @AValueCardinal, @Returned_Size); if (clStatus = CL_SUCCESS) and (Returned_Size = 4) then ADevicesOpenCL[NumDevicesOpenCL].DevicePCIBusID := AValueCardinal; Ну и получение GPU_Handle : var ABusIDText : String; ... ABusIDText := '00000000:' + PCIBusID.ToString.PadLeft(2, '0') + ':00.0'; AnvmlReturn := nvmlDeviceGetHandleByPciBusId_v2(PAnsiChar(AnsiString(ABusIDText)), @GPU_Handle); If AnvmlReturn <> 0 then raise EAbort.Create(''); В nvmlDeviceGetHandleByPciBusId_v2 передается pciBusId, параметр должен быть вида domain:bus:device.function, к примеру '00000000:08:00.0'
- 15 ответов
-
- fmx
- firemonkey
-
(и ещё 1 )
C тегом:
-
Евгений Корепов подписался на Vladimir PRO
-
Владимир огромное спасибо! Ваш код очень помог мне в одном проекте. А есть ли путь для решения проблемы не совпадения нумерации GPU? У меня на разных стендах абсолютно разные результаты, каждый раз создавать SlotGPU.txt с соответствиями очень не хочется. Бывает что нумерации совсем безумные, типа 4 5 2 3 1 0 И определить их можно только нагружая один из GPU и наблюдая результат выдаваемый nvmlDeviceGetMemoryInfo Я пытаюсь определить соответствие получая CL_DEVICE_PCI_BUS_ID_NV и CL_DEVICE_PCI_SLOT_ID_NV PlatformID 0 | DeviceID 0 | DeviceNum 0 | PCI Bus 5 Slot 0 | NVIDIA GeForce RTX 3070 | GPU_usage 11 % | Temperature 51 | FanSpeed 40 % | Power 41 PlatformID 0 | DeviceID 1 | DeviceNum 1 | PCI Bus 7 Slot 0 | NVIDIA GeForce RTX 3070 | GPU_usage 100 % | Temperature 76 | FanSpeed 82 % | Power 239 PlatformID 0 | DeviceID 2 | DeviceNum 2 | PCI Bus 3 Slot 0 | NVIDIA GeForce RTX 2070 SUPER | GPU_usage 100 % | Temperature 62 | FanSpeed 71 % | Power 148 PlatformID 0 | DeviceID 3 | DeviceNum 3 | PCI Bus 2 Slot 0 | NVIDIA GeForce GTX 960 | GPU_usage 100 % | Temperature 63 | FanSpeed 72 % | Power 148 Но у меня не хватает мозгов правильно импортировать функцию nvmlDeviceGetHandleByPciBusId_v2 ( const char* pciBusId, nvmlDevice_t* device )(https://docs.nvidia.com/deploy/nvml-api/group__nvmlDeviceQueries.html#group__nvmlDeviceQueries) То ли я параметры не правильно перевожу в pascal, то ли еще что - при вызове получаю только NVML_ERROR_INVALID_ARGUMENT Буду безмерно благодарен за помощь! )
- 15 ответов
-
- fmx
- firemonkey
-
(и ещё 1 )
C тегом:
-
PowerOwl отреагировал на ответ на вопрос: Выполнение регулярных операций в сервисе - статистика
-
PowerOwl отреагировал на ответ на вопрос: Helper для TBitmap - асинхронная загрузка картинки из URL
-
PowerOwl отреагировал на вопрос: Helper для TBitmap - асинхронная загрузка картинки из URL
-
Ingalime отреагировал на ответ на вопрос: Андроид 9 и Интернет
-
Alona Obozna подписался на Евгений Корепов
-
Евгений Корепов отреагировал на ответ на вопрос: Проверка наличия прав
-
Мирзали Пирмагомедов отреагировал на ответ на вопрос: FMX ListView, вывод и чтение данных списка
-
Евгений Корепов отреагировал на ответ на вопрос: Работа с android.hardware.usb.UsbManager
-
Евгений Корепов отреагировал на ответ на вопрос: [Android] Воспроизводить аудио
-
Светить портом базы данных в интернет - худшая идея.
-
Этот текст гугль находит по многим ресурсам с апреля 2020, думаю они или нашли уже себе разработчика, или забили на проект )
-
Евгений Корепов отреагировал на сообщение в теме: Разработка кросплатформенных приложений в одном проекте
-
Не совсем понял ваш вопрос, что именно вам требуется получить? Скажите, тогда смогу посоветовать как или в какой реализации браузера это доступно.
-
FireDAC, он из коробки, бесплатно и покрывает 99% всех нужд. И отлично работает.
-
Евгений Корепов отреагировал на ответ на вопрос: TListView DynamicAppearance ItemAppearanceObjects.ItemObjects.ObjectsCollection
-
Если проект был сохранен в редакции не имеющей лицензии Linux, то вы никак не сможете добавить платформу Linux. Сам работаю дома на профе и у заказчика на энтерпрайзе и бесит эта хрень. Выход - удалите в проекте .dproj файл и откройте его в энтерпрайзе, добавьте платформу, сохраните и скопируйте файл .dproj в отдельную папку. Если проект был изменен и сохранен в профе, заменяйте .dproj на сохраненный.
-
Ширина задана в исходных кодах константой.
-
Да, используйте поиск по этому форуму по Admob. Вот к примеру один из результатов поиска
-
Евгений Корепов отреагировал на ответ на вопрос: поломались ПУШи в 10.4
-
Не используйте первую попавшуюся, используйте нормальные дистрибутивы. Но если даже у вас настолько странная ОС, то всегда можете анализировать dmesg
-
Выполняете любимую консольную команду выводящую сведения о железе (к примеру lspci -v) и парсите вывод.
-
https://unix.stackexchange.com/questions/58846/viewing-linux-library-executable-version-info
-
В Линуксе просто нет никаких стандартов для размещения версии внутри бинарника. Ембаркадера об этом не в курсе, но по привычке воткнула пустую заглушку ))) Забейте, и просто делайте свою константу с версией.