1. Непонятно, зачем вообще писать такую функцию, т.к. есть уже готовые ExtractFileName, ExtractFileExt, ChangeFileExt, etc...
2. Не вижу описание типа импортируемой функции. Возможно засада именно там, т.к. тип передачи параметров должен быть одинаковый и в dll и у типа в вызывающем модуле.
3. Не стоит использовать PChar там, где этого можно избежать. Лучше WideString. А если не из Delphi использовать не требуется, то вообще используй String.
4. Основная ошибка. Память, выделенная в dll, должна освобождаться в dll же. Даже при использовании модуля ShareMem. Т.е. либо передавай заранее выделенный буфер в функцию (фактически, процедуру), либо после отработки вызывай процедуру освобождения памяти из dll. У тебя там идет неявние выделение памяти. Кстати, от него тоже лучше избавиться.
|