Seite 1 von 1

Call Parameter

Verfasst: 19.06.2009 11:03
von PeterJ
... und gleich noch eine dumme Frage:

Bei einem Call auf eine Procedure werden, z.B. String Parameter als Call by Value oder Call by Reference übergeben. Sprich wird die Adresse oder eine Kopie des Wertes übergeben. Wie auch bei meiner vorherigen Frage, ich möchte große TCP Buffer weiterverarbeiten. Wenn für einen Call jeweils eine Kopie erstellt, kann das auch zu langsam sein, ich müßte dann die @buffer Adresse und Länge übergeben.

Peter

Verfasst: 19.06.2009 11:24
von iostream
ich müßte dann die @buffer Adresse und Länge übergeben
Bei großen Datenmengen (u.a Strings) übergebe ich meistens Zeiger, weil es sonst mit byval event. länger dauert.
Eigentlich reicht auch nur die Adresse des Buffers, die Länge bekommst du auch so raus:

Code: Alles auswählen

Len(PeekS(*buffer))

Verfasst: 19.06.2009 12:17
von Kaeru Gaman
bei deinen ersten beiden sätzen sollten fragezeichen stehen statt punkten?


Strings werden prinzipiell byRef übergeben, die "StringVariablen" in PB sind pointer, PB verwaltet Strings in einem Pool.
aber für Proceduren werden natürlich lokale Kopien erstellt.

musst mal im Forum suchen, wie man den pointer auf den eigentlichen String korrekt ermittelt,
ein einfacher pointer wie bei einer numerischen Variablen wäre nicht ein pointer zum Inhalt sondern ein pointer zum poolpointer.