Einzelnen Beitrag anzeigen

Dax
(Gast)

n/a Beiträge
 
#9

Re: Delphi ShortString C# Äquivalent

  Alt 10. Okt 2008, 20:22
Delphi-Quellcode:
function DeinDLLCode: PChar;
begin
  result := '42';
end;
Code:
[DllImport("Deine.dll", CharSet = CharSet.Ansi)]
static extern string DeinDLLCode();
Das ist die simple Variante, aber nicht schön - lieber anders:
Delphi-Quellcode:
function DeinDLLCode(str: PChar): Integer;
begin
  if assigned(str) then
  begin
    // str auf '42' setzen, wie ging das?
    result := 0;
  end
  else
    result := 3; // '42'#0
  end;
end;
Code:
[DllImport("Deine.dll", EntryPoint = "DeinDLLCode", CharSet = CharSet.Ansi)]
static extern int DeinDLLCodeInternal([Out] StringBuilder str);

static string DeinDLLCode()
{
  int len = DeinDLLCodeInternal(null);
  StringBuilder str = new StringBuilder(len);
  DeinDLLCodeInternal(str);
  return str.ToString();
}
Da fehlen natürlich noch alle Fehlerauffangmechanismen, und für Richtigkeit garantieren kann ich auch nicht (so oft hantiere ich nicht mit P/Invokes), aber das Prinzip müsste rübergekommen sein
  Mit Zitat antworten Zitat