![]() |
Funktion richtig definieren???
Hallo!
Habe eine Anfänger-Frage. :-) Mit IdHTTP bekomme ich den HTML-Code einer Seite in eine String-Variable; Dann werden nacheinander mehrere Funktionen ausgeführt, die alle als Parameter diese Variable mit Code erhalten. Keine der Funktionen ändert die Variable, es wird nur gelesen. Wie soll ich den Parameter am besten übergeben, um nicht unnötig Speicher zu verbrauchen? Ich meine, wenn ich es einfach so übergebe
Delphi-Quellcode:
wird ja bei jedem Funkionsaufruf neue Varible erstellt, den Inhalt des übergebenen Strings dorthin kopiert und unnötig speicher verwedet, oder? Verstehe ich es richtig, dass wenn ich const vor dem Parameter setzte mit der übergebenen Vriable gearbeitet wird, statt eine neue zu erstellen?
function GetData1(ASource: string): string;
function GetData2(ASource: string): string; ...
Delphi-Quellcode:
function GetData1(const ASource: string): string;
function GetData2(const ASource: string): string; ... |
Re: Funktion richtig definieren???
Richtig, durch das const wird keine lokale Kopie erzeugt, sondern das Original übernommen.
|
Re: Funktion richtig definieren???
Danke! Das wollte ich wissen.
|
Re: Funktion richtig definieren???
außer bei Integer und kleineren Typen ... da isses meißt egal, da dort nicht die Referenz übergeben wird, sondern der Inhalt. (außer bei VAR und OUT)
|
Re: Funktion richtig definieren???
Auch beim String ist das egal, Referenzzählung sei Dank. Bei Strings und Interfaces bewirkt const lediglich, dass der Referenzzähler nicht am Anfang erhöht und am Ende dekrementiert wird.
|
Re: Funktion richtig definieren???
@Apollonius: aber z.B. WideString hat keine Referenzzählung :stupid:
|
Re: Funktion richtig definieren???
Stimmt. Aber String steht in keiner Delphi-Version für WideString.
|
Re: Funktion richtig definieren???
Zitat:
Aber das war eigentlich mehr allgemein zu Parametern gedacht :angel2: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:20 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