Procedure als Parameter

Für allgemeine Fragen zur Programmierung mit PureBasic.
Skiller
Beiträge: 151
Registriert: 04.02.2005 22:26

Procedure als Parameter

Beitrag von Skiller »

Hallo Folks,

Zwecks Alt-Kunden Betreuung, wollte ich einige VFP9-Funktionen nach PB übertragen. Ich hatte schon einmal eine ähnliche Frage gestellt; war aber nicht deutlich genug erklärt. Daher an dieser Stelle noch einmal mit zwei Fragen:

1. In VFP ist folgendes möglich:

Code: Alles auswählen

    ;Macrosyntax
    x = "Fox"
    ? "&x.Pro"
    
    Ausgabe: FoxPro
Beispiel: FoxPro

Code: Alles auswählen

_Standard_Func(3,'My_Func_1("A")')
_Standard_Func(5,'My_Func_2("B",i)')

Procedure _Standard_Func(x, My_Func)
  LOCAL i
  For i = 1 To x
    &My_Func  ;Macro 
  Next
EndProc

Procedure My_Func_1(cVal)
  ?  cVal
EndProc

Procedure My_Func_2(cVal, nVal)
  ?  cVal, nVal
ENDPROC


Ausgabe: A A A   B1 B2 B3 B4 B5
Ist das in PB übertragbar?

2.) Weiss jemand wie ich eine VFP9.DLL in PB einbinden kann?

Besten DANK!! :)
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Procedure als Parameter

Beitrag von Kiffi »

Skiller hat geschrieben:Ist das in PB übertragbar?
ja, ist es. Schau Dir hierfür die Runtime-Funktionen an.

Grüße ... Peter
Hygge
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Procedure als Parameter

Beitrag von NicTheQuick »

Also wenn das 1:1 so übertragbar ist, dann staune ich Bauklötze. Lambda-Funktionen kann Purebasic meines Wissens nach nämlich nicht.
Bild
Andesdaf
Moderator
Beiträge: 2658
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Procedure als Parameter

Beitrag von Andesdaf »

du kannst zwar eine Procedure als Text übergeben, aber nicht deren Parameter.

Viel mehr als Folgendes ist nicht möglich:

Code: Alles auswählen

EnableExplicit

Prototype.i My_Func(cVal.s, nVal.i)

Runtime Procedure My_Func_1(cVal.s, nVal.i)
  Debug cVal
EndProcedure

Runtime Procedure My_Func_2(cVal.s, nVal.i)
  Debug cVal + Str(nVal)
EndProcedure

Procedure _Standard_Func(x.i, My_Func.s)
  Protected Func.My_Func
  Protected.i i
  
  Func = GetRuntimeInteger(My_Func)
  
  For i = 1 To x
    Func("A", i)
  Next i
  
EndProcedure

_Standard_Func(3, "My_Func_1()")
_Standard_Func(5, "My_Func_2()")
Win11 x64 | PB 6.00 (x64)
Skiller
Beiträge: 151
Registriert: 04.02.2005 22:26

Re: Procedure als Parameter

Beitrag von Skiller »

Sorry für die Verspätung. DANKE!! :)
Antworten