Announcement

Collapse
No announcement yet.

Arrays

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Arrays

    Hallo!

    Wie bekomme ich es hin, dass eine Funktion in einer DLL ein Array of string an mein aurufendes Programm zurückgibt?
    Irgendwie bekomme ich es mit Arrays nicht hin. Alles andere klappt einwandfrei.

    Vielen Dank
    Bodo

  • #2
    Hallo,

    welcher String-Typ ist denn gemeint bzw. wird vom Compiler-Schalter $H festgelegt? Delphi kennt gleich 3 davon: <br>
    1. Pascal-String (alias <i>ShortString</i>) <br>
    2. String (alias <i>AnsiString</i>), oder <br>
    3. WideString

    Von welchen Programmiersprachen aus soll die DLL genutzt werden können

    Comment


    • #3
      Gemeint ist AnsiString.
      Von welchen Sprachen die DLL genutzt werden soll ist offen. Der Kunde soll sie in seinen Applikationen einsetzten können

      Comment


      • #4
        Hallo,

        &gt;Von welchen Sprachen die DLL genutzt werden soll ist offen.

        dann darf man die bequemen Delphi-Strings nicht einsetzen, sondern müsste zu <b>PChar</b> wechseln oder mit dem <b>IMalloc</b>-Interface von Windows hantieren. Damit der Aufwand aber einigermaßen erträglich bleibt, würde ich alle Zeichenketten in ein SafeArray verpacken und als Variant zurückliefern. Wenn dann auch noch die DLL als Automation-Objekt (COM-Server) verpackt wird, kümmert sich der Typbibliotheks-Marshaler von Windows automatisch um alle notwendigen Anpassungen - solange die aufrufende Anwendung mit COM hantieren kann.
        <pre>
        aArray := VarArrayCreate([0, 8], varOleStr);
        for i := 0 to 8 do begin
        sTxt := 'Eintrag ' + IntToStr(i+1);
        aArray[i] := sTxt;
        end;
        </pre>

        P.S: Erst ab .NET ist in jeder Sprache ein String identisch aufgebaut, so dass der direkte Zugriff ohne vorherige Anpassung möglich wird

        Comment


        • #5
          Hallo!

          Wäre super, wenn Du mir ein ausfühliches Beispiel geben könntest. Für mich ist das vollkommenes Neuland.

          Tausend Dank
          Bod

          Comment

          Working...
          X