Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dll und record, bzw. array (https://www.delphipraxis.net/31643-dll-und-record-bzw-array.html)

egal 12. Okt 2004 08:23


Dll und record, bzw. array
 
Es wurde schon mehrmals besprochen, aber richtige Lösung konnte ich trotzdem nicht finden. In meiner funktion ist Übergabeparameter ein record, aber man kann auch 2 Arrays benutzen, einer of String, anderer of Integer. Ich habe es gelesen, dass statt String soll pchar benutzen, aber was ist mit arrray?

DellaM0rte 12. Okt 2004 09:24

Re: Dll und record, bzw. array
 
Am besten lässt sich eine solche Übergabe immer über einen Pointer realisieren. Dann kannst du sogar ein beliebiges Objekt (z.B. Class(TObject)) übergeben.

Vorgehensweise:
- Object/Record/String in der Dll einem Speicherbereich zuweisen (new)
- mit Daten füllen
- und den Pointer an die Anwendung übergeben
- dort wird dein Object/Record/String dann dereferenziert
- nicht vergessen den Speicherbereich zu gegebenen Zeitpunkt wieder freizugeben.

Wie das im einzelen Funktioniert solltest du mit den richtigen Suchbegriffen finden, wenn nicht, dann frag mich nochmal, wenn ich die Zeit finde kann ich dir ein Beispielprojekt schicken...

egal 12. Okt 2004 09:38

Re: Dll und record, bzw. array
 
Ein Beispielprojekt, das klingt ganz super, hoffe, dass du Zeit findest. :-D

egal 15. Okt 2004 09:24

Re: Dll und record, bzw. array
 
Hilfe brauche ich immer noch :gruebel:

Tonic1024 15. Okt 2004 09:54

Re: Dll und record, bzw. array
 
Hi...

Du kannst Array of String und Array of integer benutzen. Dafür musst du Sharemem benutzen. Wie das geht findest du in diversen Abhandlingen.

Empfehlen kann ich dir allerdings das Borland Sharemem durch freie Software zu ersetzen, weil es doch bugs gibt. Google mal nach Bei Google suchenFastShareMem oder Bei Google suchenCMemMan. Mit FastShareMem habe ich allerbeste Erfahrungen gemacht!

[edit] Das bedeutet aber natürlich, dass du die DLL nur mit einem Delphi-Programm auslesen/ansprechen kannst, dass auch FastShareMem benutzt. Ob es ein Ponton für andere Hochsprachen gibt weiss ich leider nicht [/edit]

hoffe ich konnte helfen.

MfG

Tonic

jbg 15. Okt 2004 10:06

Re: Dll und record, bzw. array
 
[quote="Tonic1024"]Empfehlen kann ich dir allerdings das Borland Sharemem durch freie Software zu ersetzen, weil es doch bugs gibt.[/url]
Und die wären?

egal 15. Okt 2004 10:25

Re: Dll und record, bzw. array
 
Zitat:

Zitat von Tonic1024
Hi...

Du kannst Array of String und Array of integer benutzen. Dafür musst du Sharemem benutzen. Wie das geht findest du in diversen Abhandlingen.

Empfehlen kann ich dir allerdings das Borland Sharemem durch freie Software zu ersetzen, weil es doch bugs gibt. Google mal nach Bei Google suchenFastShareMem oder Bei Google suchenCMemMan. Mit FastShareMem habe ich allerbeste Erfahrungen gemacht!

Danke für links!!! Aber was ist mit records? Ich habe es mit ShareMem von Borland versucht, allerdings war mein record immer leer, mit Arrays habe ich bis jetzt nicht versucht. Aber in meinem Fall müssen die Arrays dynamisch sein, geht es?
Und noch eine Frage, wenn ich doch ShareMem von Borland nehme, kann ich auf meine Dll mit anderen Programmierspachen zugreifen oder auch nur mit Delphi?

Tonic1024 15. Okt 2004 10:28

Re: Dll und record, bzw. array
 
Hi...

Ist zu lange her... kann ich nicht mehr mit Gewissheit sagen...

Fakt ist, dass ich mich zu der Zeit gezwungen sah für meine DLL, in der ich ein dreidimensionales Array of String berechnen lassen musste, einen anderen Weg zu suchen. Und da habe ich in der DP (oder wars die Delphi-Source?!?) eine Referenz von FastShareMem gefunden, die mein Problem gelöst hat. Wenn du ein bissel googelst wirst du auf der Seite vom FastShareMem bestimmt jede Menge Infos zu dieser Kompo finden. War glaub ich umfangreich Textmaterial mit Features und History dabei.

[edit] Dynamische Array benutze ich auch - kein Rroblem. Du solltest nur eine Unit erstellen, in denen du einen Typ deklarierst: Array of String. Diese Unit dann in alle Projekte einbinden. Damit stellst du sicher, das die Typen nur an einer Stelle im Code stehen und ggf. Änderungen globale gültigkeit haben. IMO sollten records dann auch kein Problem sein, habe ich aber nicht getestet.[/edit]

MfG

Tonic

egal 15. Okt 2004 10:31

Re: Dll und record, bzw. array
 
Zitat:

Zitat von Tonic1024
Hi...
Wenn du ein bissel googelst wirst du auf der Seite vom FastShareMem bestimmt jede Menge Infos zu dieser Kompo finden. War glaub ich umfangreich Textmaterial mit Features und History dabei.

ok, danke, dann gehe ich mal googlen :lol:

DellaM0rte 18. Okt 2004 11:03

Re: Dll und record, bzw. array
 
Liste der Anhänge anzeigen (Anzahl: 1)
Besser spät als nie, oder wie war das?

Ich habe eine mal ein Beispiel erstellt, dass zeigt, wie man Stringdaten in Records bzw Objekten mit Hilfe von Pointern und OHNE Sharemem o.ä. zwischen Anwendung und Dll austauscht.

Vorteil gebenüber Sharemem: Die Dll kann auch von einer C++ Anwendung u.ä. genutzt werden.


Das Beispiel lässt sich natürlich beliebig erweitern, sodass man auch noch Arrays hinzufügen kann.

(Ich habe das unter Delphi7 Pro geschrieben, sollte aber auch auf anderen Versionen laufen)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:13 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz