Thema: Delphi Datenmodule und DLL

Einzelnen Beitrag anzeigen

Benutzerbild von Tonic1024
Tonic1024

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

Re: Datenmodule und DLL

  Alt 29. Sep 2003, 08:38
Moin...

Deiner Frage entnehme ich, dass es also generell möglich sein muss, oder?

Die Fehlermeldung lautet wie oben schon angedeutet: "Zugriffsverletzung an Adresse sowiso im Modul XY.DLL. Lesen von Adresse nochwas"

Der Fehler wird in meiner DLL angezeigt. Ich kann den Fehler auch auf eine Zeile genau definieren, aber verstehe ihn nicht.

Wie schon gesagt. Immer wenn ich im code die Query anspreche löst der Fehler aus.

Ein Beispiel:
Delphi-Quellcode:
function getDrivers(SQL:string):TDatenArray;
var Daten: TDatenArray;
    SQLString: TStrings;
    temp: string;
begin
    SQLString:=TStringlist.Create;
    SQLString.Insert(0,SQL);
    DBAnbindung.SQLQuery.SQL:=SQLString;
    //DBAnbindung.SQLQuery.SQLConnection:=DBAnbindung.CnxIB;
    //DBAnbindung.SQLQuery.Active:=true;

    SQLstring.Free;

    setlength(Daten,2);
    setlength(Daten[0],2);
    setlength(Daten[1],2);
    Daten[0][1]:='Alle Fahrer';
    Daten[1][1]:='-----------------------------------------'; // Separator

    //DBAnbindung.SQLQuery.First;
    {
    while not DBAnbindung.SQLQuery.Eof do
    begin
      ...machwas damit...
    end;
    }

    Result:=Daten;
end;
Hier weise ich der Query.SQL einen TStrings-typ zu ( Zeile 8 ). und bekomme die Exception. Wenn ich den zur Designzeit ändere und danach die Query öffene (auch zur Designzeit) passiert nichts - bzw. alles arbeitet wie vorgesehen.

Ich habe alle Zugriffe Auf das Datenmodul auskommentiert. Aber egal wann und in welcher zeile ich es anspreche, reagiert es wie oben beschrieben. Wenn ich aber die gleichen Änderungen zur Designzeit mache geht es. Wenn ich das Datenmodul und die Funktionen, so wie sie sind, im Hauptmodul (also der Application) und nicht in der DLL benutze gehts auch. Die Übergabe des Strings geht auch ohne Probleme. und der Rückgabewert ('Fahrer' und '----') geht auch

Der Fehler liegt also im Zugriff von der DLL auf das Datenmodul in der DLL bzw. die Query.

Es klingt kompliziert, ist es auch...

bis denne...

[EDIT]

Zu den Strings und der DLL:
Ich weiß, bin aber durch andere Umstände auf ShareMem angewiesen. Ich brauche Dynamische2D-String-Arrays. Dann sollte (eigentlich) der Datentyp String keine Probleme mehr machen. Tut er auch nicht. Aber danke für den Tip, habe ihn schon vorher beherzigt...

Wenn Du aber eine Bessere Alternative weißt, bin ich immer offen für Vorschläge...
[/EDIT]
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat