[QUOTE=Blup;1461590]
Bei WideString wird der Speicher von Windows verwaltet. Das ist langsamer, aber das fällt in der Regel kaum ins Gewicht.
Bei WideString bekomme ich eine Zugriffsverletzung, sobald ich die
DLL Funktion aufrufe.
Selbstverständlich müssen dann beide Seiten die Funktionen bzw. Parameter und Rückgabewerte mit WideString delarieren und verwenden (
DLL und Anwendung).
Das ist klar. Kracht dennoch.
Ich hab auch schmerzlich feststellen müssen, das scheinbar die Länge von Records begrenzt ist ... wir hatten hier so ein Monster von 150 shortstrings. Der kam nicht ganz auf der anderen Seite an
Wer macht den so was? Wenn es sich um konstante Strings handelt, kann man diese als Resoutce in der
DLL anlegen.
Die Anwendung soll gezielt den String aus der
DLL laden, der gerade benötigt wird.
Allternativ eine CallBack-Funktion als Parameter übergeben, die dem gerade benötigten String bei Bedarf bereitstellt.
Der Grund ist das dieser riesige Record damals wegen unser
BPL erstellt wurde. Es werden alle nötigen Daten hineingepackt und dann der Record an die
BPL übergeben, da diese nicht auf Datenbank zugreifen kann. und so wurde das Ding immer größer und größer und war dann irgendwann dieses Monster.
Klar man hat es sich zu einfach gemacht.
Ich bin mir aber ganz sicher dass es nicht am Record selbst lag, denn eine Grenze gibt es nicht.
Record als CONST-Parameter (oder VAR) wird nur als Referenz übergeben, also garnichts kopiert.
Doch es kam nur ca 1/3 an. Nichts verschoben oder ähnliches. Wie gesagt für unsere
BPL funktioniert das.
Ich habe den Record zerlegt mit exakt den gleichen Typen und dann kommt auf der anderen Seite alles an, wenn ich jeden Rekord einzeln übergebe.
Mittlerweile funktioniert alles so wie ich es will.