AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dll und record, bzw. array

Ein Thema von egal · begonnen am 12. Okt 2004 · letzter Beitrag vom 25. Okt 2004
Antwort Antwort
Seite 1 von 2  1 2      
egal

Registriert seit: 14. Jul 2004
190 Beiträge
 
Delphi XE4 Professional
 
#1

Dll und record, bzw. array

  Alt 12. Okt 2004, 09:23
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?
  Mit Zitat antworten Zitat
DellaM0rte

Registriert seit: 4. Okt 2004
4 Beiträge
 
#2

Re: Dll und record, bzw. array

  Alt 12. Okt 2004, 10:24
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...
  Mit Zitat antworten Zitat
egal

Registriert seit: 14. Jul 2004
190 Beiträge
 
Delphi XE4 Professional
 
#3

Re: Dll und record, bzw. array

  Alt 12. Okt 2004, 10:38
Ein Beispielprojekt, das klingt ganz super, hoffe, dass du Zeit findest.
  Mit Zitat antworten Zitat
egal

Registriert seit: 14. Jul 2004
190 Beiträge
 
Delphi XE4 Professional
 
#4

Re: Dll und record, bzw. array

  Alt 15. Okt 2004, 10:24
Hilfe brauche ich immer noch
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#5

Re: Dll und record, bzw. array

  Alt 15. Okt 2004, 10:54
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
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

Re: Dll und record, bzw. array

  Alt 15. Okt 2004, 11:06
[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?
  Mit Zitat antworten Zitat
egal

Registriert seit: 14. Jul 2004
190 Beiträge
 
Delphi XE4 Professional
 
#7

Re: Dll und record, bzw. array

  Alt 15. Okt 2004, 11:25
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?
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#8

Re: Dll und record, bzw. array

  Alt 15. Okt 2004, 11:28
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
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
egal

Registriert seit: 14. Jul 2004
190 Beiträge
 
Delphi XE4 Professional
 
#9

Re: Dll und record, bzw. array

  Alt 15. Okt 2004, 11:31
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
  Mit Zitat antworten Zitat
DellaM0rte

Registriert seit: 4. Okt 2004
4 Beiträge
 
#10

Re: Dll und record, bzw. array

  Alt 18. Okt 2004, 12:03
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)
Angehängte Dateien
Dateityp: zip beispiel_141.zip (8,6 KB, 146x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 Uhr.
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