Seite 4 von 10

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 05.02.2010 17:30
von Josef Sniatecki
Das mit der Lizenz ist so ne Sache. Wenn ich mich nicht täusche, beinhaltet PB-Skript direkte Aufrufe von internen PB-Befehlen. Ist das so, dann würde ich mal schnell umsteigen. :mrgreen: Mit Umsteigen meine ich, dass man z.B. versuchen sollte andere Schnittstellen zu verwenden, wie z.B. WinAPI. Kann sowas nur empfehlen, weil man erstens viel Erfahrung sammelt und einfach das Projekt frei zur verfügung stellen kann.

Bei PalladiumX war das Gleiche Problem. Deshalb haben sich die Bibliotheken demnach auch nach WinAPI orientiert.

Ich selbst (Operno ist meins :D) habe ehrlich gesagt keine so große Sammlung an Bibliotheken, weil ich nun mal kein WinAPI-Guru bin <). Trotzdem habe ich wenigstens Drawing, MIDI und sonstige Features einbauen können, was für mich langt. Außerdem orientiere ich mich eher auf mathematische Problemlösungen.

...
Alle Features von PureBasic mit WinAPI zu programmieren: viel Spaß :mrgreen:... Include ist natürlich nicht schön für jeden, klar... kann ich verstehen (auch wenn ich OpenSource-Freund bin). Und eine UserLib ist auch nicht gerade das handlichste, wenn es um Updates und Mitentwicklung geht. Und Außerdem ist die Nutzung dann nur auf PBler eingeschränkt.

Es liegt in deiner Hand. Vielleicht kannst du ja ein paar WinAPI begabte aufspüren, um Stück für Stück die PB-Bibliothek zu rekonstruieren >:)

Gruß Josef

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 06.02.2010 00:18
von CSHW89
also erstmal alle features von purebasic programmieren, meinte ich nicht die funktionen sondern eher die funktionsweise, datenstrukturen, ect...
denn, also nichts für ungut, aber so libarys wie drawing ect... brauch ich nicht wirklich in einer scriptsprache. sowas brauch ich also nicht selbst zu schreiben. und wenn man wirklich mal so funktionen in seinem script verwenden möchte, kann man sie ja selbst in pbscript integrieren.

so, jetzt ist halt die frage, in wie weit ich funktionen zur verfügung stellen darf. zurzeit hab ich ja nur die str und val funktionen drin. ich denk mal das ist doch wohl kein problem. diese funktionen hat doch wohl jedes programm und jede programmiersprache. die frage ist jetzt, ob ich auch ein paar weitere befehle, z.b. von der string-libary "wrappen" darf? sind ja auch basis-funktionen, die auch fast jede programmiersprache verwendet.

lg kevin

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 06.02.2010 03:01
von c4s
CSHW89 hat geschrieben:die frage ist jetzt, ob ich auch ein paar weitere befehle, z.b. von der string-libary "wrappen" darf? sind ja auch basis-funktionen, die auch fast jede programmiersprache verwendet.
Naja das Problem für dich ist ja, dass die Lizenz von PureBasic jegliches "wrappen" verbietet.
Also prinzipiell ist es nicht erlaubt.

Wenn ich aber folgendes durchlese:
Die PureBasic Lizenz verbietet ausdrücklich die Erstellung von DLL's, deren Hauptfunktion es ist, als ein 'Wrapper' für PureBasic-Funktionen zu dienen.
Kommt mir jedoch in den Sinn, dass die "Hauptfunktion" deines Programmes eben nicht das "wrappen" ist und deswegen einzelne Funktionen beispielsweise der String-Library von dir genutzt werden dürften.

Kontaktiere bei Unklarheiten einfach mal Freak oder Fred, denn die wissen es sicherlich am Besten.

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 23.03.2010 21:20
von CSHW89
So, damit keiner denkt, dass dieses Projekt tot ist, hier ne neue Version.
Hat diesmal etwas länger gedauert. Naja als Student im ersten Semester hat man etwas andere Prioritäten. Ich konnt aber nicht widerstehen, also hier nun die neuen Features.

Version Alpha 0.24
ImScript:
- Die größte Neuerheit: Arrays!! Ein- und Mehrdimensional / auch als Argument in Proceduren / komplett kompatibel zu PureBasic
- Optionale Parameter bei Proceduren
- Möglichkeit einer Startwerzuweisung bei Global/Protected/Define
- Fast alle Funktionen der Math und String-Lib sind nun in PBScript integriert und können im Script benutzt werden, dazu noch ein paar Konstanten (komplette Liste steht in der Hilfe)

- Ein paar neue Funktionen in PBScript, um festzustellen, ob Variablen, die im Script definiert wurden, Arrays sind: PBSGetVariableCollect(), PBSGetVariableDimens(), PBSGetProcedureParamCollect(), PBSGetProcedureParamDimens()
- PBSGetArraySize() das gleiche wie ArraySize() in PureBasic

Ich wollt auch nochmal sagen, es hat auch so lange gedauert, weil ich meine Arrays komplett kompatibel zu PureBasic machen wollte. Deshalb hab ich nicht einfach eine eigene Struktur erfunden, um Arrays zu erstellen (was wesendlich einfacher gewesen wäre), sondern die Arrays so erstellt, wie in PureBasic mit Dim, und das alles mit ASM, obwohl ich von ASM fast keine Ahnung hab. Naja habs geschafft, außer, ach ja, ReDim ist noch nicht integriert. Kommt aber noch.

Zu den Funktionen der Math und String-Lib: Wegen der Lizenz hab ich nachgefragt. Solange es so grundlegende Funktionen bleiben, ist das kein Problem. Und ich hatte ja schon gesagt, das ich nicht weiter gehen will. Also ist alles in Ordnung.

So, das wars erstmal von mir. Fragen, Anregungen, Bugmeldungen: immer her damit.
Dann sag ich mal, ciao und auf wiederschreiben
lg kevin

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 18.04.2010 12:52
von CSHW89
So ich hab gehört, dass PBScript nicht mit PB 4.50 funktioniert. Eigentlich wollte ich noch bis zum FinalRelease warten. Aber da, denk ich, schon viele mit der Beta arbeiten wollen, hier nun die neue Version für PB 4.50.

Version Alpha 0.25
- Arrays musste ich intern etwas umprogrammieren. Ich hoffe da funktioniert auch noch alles.
- Leider ist das Strukturfeld 'string' in PBSValue nun 'Integer', da in StruktureUnion keine Strings und Nummern mehr zusammen stehen dürfen.

Ansonsten hat sich erstmal nichts geändert.
Link steht im ersten Post. Hab auch zusätzlich noch die Version für 4.40 noch online.
mfg Kevin

PS: Ich gekomme zur Zeit nur die Version 0.24 gedownloadet. Ich hoffe das liegt nur daran, dass die Datei noch im Cache ist. Schaut mal bitte in der Hilfe nach, obs die neue Version ist.
edit: hat sich erledigt, funktioniert!

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 18.04.2010 14:00
von famous
wenn ich proceduren die ich verlink als string definiere stürzt es ab :o

Procedure.s etwas()
EndProcedure

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 18.04.2010 14:13
von CSHW89
Hm, bei mir nicht.
Wenn du eine Procedure von PureBasic in das Script verlinken willst, muss die Defnition im Script genau die gleiche sein, wie die in PureBasic. Vielleicht liegt es daran.
Falls nicht, gib mir mal den Code.

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 18.04.2010 14:20
von famous
also hier wird sie registriert

Code: Alles auswählen

PBSSetProcedureAdress(0, "GetUserName",  @CommandGetUserName_())
und hier die funktion an sich

Code: Alles auswählen

Procedure.s CommandGetUserName_()
  ProcedureReturn GetUserName()
EndProcedure
im skript wurde sie so registriert

Code: Alles auswählen

Procedure.s GetUserName()
EndProcedure
wenn ich debugge erhalte ich ein IMA

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 18.04.2010 14:58
von CSHW89
ok, scheint wirklich ein bug zu sein, wenn die procedure keine parameter besitzt. den fehler hatte ich schon mal in einer meiner ersten versionen. ging dann aber. hmm, mal sehen, werd ich mir mal heute ansehen.
hier mit parameter gehts:

Code: Alles auswählen

Define string.s
Define *bytecode
Define value.PBSValue

Procedure.s CommandGetUserName_(a.i)
  ProcedureReturn "Hallo"
EndProcedure

string = #LF$
string + "Procedure.s GetUserName(a.i)"+#LF$
string + "EndProcedure"+#LF$
string + ""+#LF$
string + "Global val.s = GetUserName(0)"+#LF$

*bytecode = PBSCompileScriptString(string)
If (*bytecode = #Null)
  MessageRequester("Compiler-Error", PBSGetErrorText())
  End
EndIf

If PBSOpenByteMemory(0, *bytecode)
  PBSSetProcedureAdress(0, "GetUserName", @CommandGetUserName_())
  
  PBSStartByteCode(0)
  Debug PBSGetVariableString(0, "val")
  
  PBSCloseByteScript(0)
EndIf

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 18.04.2010 15:06
von famous
um es ohne parameter zu umgehen kann man nur den parameter als
option setzen also

Code: Alles auswählen

Procedure.s GetUserName(p1=0)
was ich allerdings nicht schlecht finden würde wenn man proceduren
nicht extra noch im skript deklarieren müsste

edit: um das für alle möglichen spiele gängig zu machen wäre vll nicht
schlecht wenn man zeichen und schlüsselwörter umstellen könnte. zb
statt ein string mit "Hallo" ein string mit 'Hallo' oder statt Procedure Function :)