AGB  ·  Datenschutz  ·  Impressum  







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

Standardunits in dll einbinden

Ein Thema von xml99 · begonnen am 5. Aug 2010 · letzter Beitrag vom 6. Aug 2010
Antwort Antwort
xml99

Registriert seit: 2. Feb 2005
Ort: Köln
13 Beiträge
 
Delphi 2007 Professional
 
#1

Standardunits in dll einbinden

  Alt 5. Aug 2010, 19:14
Hallo Zusammen,

Ich lade in meinem Hauptprogramm statisch eine mit Delphi erstelle dll. Das funktioniert gut, solange ich keine weiter (dcu-)unit in der dll angebe.

Erweitere ich meine uses-Liste mit Sysutils oder Classes oder Math, so kommt beim Beenden (automatischen entladen) der dll eine access violation. Entferne ich die units aus der uses-Liste beendet es sich ohne Fehlermeldung.

Ich möchte in einer meiner exportieren functionen Ceil aus der unit Math benutzen. Nehme ich die unit Math in die uses-Liste auf, kann ich zwar Ceil benutzen, beim beenden des Pogramms erhalte ich aber eine access violation.

Die Abbruchstelle ist in der Funktion "RemoveMediumFreeBlock" des MemoryManagers (ist wohl FastMM4, da ich Delphi 2007 benutze?).

Hat jemand eine Idee? Was mache ich falsch? Es soll doch sogar möglich sein Formulare (unit Forms) einbinden zu können?

Danke und Grüße
Ralf
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Standardunits in dll einbinden

  Alt 5. Aug 2010, 19:33
Was machst du genau? Tauscht du evtl. über die DLL-Schnittstelle "lebende" Objekte oder Strings aus?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
xml99

Registriert seit: 2. Feb 2005
Ort: Köln
13 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Standardunits in dll einbinden

  Alt 5. Aug 2010, 20:38
Hallo Bernhard,

Nein, es werden integer, double, currency und strings zurückgegeben. Ich möchte in der dll Berechnungen durchführen. Dazu benötige ich Ceil aus der unit Math.

Wenn Math eingebungen ist (also in der uses-Liste steht) dann gibt es nach dem Beenden des Hauptprogramms einen Runtime Fehler 216, ohne Math (und auskommentierter Berechnung) passiert dies nicht.

Es reicht auch Sysutils in die uses-Liste einzufügen (zwar wird sie nicht benötigt, ich wollte nur ausschliessen, dass es an einer bestimmten unit also Math liegt), selber Effekt. Auch eigene bel. units (die wiederum Delphi unist einbinden) führen zu dem gleichen Problem.

Ich kann es mir nicht erklären, was da passiert.

Grüße
Ralf
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Standardunits in dll einbinden

  Alt 5. Aug 2010, 21:13
Welche Delphi-Version? Alle Patches installiert? Win32 oder .NET?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Standardunits in dll einbinden

  Alt 5. Aug 2010, 21:17
Nein, es werden integer, double, currency und strings zurückgegeben.
Strings sind lebende "Objekte". Hast du dafür den Hinweis welcher ganz oben in einem DLL-Projekt steht beachtet und ShareMem genutzt?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
xml99

Registriert seit: 2. Feb 2005
Ort: Köln
13 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Standardunits in dll einbinden

  Alt 6. Aug 2010, 06:09
Hallo,

Wie bereits geschrieben benutze ich Delphi 2007, Win32, alle Patches vorhanden (CodeGear™ Delphi® 2007 für Win32® R2 Version 11.0.2902.10471.).

Bei Benutzung von FastMM4 ist keine borldmm.dll nötig und es können auch (Delphi)-strings verwendet werden. Delphi 2007 benutzt einen "abgespeckten" FastMM4. Es gibt auch keine Einschränkungen in der Funktionalität.

Noch ein "interessantes" Detail: wenn ich in einer Source zweimal aufeinanderfolgend einen Bereich der mit const eingeleitet wird habe, kommt es beim Starten der Anwendung zu einer Access violation (??? das begreife wer will ???), also

Delphi-Quellcode:
const
  c_1 = 'xx';
  c_2 = 100;

const
  c_3 = 20;
  c_4 = 'yy';
Grüße
Ralf

Geändert von mkinzler ( 6. Aug 2010 um 06:35 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Standardunits in dll einbinden

  Alt 6. Aug 2010, 06:35
Und wenn du die beiden Bereiche "vereinigst"?
Markus Kinzler
  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 17:23 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