Parameter bei CallFunctionFast

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
ralle
Beiträge: 88
Registriert: 29.11.2004 17:50
Wohnort: Berlin

Parameter bei CallFunctionFast

Beitrag von ralle »

Hallo alle zusammen!

Irgendwie steh ich gerade auf dem Schlauch und seh den Wald vor lauter Bäumen nicht. Anbei der Code, als sehr abgespecktes Beispiel, der demonstriert, was ich meine:

Code: Alles auswählen

Structure testS
    *method
    Map testP.s()
EndStructure

*test.testS = AllocateMemory(SizeOf(testS))
InitializeStructure(*test, testS)

Procedure testMapParam(*subtest.testS, Map par.s())
    Debug "nichts"
EndProcedure

*test\method = @testMapParam()

;geht
testMapParam(*test, *test\testP())

;geht beides nicht
;CallFunctionFast(@testMapParam(), *test, *test\testP())
;CallFunctionFast(*test\method, *test, *test\testP())
Die untere Variante führt zu einer Fehlermeldung, während die obere funktioniert? :S
Bild

Kann mir einer sagen, was da falsch läuft?

mfG
Ralle
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Parameter bei CallFunctionFast

Beitrag von edel »

CallFunctionFast erlaubt keine Strings, also setze ein @ vor die Mappe.
Benutzeravatar
ralle
Beiträge: 88
Registriert: 29.11.2004 17:50
Wohnort: Berlin

Re: Parameter bei CallFunctionFast

Beitrag von ralle »

Das @ würde nur das aktuelle Element der Mappe übergeben, was in diesem Beispiel ebenfalls zu einem Fehler führt. Dann werde ich halt die Map auf Zahlen umbauen, die Pointer auf Strings enthalten. Danke für den Tipp hierzu. Thema kann geschlossen werden :)

mfG
Ralle
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Parameter bei CallFunctionFast

Beitrag von ts-soft »

Ich weiß ja nicht, wie oft noch: CallFunction, CallFunctionFast usw. sind nur aus Kompatibilitätsgründen
zu PB 3.xx vorhanden. Sie unterstützen nur Integer oder Pointer und sollten in neuen Codes garnicht
mehr verwendet werden!

Prototypes sind die korrekte Vorgehensweise.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Parameter bei CallFunctionFast

Beitrag von edel »

Ist das eigentlich gewollt, das die Map aus *test noch einmal extra uebergeben wird, also quasi 2 mal?
Benutzeravatar
ralle
Beiträge: 88
Registriert: 29.11.2004 17:50
Wohnort: Berlin

Re: Parameter bei CallFunctionFast

Beitrag von ralle »

War nur zu Testzwecken. Bin den Empfehlungen gefolgt und habe es mit Prototypen umgebaut. Vielen Dank für die Hilfe :)

mfG
Ralle
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Parameter bei CallFunctionFast

Beitrag von Kiffi »

<OT>

@ralle: Kleiner Tipp noch: bmp ist nicht so unbedingt das Format,
welches man für Screenshots verwendet, wenn man sie im INet
zeigen will. Nimm hierfür besser png, jpg oder gif.

</OT>

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
ralle
Beiträge: 88
Registriert: 29.11.2004 17:50
Wohnort: Berlin

Re: Parameter bei CallFunctionFast

Beitrag von ralle »

Kiffi hat geschrieben:<OT>

@ralle: Kleiner Tipp noch: bmp ist nicht so unbedingt das Format,
welches man für Screenshots verwendet, wenn man sie im INet
zeigen will. Nimm hierfür besser png, jpg oder gif.

</OT>

Grüße ... Kiffi
Ach! Blödsinn! Alles feindliche Propaganda! BMP 4 ever!

Nein, Spaß beseite, du hast natürlich recht. Hatte das nur eben fix als Screenshot in das gute, alte Paint reingeworfen und einfach abgespeichert. Habe zugegebener nicht darauf geachtet im welchen Format und bei einem Bild dieser Größe fand ich das jetzt auch nicht weltbewegend ;)

mfG
Ralle

PS: Der Thread darf hier immer noch zu gemacht werden ;)
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: Parameter bei CallFunctionFast

Beitrag von Vera »

Hallo ralle,

Jetzt sehe ich innerhalb weniger Tage zum 3. mal Deine Aufforderung, der Thread könne zugemacht werden.

Was soll zumachen heißen ? etwa sperren ? oder gar vermüllen ?

Wieso willst Du, dass andere Deinen Thread (was es hier eh' nicht gibt) nicht weiter nutzen können oder dürfen, wenn es im Themenzusammenhang passt ? (Sind nicht die gesamten ForenThreads genau dafür gedacht ?)

Leider kann ich Deinen nicht funktionierenden Beispielcode noch nicht verstehen, ebensowenig die folgenden Antworten dazu umsetzen. Schade auch, dass es kein funktionierendes Ergebnisbeispiel gibt, woran man anhand des Unterschieds einiges lernen könnte.
Die Wahscheinlichkeit ist doch groß, dass ich oder andere genau hierzu in Zukunft nochmal nachfragen wollen.

Bitte versteh dies nicht als Angriff, sondern als Einladung, es auch von einem anderen Standpunkt aus zu sehen.

@Alle
[halbOT]
Wäre die Problematik der alten Funtionen (Kompatibilitätsgründe) und der Hinweis auf die korrekte Vorgehensweise (Prototypes) kein Fall für die PureBasic-FAQ ?
Könnte/würde jemand eine geeignete Frage-Antwort-Sequenz dazu erstellen und hier posten ?
Ggf. eine Liste 'Obsoleter Funktionen', wie aktuell hier diskutiert ?
[/halbOT]

Gruß ~ Vera
Zuletzt geändert von Vera am 28.06.2010 11:41, insgesamt 2-mal geändert.
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Parameter bei CallFunctionFast

Beitrag von Nino »

Vera hat geschrieben:[halbOT]
Wäre die Problematik der alten Funtionen (Kompatibilitätsgründe) und der Hinweis auf die korrekte Vorgehensweise (Prototypes) kein Fall für die PureBasic-FAQ ?
Könnte/würde jemand eine geeignete Frage-Antwort-Sequenz dazu erstellen und posten ?
[/halbOT]
Das ist meiner Ansicht nach vor allem ein Fall für die offizielle PB-Dokumentation und für die Compiler-Warnungen, siehe auch http://www.purebasic.fr/german/viewtopi ... 04#p275704

Grüße, Nino
Antworten