AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

IInterface Delphi vs VSC

Ein Thema von EWeiss · begonnen am 2. Aug 2017 · letzter Beitrag vom 10. Aug 2017
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
EWeiss
(Gast)

n/a Beiträge
 
#1

IInterface Delphi vs VSC

  Alt 2. Aug 2017, 15:49
Delphi.
Delphi-Quellcode:
  TStreamInfo = record
    streamType: TStreamType;
    ppmt: PAMMEDIATYPE;
    pdwFlags: Cardinal;
    plcid: Cardinal;
    pdwGroup: Cardinal;
    ppszName: PWideChar;
    ppObject: IInterface;
    ppUnk: IInterface;
  end;
C++
Code:
struct TStreamInfo {
  TStreamType streamType;
  AM_MEDIA_TYPE ppmt;
  unsigned int pdwFlags;
  unsigned int plcid;
  unsigned int pdwGroup;
  wchar_t* ppszName;
  IUnknown **ppObject;
  IUnknown **ppUnk;
};
Bin mir jetzt nicht sicher ob die Übersetzung im Header korrekt ist.
C kennt kein IInterface so wie in Delphi oder aber ich finde sie einfach nicht.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#2

AW: IInterface Delphi vs VSC

  Alt 2. Aug 2017, 16:27
IUnknown kennt Delphi auch,
aber fast Egal, da es ein Nachfahre von IInterface ist.



Erstmal mußt du auf die Speicherausrichtung achten:
Alte Delphis richten Standardmäßig nach "maximal" 4 Byte aus und etwas Neuere nach 8 Byte.
Wie im C dort der Standard ist, weiß ich nicht.

Also entweder das gleiche Align des C-Compilers explizit für diesen Record oder die ganze Unit einstellen.
{$ALIGN ...}

Oder Packed-Records verwenden.
Auf Seite des C auch Packed oder im Delphi mit FüllBytes arbeiten.



Speichergrößen:
In C++ sind ENUMs/SETs gern so groß wie ein INT
und in Delphi so klein wie möglich (meistens Byte und dann Word, LongWord oder UInt64).
{$MINENUMSIZE ...}
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 2. Aug 2017 um 16:30 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: IInterface Delphi vs VSC

  Alt 2. Aug 2017, 16:35
es ging mir um die beiden Einträge.

Code:
  IUnknown **ppObject;
  IUnknown **ppUnk;
ob diese gleichzusetzen sind mit IInterface.
Wenn nicht ist mein Header definitiv falsch übersetzt.

gruss
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.058 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: IInterface Delphi vs VSC

  Alt 2. Aug 2017, 17:09
Ja!
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: IInterface Delphi vs VSC

  Alt 2. Aug 2017, 17:14
Danke!

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#6

AW: IInterface Delphi vs VSC

  Alt 2. Aug 2017, 17:16
IUnknown kennt Delphi auch,
aber fast Egal, da es ein Nachfahre von IInterface ist.
hier steht nichts
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: IInterface Delphi vs VSC

  Alt 2. Aug 2017, 18:06
IUnknown kennt Delphi auch,
aber fast Egal, da es ein Nachfahre von IInterface ist.
hier steht nichts
Ja habe ich gelesen Danke dir.
War mir nur nicht sicher ob du damit das gleiche gemeint hast.

Da steht doch was spätestens dann wenn man eine Quote daraus macht LOL

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#8

AW: IInterface Delphi vs VSC

  Alt 2. Aug 2017, 19:37
Zitat aus der System.pas
Zitat:
Delphi-Quellcode:
type
  IUnknown = IInterface;
Vom Typ her ist es prizipiell das Selbe, in Delphi.
http://docwiki.embarcadero.com/RADSt...und_IInterface
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 2. Aug 2017 um 19:40 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: IInterface Delphi vs VSC

  Alt 2. Aug 2017, 19:41
Zitat aus der System.pas
Zitat:
Delphi-Quellcode:
type
  IUnknown = IInterface;
Hatte vorhin wohl mehr an IDispatch gedacht.
Von der Speicherverwaltung her das Gleiche, außer dass man quasi virtuelle Methoden aufrufen kann, also wenn man das Interface verwendet.
(IDispatch in einem Variant\OleVariant)
Die frage ist nur wird das IUnknown auch initialisiert VSC seite.
So wie das bei IInterface in Delphi ist.

also.
Ich habe diese Funktionen in der art in meinem Header nicht.
Code:
 virtual HRESULT __stdcall QueryInterface(const GUID &IID, void **Obj)
 {
     return TInterfacedObject::QueryInterface(IID, (void *)Obj);
 
 
 virtual ULONG __stdcall AddRef()
 { 
     return TInterfacedObject::_AddRef();
 } 
 
 // ...
 virtual ULONG __stdcall Release()
 { 
     return TInterfacedObject::_Release();
 }
Wird das in VSC automatisch gemacht wenn ich IUnknown als DatenTyp übergebe?

gruss

Geändert von EWeiss ( 2. Aug 2017 um 19:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#10

AW: IInterface Delphi vs VSC

  Alt 2. Aug 2017, 19:53
Das ist im IInterface drin.

Bzw. dein Code gehört nicht zum Interface, sondern zur Implementation und da ist es unter Anderem in TInterfacedObject enthalten.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:45 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