Call Parameter

Anfängerfragen zum Programmieren mit PureBasic.
PeterJ
Beiträge: 28
Registriert: 05.02.2009 21:15

Call Parameter

Beitrag 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
iostream
Beiträge: 109
Registriert: 15.06.2008 12:59

Beitrag 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))
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten