Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - hardyx

No replies :'(  :'(
I have GLBasic v15 and works ok, but I can't update to version 15.005, the update works but the version remains in 15.004. I don't know if the next error is fixed in the 15.005 update. This can be related with this other post:

The bug occurs compiling a TYPE in my code. It's normal code not using inline C++.

Code (glbasic) Select
// type with some functions
TYPE Dialogos
            // some code...
        // more functions...

Code (glbasic) Select
*** Configuration: WIN32 ***
GPC - GLBasic Precompiler V.14.721
Wordcount:877 commands
In file included from C:\Users\FJMONT~1\AppData\Local\Temp\glbasic\gpc_temp0.cpp:1:
C:\Users\FJMONT~1\AppData\Local\Temp\glbasic\gpc_temp.h: In constructor `__GLBASIC__::Dialogos::Dialogos()':
C:\Users\FJMONT~1\AppData\Local\Temp\glbasic\gpc_temp.h:54: error: expected identifier before '{' token
C:\Users\FJMONT~1\AppData\Local\Temp\glbasic\gpc_temp.h:54: error: expected `(' before '{' token

(Many error lines like the last three....)

Looking at the generated code (gpc_temp.h) I can see the compiling error:

Code (glbasic) Select
class Dialogos
        // some code here ...
Dialogos(): // <--- this is bad

        // more code here...

The generated code fails because the ":" should not be there. This happens because my TYPE have not any member variables in it. If I put a dummy variable in the TYPE like this, the code compiles and links Ok. This "patch" must be done in each TYPE that does not have variables.

Code (glbasic) Select
TYPE Dialogos
dummy% // fix glb15 fail

        // class with some functions and no variables
            // some code...
        // more functions...

The generated code is good now and compiles without errors:
Code (glbasic) Select

class Dialogos
Dialogos(): // <-- this is ok now


I hope this can be fixed.
Nuevamente siento responder tarde.

CodeBlocks en Windows usa por defecto el compilador MINGW, que es un port de GCC. Este compilador creo que no define nada en modo debug, con lo cual tendrías que definirlo a mano en las "build properties" de Debug con la pestaña "#defines" poner _DEBUG por ejemplo. También puedes mirar las propiedades del compilador (CBlocks permite usar muchos compiladores), en la parte de build properties > compile options > #defines.

Estos defines te sonarán de Visual C++, pero GCC no define nada y depende de la implementación del sistema. GCC está implementado en muchos sistemas (Windows, Linux y todo tipo de aparatos).
Siento responder tarde, no había visto el tema.

Está bien para simular constructores y destructores en GLB, obviamente no son los de C++ porque GLB no tiene esto, para ello habría que crear código inline. Pero no hace falta devolver el propio objeto si no se va a usar el resultado, ya que puedes cambiar el propio objeto, a no ser que quieras usarlas en asignaciones o de otra forma.

P.D. Los constructores y destructores de C++ no tienen tipo, si tuvieran sería void.

Code (glbasic) Select

        FUNCTION Constructor:
                DEBUG "Constructor: " + "\n"

        FUNCTION Destructor:
                DIM self.axis[0]
                DEBUG "Memory Free: " + "\n"
                DEBUG "LEN        : " + LEN(self.axis) + "\n"

Off Topic / Re: CRPG Book
Cool book, RPG is my favourite genre in computer games. The book looks very complete and good for retro adventures lovers.  :good: :good:
Thanks for the release space!!! I'm suppose the GLB_ON_LOOP will be the game loop now.
Thanks for your good job.
Thank you for your GLB contributions spacefractal. I wish you have success in your games for Steam. Apple change the things every year with new hardware and software and it's not easy. I had to buy another Mac mini two years ago. I have to finish my games and make more this year.
En GLBasic los arrays son objetos, y por eso se usan referencias.

En C y C++ los arrays son punteros al primer elemento, es decir es igual poner "int enteros[]", que "int *enteros". Cuando se pasa un array a una función realmente estás pasando un puntero al inicio y el tipo de los elementos, que ya lo sabe el compilador por la función. Al pasar la dirección, no hay copia y si cambias el array en la función cambias el array original. Por eso C/C++ es tan eficiente, si se usa bien claro, aunque también puedes liarla bien :D

El operador &, delante de una variable da la dirección, pero delante de un parámetro de función en C++ permite pasar una referencia. No uses la referencia con arrays en parámetros de función, sino un puntero al tipo de elemento. Por ejemplo: int GetMediaValores(int *valores) { .... }, dentro de la función usarías valores[indice] normalmente, ya que un array es un puntero.

Por ejemplo, en la función scanf se pasan punteros (&) a los valores a rellenar, pues bien cuando se usan cadenas, que son arrays de carácteres no hay que poner el & porque una cadena ya es una dirección, es decir un puntero a su primer carácter.

Code (glbasic) Select
  int edad;
  char nombre[100];

  printf("Dime tu nombre:");
  scanf("%s", nombre);    // <-- no va con &
  printf("Dime tu edad:");
  scanf("%d", &numero);    // <-- si va con &
  printf("Hola %s", nombre);

No me suena eso, aunq nosotros lo tenemos todo en nativo. Asegurate de q usas los permisos de lectura y escritura en sd en el manifest. Si usas el target 19 te da todos los permisos sin preguntar, ya q es como una emulacion de lo q hacia antes.
Somos cuatro gatos, yo soy el cuarto gato :D.

Yo trabajo con Android y en la versión 6 han cambiado muchas cosas, la han liado a lo grande. Ahora las apps necesitan permisos y han quitado librerías de red obsoletas. No tengo telefonos con el 6, pero te puedo decir que pongas en el manifest.xml targetSdkVersion="19" que es el Android 4.4 y te va a funcionar en todas las versiones. Porque como pongas el último target (api 23) vas a tener que cambiar tu app de arriba a abajo solicitando permisos cada vez que uses la cámara, el GPS, y mil historias más.

Aqui tienes más info de los cambios:
Some editors like Visual Studio marks the new code you typed in differente colour, and you can see the new code you added. Some editors like XCode too uses a "version control system" like Subversion or Git and allows to connect your code with the repository (archive) where your stable code is, and marks the differences between your new code and your last version.

If you use a control version system like Git or SVN (this is easiest for begginers), you can do this and more. You can experiment with your code and work in many features (branches) at once without affect other features and go back if you mess a lot your code, and compare between versions.

If you don't want to complicate with version systems, you can do "manually" too, but it's more work. You can archive in other folder the stable version you make, and you can experiment with the code and see the differences with file and directory compare tools like WinMerge.

For example you can have this folders to archive selected versions of your code:

-- Mygame.2016.10.03.appstore
-- MyGame.2016.01.06.stable
-- MyGame.2016.05.06.ship.developing

Quote from: spacefractal on 2015-Sep-20
As some of your have spotted, im got a free Apple TV Dev Kit and have finally got Greedy Mouse running on it (but is totally unplayable yet, but its launched and do display the graphics correctly).

So glbasic next new platform will been TVos.

Also tvOS xCode project is NOT compatible with iOS, but most of the code base is the same.
It was free??? OMG I cancelled the reserve!!!

Thanks to Gernot and all the people working in this.
HTML5 is the future and the succesor of the hyper-bloated Flash. Assembly for the web is a reduced subset of Javascript wich can be executed faster than full featured and object-oriented Javascript. But it's the same: HTML5 is a document language that needs Javascript. You can't program in HTML5 because it's a document format. It's like if you say "I program in Microsoft DOCX format"  =D

HTML5     ---> document description
Javascript ---> actions, algorithms
WebAssembly ---> fast subset of Javascript
Apple combines iOS and Mac developer programs into single Apple Developer Program
Existing members accounts will be converted to the new developer program.

Good news for devs.
Ah, es verdad que lo tiene, gracias. Yo hacía pixelart cutrecillo, con sprites de 8x8 y 16x16, pero ahora tienen demasiada resolución los dispositivos. =D