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?