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
 
Blup

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

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

  Alt 12. Okt 2016, 10: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 12:32 Uhr) Grund: Interface-Deklaration ergänzt
  Mit Zitat antworten Zitat
 


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 14:54 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