AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

DLL macht probleme

Ein Thema von youuu · begonnen am 15. Jun 2009 · letzter Beitrag vom 16. Jun 2009
Antwort Antwort
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#1

DLL macht probleme

  Alt 15. Jun 2009, 22:33
Hi,

Ich habe eine Funktion in einer DLL

Delphi-Quellcode:
Function company_exist(Query: TZQuery; DB: PChar): Boolean; stdcall;
begin
  Query.SQL.Text:='SHOW TABLES';
  Query.Open;
  result := false;
  while not (Query.EOF or result) do
  begin
    result := AnsiLowerCase(Query.Fields[0].AsString) = AnsiLowerCase(DB);
    Query.Next;
  end;
  Query.Close;
end;
wird im Hauptprogramm so aufgerufen:

if company_exist(QueryLogin, PChar(DB)) then
Funktioniert auch alles soweit, jedoch wenn ich meine Anwendung beende bekomm ich 2 Fehler:

1.Exception der Klasse EAccessViolation .... Zugriffsverletzung bei Adresse ... in Modul uxtheme.dll
2.Exception der Klasse EAccessViolation .... Zugriffsverletzung bei Adresse ... in Modul libmysql.dll

Wenn ich jedoch die gleiche Funktion im Programm ausführe, funktioniert es ohne jegliche Fehler.
Steven
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: DLL macht probleme

  Alt 15. Jun 2009, 22:40
ShareMem eingebunden? Vergiss nicht, du arbeitest hier modulübergreifend mit Strings (Query.SQL.Text).
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#3

Re: DLL macht probleme

  Alt 15. Jun 2009, 22:41
Ja ist eingebunden

DLL
Delphi-Quellcode:
uses
  ShareMem,
  SysUtils,
.
.
.
Anwendung
Delphi-Quellcode:
uses
  ShareMem,
  Forms,
.
.
.

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
.
.
.
  Application.Run;
end.
Steven
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

Re: DLL macht probleme

  Alt 16. Jun 2009, 07:06
Normale DLLs sind nicht wirklich geeignet, um Objekte zu übergeben.
Der Code der Klasse TZQuery existiert zweimal: Zur Anwendung gelinkt und nochmals in der DLL.
Somit lässt sich nur Code, der die VCL nicht benötigt sinnvoll in DLLs auslagern.
(z.B. Prüfsummenberechnung, Verschlüsselung, Matheoperationen, Statistische Funktionen,...)
Code, der Klassen aus der VCL benötigt, macht innerhalb einer DLL meistens Probleme.
Denn plötzlich existieren globale Variablen der VCL zweimal; in der Anwendung und in der DLL.
fork me on Github
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:24 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