AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi ByRef/ByVal übergaben von Widestring in Com-Objekt?
Thema durchsuchen
Ansicht
Themen-Optionen

ByRef/ByVal übergaben von Widestring in Com-Objekt?

Ein Thema von Icemanemp · begonnen am 6. Okt 2005 · letzter Beitrag vom 6. Okt 2005
Antwort Antwort
Icemanemp

Registriert seit: 28. Mai 2004
Ort: immer dem Pfeil nach --->
26 Beiträge
 
Delphi 5 Enterprise
 
#1

ByRef/ByVal übergaben von Widestring in Com-Objekt?

  Alt 6. Okt 2005, 12:31
Hi,

mich würde gerne folgendes interessieren!
Ich habe ein Com-Objekt, das per Get-Set-Methoden String intern speichert.
Die Daten kommen aus einer TQuery bzw. den TFields der Query.

GetAsString sollte ja ein AnsiString liefern.
Die Set-Methode des Com-Objektes hat ein Widestring.

Macht es Performancetechnisch etwas aus die Parameterübergabe der Set-Methode mit const zu deklarieren oder bringt das nichts, da Widestring intern ja so oder so ein Referenzzähler hat und keine Kopien anlegt?

P.S. die Set-Methode wird z.Z. etwas 2000 aufgerufen, wegen den vielen Datensätzen...

Danke
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: ByRef/ByVal übergaben von Widestring in Com-Objekt?

  Alt 6. Okt 2005, 12:54
Widestrings als Const zu definieren bringt sehr wohl was (Referenzzählung wird bei Widestrings in Delphi nicht verwendet.
Jedoch weiß ich nicht ob bei der Setter-Methode einfach die Methodensignatur ändern darfst und ob damit die Methode noch als Setter erkannt wird.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#3

Re: ByRef/ByVal übergaben von Widestring in Com-Objekt?

  Alt 6. Okt 2005, 14:20
Zitat:
da Widestring intern ja so oder so ein Referenzzähler hat und keine Kopien anlegt?
Widestring hat keine Referenzzählung, also macht es meiner Meinung nach keinen Unterschied ob der Parameter als const oder nicht deklariert wurde.

Wird der Parameter nicht intern geändert so solltest du denoch diesen als const deklarieren, einfach der Sauberkeit halber.

als var kann man diese Methode nicht mehr als Setter benutzen.

Intern, falls du im Source mit LongStrings arbeitest, wird der WideString autom. per Kopierung in einen LongString umgewandelt. Der Overhead der Allokation/Deallokation von WideStrings ist ebenfalls nicht unerheblich da dies durch die OLE32 DLL erfolgt.

Ich benutze aber ebenfalls in meinen Interfaces WideStrings da sie komplatibel sind, im Gegensatz zu LongStrings.

Gruß Hagen
  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 16:41 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