Entwickler-Ecke
Dateizugriff - Ein Array oder StringList in die eine DLL übergeben
bis11 - Di 17.12.02 14:21
Titel: Ein Array oder StringList in die eine DLL übergeben
Hallo,
man hat mir mal gesagt, wenn ich eine DLL schreiben will, sollte ich am besten die Werte oder Strings in PChar übergeben, so könnte man diese DLL auch für andere Programmiersprachen verwenden. Nur jetzt zu meiner Frage, ich würde gerne verschiedene Operationen auslagern in eine DLL, wo ich einen Array oder eine StringList übergeben möchte. Wie kann ich das machen, damit ich diese DLL auch in einer anderen Programmiersprachen verwenden kann ?
Klabautermann - Di 17.12.02 15:12
Hallo,
das geht nicht. Diese Komplexen Datentypen kannst du DLL Intern zwar beliebig verwenden, sobald du aber die Datentypen übergeben willst bist du aufgeschmissen. DLLs geben in der Beziehung nicht viel her.
Ein paar infomationen dazu findest du
hier [
http://www.tutorials.delphi-source.de/dlls/file009.shtml].
Gruß
Klabautermann
bis11 - Di 17.12.02 15:19
Das heißt also, wenn ich das richtig verstanden habe, kann ich nur einzelne Werte übergeben und wieder zurückgeben und ich kann Array oder StringListen nur innerhalb einer DLL verwenden ist das so ungefähr richtig wiedergegeben ?
Klabautermann - Di 17.12.02 15:23
Ja,
aber du kannst z.B. die Einträge einer Stringlist per CommaText auslesen als pChar an die Dll übergeben und es dort wieder per CommaText an eine neue Stringlist übergeben. Damit hast du dieses Problem nicht mehr. Bei der Rückgabe geht es genau so. Es darf eben nur kein Komma in den einzelnen Einträgen vorhanden sein.
Wenn du dir sicher bist, das der Wert #0 nicht in deinen Daten enthalten ist kannst du pChar aus pseudo Stream misbrauchen.
Gruß
Klabautermann
bis11 - Di 17.12.02 15:28
Die Idee mit dem pseudo Stream ist keine schlechte, hast Du schonmal soetwas probiert oder Erfahrungen damit ob sowas sicher ist von der Stabilität her ?
Klabautermann - Di 17.12.02 15:43
Genutzt habe ich es noch nicht, da ich 1. nur selten DLLs verwende und 2. komplexe Daten meist in Form von XML (Text) an DLL funktionen. Aber ein pChar ist im grunde ein Zeiger auf einen Speicherbereich und das Ende des Inhaltes wird durch das Zeichen #0 begrenst. (Bei DLLs wird der Speicherbereich komplett in den Adressraum der DLL Kopiert. Denn EXE und DLL laufen in unterschiedlichen Adressräumen. Deshalb kann man Das problem auch nicht mit Reinen Zeigern umgehen)
Wenn du also dafür sorgst, das Speicher in ausreichender Menge zur Verfügung steht (GetMem), und das keine #0 vor dem Ende der Daten auftaucht kann da eigentlich nichts schief gehen.
Gruß
Klabautermann
bis11 - Di 17.12.02 16:12
Hast Du irgendwie ein Tutorial oder eine Beschreibung zu dem Thema mit DLL und XML ?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!