AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein String aus D5 DLL in Delphi 10.2 einslesen
Thema durchsuchen
Ansicht
Themen-Optionen

String aus D5 DLL in Delphi 10.2 einslesen

Ein Thema von kmma · begonnen am 15. Jul 2019 · letzter Beitrag vom 18. Jul 2019
Antwort Antwort
jziersch

Registriert seit: 9. Okt 2003
Ort: München
258 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: String aus D5 DLL in Delphi 10.2 einslesen

  Alt 15. Jul 2019, 11:21
ich meinte dies:

function ExportString: PAnsiChar stcall; external 'xxx\Project_d5.dll';

und mal sehen was Du mit dem Pointer machen kannst.

Auf diese Weise wird ShareMem etc. nicht benötigt.
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: String aus D5 DLL in Delphi 10.2 einslesen

  Alt 15. Jul 2019, 11:30
ich meinte dies:

function ExportString: PAnsiChar stcall; external 'xxx\Project_d5.dll';

und mal sehen was Du mit dem Pointer machen kannst.

Auf diese Weise wird ShareMem etc. nicht benötigt.
Sieht seltsam aus.. stcall nicht stdcall ?

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.284 Beiträge
 
Delphi 12 Athens
 
#3

AW: String aus D5 DLL in Delphi 10.2 einslesen

  Alt 15. Jul 2019, 11:40
Soweit ich mich erinnere ging das mit den String-Rückgaben bei D5 ausschließlich in Verbindung mit Sharemem und/oder FastMM4. Daher würde ich orakeln, dass der Speichermanager von Tokio krachen geht. Evtl. hilft es, die DLL dynamisch (spät) zu laden und nach Gebrauch auch gleich wieder freizugeben.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: String aus D5 DLL in Delphi 10.2 einslesen

  Alt 15. Jul 2019, 12:02
Hall,
laß unter D10 einfach mal das stdcall weg.
Heiko
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
655 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: String aus D5 DLL in Delphi 10.2 einslesen

  Alt 15. Jul 2019, 12:02
Du deklarierst die Funktion mit einem Rückgabewert als AnsiString. In deiner Anwendung nutzt du aber einen ShortString. Nutze den selben StringtTyp in der Anwendung, also AnsiString. ShortString und AnsiString sind intern komplett anderes aufgebaut und ich kann mir gut vorstellen, dass es deswegen zu einer AV kommt.

Geändert von Rolf Frei (15. Jul 2019 um 12:05 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: String aus D5 DLL in Delphi 10.2 einslesen

  Alt 15. Jul 2019, 12:07
Hallo,

Zitat:
ShortString und AnsiString sind intern komplett anderes aufgebaut
Ausprobieren.
Sobald das falsche (denke ich) stdcall weg ist, 50:50 Chance ...

Zitat:
StringLists aus D5
Das kannst du glaube ich vergessen.
https://stackoverflow.com/questions/...elphi-versions
Notlösung wäre, den StringList.CommaString zu übergeben, also genau einen String.
Heiko

Geändert von hoika (15. Jul 2019 um 12:10 Uhr)
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
655 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: String aus D5 DLL in Delphi 10.2 einslesen

  Alt 15. Jul 2019, 12:11
Wieso nicht einfach:

In der DLL: ExportString := StringList.Text
in der Anwendung: StringList.Text := ExportString

Damit lässt sich eine Stringlist mit der bestehenden Funktion ohne Probleme transferieren.

Stcall wird doch sicher einen Compilerfehler bringen. Ich vermute das ist hier einfach ein Schreibfehler des OP im Forum.

Geändert von Rolf Frei (15. Jul 2019 um 12:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.686 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: String aus D5 DLL in Delphi 10.2 einslesen

  Alt 15. Jul 2019, 12:53
Wenn der Export aus der DLL nicht als StdCall deklariert wurde, sollte der Import es auch nicht sein.

Laut Swiss Delphi Center (bzw. Peter Below, der den Artikel dort geschrieben hat) war die Default-Calling-Convention in Delphi 5 nicht StdCall sondern Register.

Normalerweise sollte man die aber in der DLL explizit angeben...

Ansonsten: Mit Delphi 2007 wurde der Standard-Memory-Manager auf FastMM geändert. Früher wurde für ShareMem eine DLL (BORLNDMM.dll?) benötigt, die dann sowohl das Programm als auch die DLL zur Speicherverwaltung benutzt haben. Seit FastMM ist das nicht mehr notwendig.

Ich frage mich gerade, ob das alte ShareMem noch kompatibel zum neuen ist.

Vielleicht muss man ein Flag setzen?
EnableBackwardCompileMMSharing
Thomas Mueller
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 15:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz