{"id":746,"date":"2017-05-22T11:16:59","date_gmt":"2017-05-22T10:16:59","guid":{"rendered":"https:\/\/solidt.eu\/site\/?p=746"},"modified":"2017-05-22T11:18:05","modified_gmt":"2017-05-22T10:18:05","slug":"c-call-native-dll-with-string-parameter","status":"publish","type":"post","link":"https:\/\/solidt.eu\/site\/c-call-native-dll-with-string-parameter\/","title":{"rendered":"C# call native dll with string parameter"},"content":{"rendered":"<pre lang=\"c#\">using System;\r\nusing System.Runtime.InteropServices;\r\nusing System.Text;\r\n\r\nnamespace ConsoleApplication2\r\n{\r\n class Program\r\n {\r\n [DllImport(\"DelphiTools.dll\", CallingConvention = CallingConvention.StdCall)]\r\n public static extern void GetSettings(int bufferSize, ref StringBuilder sb);\r\n\r\n static void Main(string[] args)\r\n {\r\n int bufferSize = 10000;\r\n var sb = new StringBuilder(bufferSize);\r\n sb.Append(@\"param\");\r\n\r\n GetSettings(bufferSize, ref sb);\r\n\r\n Console.Write(sb.ToString());\r\n Console.ReadLine();\r\n }\r\n }\r\n}<\/pre>\n<pre lang=\"Delphi\">library DelphiTools;\r\n\r\n{$R *.res}\r\n\r\nprocedure GetSettings(bufferSize : integer; var buffer : PAnsiChar); stdcall; export;\r\nvar p : PAnsiChar;\r\n param : AnsiString;\r\n Result : String;\r\nbegin\r\n param := String(AnsiString(buffer));\r\n result := 'test';\r\n p := PAnsiChar(AnsiString(result));\r\n StrCopy(buffer, p);\r\nend;\r\n\r\nexports\r\n GetSettings;\r\n\r\nbegin\r\n\r\n\r\nend.<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>using System; using System.Runtime.InteropServices; using System.Text; namespace ConsoleApplication2 { class Program { [DllImport(&#8220;DelphiTools.dll&#8221;, CallingConvention = CallingConvention.StdCall)] public static extern void GetSettings(int bufferSize, ref StringBuilder sb); static void Main(string[] args) { int bufferSize = 10000; var sb = new StringBuilder(bufferSize); sb.Append(@&#8221;param&#8221;); GetSettings(bufferSize, ref sb); Console.Write(sb.ToString()); Console.ReadLine(); } } } library DelphiTools; {$R *.res} procedure GetSettings(bufferSize : [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[6],"tags":[],"class_list":["post-746","post","type-post","status-publish","format-standard","hentry","category-dotnet"],"_links":{"self":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/746","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/comments?post=746"}],"version-history":[{"count":3,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/746\/revisions"}],"predecessor-version":[{"id":749,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/746\/revisions\/749"}],"wp:attachment":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/media?parent=746"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/categories?post=746"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/tags?post=746"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}