AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi DLL Programmierung - Wie übergebe ich am sinnvollsten meine Daten?
Thema durchsuchen
Ansicht
Themen-Optionen

DLL Programmierung - Wie übergebe ich am sinnvollsten meine Daten?

Offene Frage von "MyRealName"
Ein Thema von Aviator · begonnen am 30. Sep 2016 · letzter Beitrag vom 13. Okt 2016
Antwort Antwort
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: DLL Programmierung - Wie übergebe ich am sinnvollsten meine Daten?

  Alt 11. Okt 2016, 19:10
Ähmmm....ich bin zwar schon einige Zeit raus aus Delphi (fang grad wieder damit an), aber ist das nicht etwas kompliziert und aufwendig ?

Ich würde banalerweise einfach eine Unit machen, die die entsprechenden Record deklarationen enthält,
die sowohl in der DLL, als auch im Programm mit einbinden und dann das ganze ist gelutscht ?


Beispiel:

Code:
Unit SharedTypes;

INTERFACE

TYPE

   pUser = ^TUser;
   TUser = record
              Username : widestring;
              Loginname: widerstring;
              {und was halt noch so rein soll} 
           end
Die Funktionen der DLL geben einfach pUser als Rückgabewert zurück. Und damit kannst du ganz
normal im Hauptprogramm arbeiten....


oder überseh ich da was ?
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: DLL Programmierung - Wie übergebe ich am sinnvollsten meine Daten?

  Alt 11. Okt 2016, 19:35
So habe ich es ja aktuell. Nur Blup meinte ja das, wenn man schon mit Interfaces arbeitet, auch gleich alles mit Interfaces machen sollte. Um das mal vereinfacht auszudrücken. So wollte ich das dann machen.

Aktuell habe ich ja alles mit Records aufgebaut. Das funktioniert auch.

Nur würde mich jetzt interessieren wie es mit Interfaces funktioniert wenn ich schon den Vorschlag gemacht bekomme. So ganz habe ich das System noch nicht durchschaut.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.493 Beiträge
 
Delphi 12 Athens
 
#3

AW: DLL Programmierung - Wie übergebe ich am sinnvollsten meine Daten?

  Alt 12. Okt 2016, 09:49
Mir ist nicht klar warum du mit PWideChar arbeiten willst, aber nicht mit WideString.
In neueren Delphiversionen ist String = UnicodeString definiert. Einer direkten Zuweisung im Setter oder Getter steht da nichts im Wege.
Um die Speicherverwaltung und Typkonvertierung sollte sich Delphi doch eigentlich selbst kümmern?
Delphi-Quellcode:
  IDMSUserExchange = interface(IInterface)
  [GUID]
    function GetUserName: WideString;
    procedure SetUserName(const AValue: WideString);
    property UserName: WideString read GetUserName write SetUserName;
  end;

   TDMSInternalUserData = class(TInterfacedObject, IDMSUserExchange)
   private
     FUserName: string; // <-- Hier string
   protected
{$REGION 'IDMSUserExchange'}
     function GetUserName: WideString;
     procedure SetUserName(const AValue: WideString);
{$ENDREGION}
   end;

implementation
   
function TDMSInternalUserData.GetUserName: WideString;
begin
  Result := FUserName;
end;
 
procedure TDMSInternalUserData.SetUserName(const AValue: WideString);
begin
  FUserName := AValue;
end;

procedure TuWasMitUserData(AUserData: IDMSUserExchange; const AValue: string);
begin
  AUserData.UserName := AValue;
end;
Wenn die Arbeit mit Objekten sein muss, kannst du aber für die Objekte Properties definieren, die andere Typen zur Verfügung stellen als das Interface.
Ich sehe dafür aber keine Notwendigkeit.
Delphi-Quellcode:
   TDMSInternalUserData = class(TInterfacedObject, IDMSUserExchange)
   private
     FUserName: string; // <-- Hier string
   protected
{$REGION 'IDMSUserExchange'}
     function GetUserName: WideString;
     procedure SetUserName(const AValue: WideString);
{$ENDREGION}
   public
     property UserName: string read FUserName write FUserName;
   end;

Geändert von Blup (12. Okt 2016 um 11:32 Uhr) Grund: Interface-Deklaration ergänzt
  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 18:14 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-2025 by Thomas Breitkreuz