Delphi 6 string types are natively Ansi (single byte per character). The COM "BSTR" type, and .NET string type are natively Unicode UTF-16 (two bytes per unicode codepoint, most of which correspond to a single character).
If your COM function code in Delphi 6 uses WideString instead of string, you should be able to do your COM function call without an issue. Otherwise, you are falling into a codepage conversion issue, perhaps. It is also possible to convert to a Turkish codepage with ANSIString, but in my opinion such a conversion is happening implicitly in your code, and so you should look for those implicit conversions and remove the mis-use of String (AnsiString), replacing the types with WideString.
There are two ways you could be doing your COM function calll and you didn't specify.
Invocation using OLE Variants.
var
o: OleVariant;
ws:WideString;
begin
o := CreateOleObject('NameThing.OtherThingName');
o.MethodName(ws); // this should work. Note: Do NOT use STRING type here in Delphi 6.
end;
Invocation using native COM with a type library. Details of doing this correctly depend on your specific function parameters. You have not specified if you have a MyUnit_TLB.pas unit, but if you have please update the question and show the actual method you're invoking.
WideCharToMultiByte(1252, 0, #$015F#$0131#$011F, ...
will convert the wide string 'şığ' to ansi string 'sig'. – Sertac Akyuz