AGB  ·  Datenschutz  ·  Impressum  







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

DLL XE4 in Delphi 6 ohne sharemem

Ein Thema von stalkingwolf · begonnen am 6. Apr 2020 · letzter Beitrag vom 9. Apr 2020
Antwort Antwort
stalkingwolf

Registriert seit: 6. Mai 2011
547 Beiträge
 
#1

AW: DLL XE4 in Delphi 6 ohne sharemem

  Alt 9. Apr 2020, 08:38
[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.
  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 01:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz