AGB  ·  Datenschutz  ·  Impressum  







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

DLL Rückgabe Limitationen

Ein Thema von diabox · begonnen am 14. Jun 2007 · letzter Beitrag vom 15. Jun 2007
Antwort Antwort
Benutzerbild von diabox
diabox

Registriert seit: 13. Sep 2006
61 Beiträge
 
Delphi 2010 Professional
 
#1

DLL Rückgabe Limitationen

  Alt 14. Jun 2007, 17:43
Wie schon oft in diesem Forum erwähnt, verpflichtet ein ShortString ja dazu mit 255 Zeichen auszukommen. Jetzt gibt meine DLL-Funktion aber ein Record zurück, dass sich aus 3 ShortStrings zusammensetzt:


Delphi-Quellcode:
TMeinRecord = packed Record
 a,b,c: ShortString;
 WeitereDaten: Pointer;
End;

1. Wenn jetzt a,b und c jeweils 100 zeichen habe, bekomme ich dann schon Probleme?
2. Gibt es andere Einschränkungen, an die ich mich halten muss:
Weil ich momentan (ein und die selbe Definitionsunit sowohl für Plugin als auch für die Anwendung) ein solches Record verwende, jedoch immer die letzte ShortString-Variable einen komischen Wert enthält (in diesem Fall hätten a und b den Wert den ich ihnen gegeben habe, c allerdings enthält z.B. Ø). Möglicherweise ist die Lösung ganz einfach, aber ich komm nicht drauf.
Wer zweifelt, detoniert nicht!'
Dieter Nuhr
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: DLL Rückgabe Limitationen

  Alt 14. Jun 2007, 18:52
so bekommst du keine probleme. Das Problem sind nämlich nicht die > 255 Byte sondern das Speichermanagement von großen Strings. Genauer gesagt die 2 Speichermanager, der in der DLL und der im Hauptprogramm. Durch die ShareMem wird daraus 1 Speichermanager. Wenn man ohne die sharemem auskommen will muss man also auf die einfachten typen ausweichen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#3

Re: DLL Rückgabe Limitationen

  Alt 14. Jun 2007, 19:28
Du kannst auch auf einen WideString ausweichen. So bist du gewappnet für Unicode, aber außerdem wird dieser Typ von Windows verwaltet.
Ein ander Punkt wäre es den Record vielleicht gegen ein Interface zu ersetzen.
Das gibt dir mehr Flexibilität und eine gewisse Ausbaufähigkeit.
Du kannst in Version 2 von dem Interface ableiten und mehr Methoden zur Verfügung stellen. Konsumenten von Version 1 werden davon nichts mitbekommen.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von diabox
diabox

Registriert seit: 13. Sep 2006
61 Beiträge
 
Delphi 2010 Professional
 
#4

Re: DLL Rückgabe Limitationen

  Alt 15. Jun 2007, 17:25
Vielen Dank für die Antworten.

Erstmal zum WideString: Wenn ich einfach die string- durch WideString-Variablen ersetze, bekomme ich zwar keinerlei Fehler, Warnungen oder Hinweise, aber wenn ich die Rückgabewerte dann in der Hauptanwendung einlese, sind die strings leer...

Zu den Inferaces: Wenn ich das richtig sehe bietet mir doch ein Interface nur die Möglichkeiten Funktionen weiterzugeben, ist also irgendwie nicht mit einem Record zu verlgeichen. Trotzdem gefällt mir die Idee der Ausbaufähigkeit (das hatte ich bisher noch nicht in Betracht gezogen). Wäre das bei einem Record denn nicht möglich? Tut mir Leid wenn ich mich etwas dumm anstelle, aber habe noch nie mit Interfaces gearbeitet. Hoffe ihr könnt mir ein bisschen auf die Sprünge helfen.
Wer zweifelt, detoniert nicht!'
Dieter Nuhr
  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 19:48 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