Замечания по демострационным примерам на Delphi.
(0 чел.) 
  • Страница:
  • 1

ТЕМА: Замечания по демострационным примерам на Delphi.

Замечания по демострационным примерам на Delphi. 1 год, 2 мес. назад #4139

  • MSafin
  • Новый участник
  • Постов: 7
  • Репутация: 0
Здравствуйте,

В примерах на Delphi уберите вызовы функций SysAllocString/SysFreeString так как вы используете тип WideString вызов данных функций не нужен (более того он вреден, т.к. приводит к утечкам памяти и ошибкам AV)
Не совсем понятен смысл использования тяжёлых компонентов TRichEdit когда с тем же успехом можно использовать TMemo.

Re: Замечания по демострационным примерам на Delphi. 1 год, 2 мес. назад #4140

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
Добрый день!

Строки возвращенные из библиотеки KalkanCryptCOM необходимо освобождать, иначе произойдет утечка памяти.

Не совсем понятен смысл использования тяжёлых компонентов TRichEdit когда с тем же успехом можно использовать TMemo.

Мы не ставили целью создать идеальное оптимизированное приложение. Это просто один пример использования нашей библиотеки, чтобы было понятно как с ней работать и как вызывать методы.
Модератор

Re: Замечания по демострационным примерам на Delphi. 1 год, 2 мес. назад #4142

  • MSafin
  • Новый участник
  • Постов: 7
  • Репутация: 0
Murat Seisenov написал:

Строки возвращенные из библиотеки KalkanCryptCOM необходимо освобождать, иначе произойдет утечка памяти.

Дело в том, что Delphi автоматически вызывает функции выделения и освобождения памяти при использовании типов WideString. Ручной вызов данных функций как раз и приводит к утечкам памяти и попытке дважды освободить одну и туже строку.
Murat Seisenov написал:

Мы не ставили целью создать идеальное оптимизированное приложение. Это просто один пример использования нашей библиотеки, чтобы было понятно как с ней работать и как вызывать методы.

Ваш пример оказался удачной программкой (за что Вам большое спасибо) для проверки функциональности KalkanCOM и работы с подписями на этапе разработки.
С RichEdit просто у нас возникли сложности, он не вставлял большой текст.
В целом это просто пожелание.

Re: Замечания по демострационным примерам на Delphi. 1 год, 2 мес. назад #4143

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
Память для выходных данных (из библиотеки) выделяется в библиотеке (KalkanCryptCOM). Библиотека написана на C++. Delphi не может ничего знать о выделенной в библиотеке памяти. Поэтому необходимо освобождать вручную.
Попробуйте удалить SysFreeString(outData) при подписании и вызвать этот метод в цикле 500 раз. И наблюдайте за потребляемой памятью приложения.

Спасибо. В будущих версиях постараемся учесть Ваше пожелание.
Модератор

Re: Замечания по демострационным примерам на Delphi. 1 год, 2 мес. назад #4146

  • MSafin
  • Новый участник
  • Постов: 7
  • Репутация: 0
Murat Seisenov написал:
Память для выходных данных (из библиотеки) выделяется в библиотеке (KalkanCryptCOM). Библиотека написана на C++. Delphi не может ничего знать о выделенной в библиотеке памяти. Поэтому необходимо освобождать вручную.
Попробуйте удалить SysFreeString(outData) при подписании и вызвать этот метод в цикле 500 раз. И наблюдайте за потребляемой памятью приложения.

Функции SysAllocString/SysFreeString это не функции C++ это функции Win32 API, по этому память выделяется в ресурсах Windows и кто её выделил или освободил Delphi или C++ не имеет значение.
Я не зря делаю акцент на тип WideString это особый тип строк в Delphi разработанный специально для поддержки COM и он полностью совместим с типом BSTR более детально можете прочитать в документации

Re: Замечания по демострационным примерам на Delphi. 1 год, 2 мес. назад #4147

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
Я все это прекрасно знаю. Спасибо за ссылку ))

В общем, Ваш проект реализация на Ваше усмотрение. Продолжать спор считаю неуместным.
Модератор
  • Страница:
  • 1
FaLang translation system by Faboba