Das letzte Beispiel geht auch nicht. Was bedeutet eigentlich "#UNLEN"?
-
Aber damit wir uns nicht verzetteln, sage ich was die Funktion "GetMyString" macht.
Ich übergebe eine Adresse auf ein Byte-Feld (oder eines beliebig allocierten Speichers)
und die Länge des genutzten Byte-Feldes. Je nach dem was in dem Byte-Feld steht,
kommt eine Meldung (String) zurück. Im Beispiel hatte ich das Byte-Feld mit 65, 66, 67 gefüllt.
Es können aber tatsächlich beliebige Werte zwischen 0 und 255 enthalten sein.
Ich dachte erst, dass die Lösung mit "PeekS" von hörmi passen könnte. Tut es aber nicht.
-
Mit C# kann ich die Funktion einwandfrei nutzen. Der C# Quelltext sieht wie folgt aus:
Code: Alles auswählen
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace sammlung
{
class Program
{
static void Main(string[] args)
{
byte[] werte = new byte[100];
werte[0] = 33;
werte[1] = 99;
werte[2] = 255;
string s = DLLTest.GetMyString(werte, 3);
Console.WriteLine(s);
}
}
public class DLLTest
{
[DllImport("sammlung.dll")]
public static extern string GetMyString(byte[] werte, int length);
}
}