Borland7 versus VisualStudio

Borland7 versus VisualStudio

Postby JmGarcia » Fri Mar 11, 2016 10:11 pm

Estoy empezando a querer compilar en 64 bits y me surgen "grandes dudas", a saber:

¿Compila Borland7 en 64 bits? pregunta del millón.
Si la respuesta anterior es afirmativa ¿Que compilador uso: Borland7 o VisualStudio?
¿Hay que usar Harbour o xHarbour?

A primera vista no se me ocurren mas, pero seguro que tendré muchas mas.

Gracias por las respuestas.
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
User avatar
JmGarcia
 
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Re: Borland7 versus VisualStudio

Postby Antonio Linares » Sat Mar 12, 2016 7:09 am

JM,

> ¿Compila Borland7 en 64 bits? pregunta del millón.

Si, pero de momento no lo soportamos. Estamos investigándolo.

> Si la respuesta anterior es afirmativa ¿Que compilador uso: Borland7 o VisualStudio?

Visual Studio

> ¿Hay que usar Harbour o xHarbour?

Harbour
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Borland7 versus VisualStudio

Postby JmGarcia » Sat Mar 12, 2016 10:45 am

Aclarado.

Por el foro he encontrado una respuesta tuya que decía que el Visual Studio 2013 Express es la versión 12.0 (que aparece en los build.bat).

Entonces me he encontrado el la web http://www.visualstudio.com estas versiones:
Community 2013
Ultimate 2013
Premium 2013
Professional 2013
Test Professional 2013
Express 2013 para escritorio
Express 2013 para Web
Express 2013 para Windows

Visual Studio 2013 Update 5


¿De las versiones Express cual me descargo?
¿Es gratis la versión "Express"?

Gracias.
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
User avatar
JmGarcia
 
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Re: Borland7 versus VisualStudio

Postby Antonio Linares » Sat Mar 12, 2016 11:06 pm

JM,

Descarga esta versión:

Express 2013 para escritorio

Es gratuita
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Borland7 versus VisualStudio

Postby JmGarcia » Sat Mar 12, 2016 11:42 pm

Y ya por último una preguntas mas:

Una vez instalado el "Express 2013 para escritorio" ¿sería posible sacar una árbol de directorios "transportable/portable" a otros PCs?, algo así como el BCC (bin, include, lib, etc...) y no tener que reinstalar cada vez.

No se si me he explicado.
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
User avatar
JmGarcia
 
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Re: Borland7 versus VisualStudio

Postby Antonio Linares » Sun Mar 13, 2016 7:21 am

JM,

Eso se podría hacer, de hecho lo haciamos al principio de usar Visual Studio,
pero actualmente mi recomendación es no hacerlo y reinstalar en cada PC.

Es preferible usar la estructura de ficheros y carpetas que el propio Visual Studio crea.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Borland7 versus VisualStudio

Postby JmGarcia » Sun Mar 13, 2016 8:27 pm

OK.

El build64.bat veo que ya tiene los path apuntando a la instalación que hace Visual Studio.
Code: Select all  Expand view  RUN
if exist "%ProgramFiles%\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" call "%ProgramFiles%\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86_amd64
if exist "%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" call "%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86_amd64

Bueno pues listos para la nueva andadura.

Gracias.
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
User avatar
JmGarcia
 
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Re: Borland7 versus VisualStudio

Postby JmGarcia » Tue Mar 15, 2016 10:28 am

Sea como fuere he cogido el directorio VC del Visual Studio y lo he llevado a otro lugar fuera de ProgramFiles y modificando los build.bat apuntando al nuevo path funciona y compila bien.

Solo me queda "desinstalar" el Visual Studio y comprobar que si funciona, son unos 600Mb.

Por cierto: ¿hay forma de saber si un ejecutable es de 32 o 64 bits sin necesidad de ejecutarlo?
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
User avatar
JmGarcia
 
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Re: Borland7 versus VisualStudio

Postby Antonio Linares » Tue Mar 15, 2016 11:04 am

JM,

A ver si te funciona bien, ya nos contarás.

Las cabeceras de los EXEs son diferentes en 32 y 64 bits.

En 64 bits está esta cadena: "This program cannot be run in DOS mode"

En 32 bits aparece esta: "This program must be run under Win32"
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Borland7 versus VisualStudio

Postby JmGarcia » Tue Mar 15, 2016 2:48 pm

Antonio Linares wrote:En 64 bits está esta cadena: "This program cannot be run in DOS mode"
Este mensaje, visto con un editor hexadecimal, me sale en un programa de 32 bits y en otro de 64 bits compilados con Visual Studio.


Antonio Linares wrote:En 32 bits aparece esta: "This program must be run under Win32"
Este mensaje NO me sale en programas de 32 bits ni de 64 bits compilados con Visual Studio. Sin embargo compilado con BCC7, el de 32 bits, si sale este mensaje.


¿El sistema operativo no tiene forma de saberlo con el menú contextual, administrador de procesos...? o alguna herramienta propia del sistema operativo.
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
User avatar
JmGarcia
 
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Re: Borland7 versus VisualStudio

Postby Antonio Linares » Tue Mar 15, 2016 5:54 pm

JM,

Tienes toda la razón, esa cadena es propia del compilador.

Podemos usar esta función de Windows:
https://msdn.microsoft.com/en-us/library/aa364819(VS.85).aspx
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Borland7 versus VisualStudio

Postby JmGarcia » Wed Mar 16, 2016 12:34 pm

Tratando de "wrapear" la función GetBinaryType me encuentro con el problema de no poder definir "un puntero a long o dword" para pasar una variable por referencia. Para strings existe y es la constante LPSTR.

Mirando los ficheros DLL.CH he encontrado las constantes para ello:
Code: Select all  Expand view  RUN
#ifndef _C_TYPES
   #define _C_TYPES
   #define VOID      0
   #define BYTE      1
   #define CHAR      2
   #define WORD      3
#ifdef __CLIPPER__
   #define _INT      4 // conflicts with Clipper Int()
#else
   #define _INT      7
#endif
   #define BOOL      5
   #define HDC       6
   #define LONG      7
   #define STRING    8
   #define LPSTR     9
   #define PTR      10
   #define _DOUBLE  11 // conflicts with BORDER DOUBLE
   #define DWORD    12
   #define LONGLONG 13
#endif
Pero no existe ninguna constante de "puntero a long o dword".

En los "Windows Data Types" https://msdn.microsoft.com/en-us/librar ... 51(v=vs.85).aspx están todos los tipos de variables, pero no me pone su valor de constante. Supongo que será la constante LPLONG o LPDWORD.
La constante LPSTR la define así: A pointer to a null-terminated string of 8-bit Windows (ANSI) characters. For more information, see Character Sets Used By Fonts.
Pero la función dice que tiene que ser LPCTSTR definida como: An LPCWSTR if UNICODE is defined, an LPCSTR otherwise. For more information, see Windows Data Types for Strings.
En el ficheros DLL.CH tampoco tengo el valor de la constante LPCTSTR.

La definición de la función es esta:
Code: Select all  Expand view  RUN
BOOL WINAPI GetBinaryType(
  _In_  LPCTSTR lpApplicationName,
  _Out_ LPDWORD lpBinaryType
);
https://msdn.microsoft.com/en-us/library/aa364819(VS.85).aspx

El wrapeado es:
DLL32 FUNCTION GetBinaryType(cFile AS <no se que poner>, nType AS <no se que poner>) AS LONG PASCAL FROM "GetBinaryTypeW" LIB "Kernel32.dll"
 Por otro lado la dll Kernel32.dll dispone de dos funciones GetBinaryType: GetBinaryTypeA (ANSI) y GetBinaryTypeW (Unicode), y no se cual usar.

¿Se podrían tener todos los valores de los tipos de variables?
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
User avatar
JmGarcia
 
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Re: Borland7 versus VisualStudio

Postby Antonio Linares » Wed Mar 16, 2016 4:27 pm

Prueba asi:

DLL32 FUNCTION GetBinaryType(cFile AS LPSTR, nType AS PTR ) AS LONG PASCAL FROM "GetBinaryTypeA" LIB "Kernel32.dll"

y pasa el valor nType por referencia a la función:

@nType
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Borland7 versus VisualStudio

Postby JmGarcia » Wed Mar 16, 2016 6:17 pm

Antonio Linares wrote:DLL32 FUNCTION GetBinaryType(cFile AS LPSTR, nType AS PTR ) AS LONG PASCAL FROM "GetBinaryTypeA" LIB "Kernel32.dll"
Usando la función GetBinaryTypeA me da el error de "Programa.exe dejo de funcionar...". Usando GetBinaryTypeW funciona el ejecutable pero no hace nada, no me devuelve la variable nType "modificada".
En ambos casos se compila bien. Pasa lo mismo compilado con BCC7 y con VS12.

El código fuente:
Code: Select all  Expand view  RUN
#include "FiveWin.Ch"
FUNCTION main()
public cFichero:="Programa.exe",nTipo:=-1
GetBinaryType(cFichero,@nTipo)
MsgInfo(nTipo,"Tipo de fichero")
return nil
DLL32 FUNCTION GetBinaryType(cFile AS LPSTR, nType AS PTR) AS LONG PASCAL FROM "GetBinaryTypeA" LIB "Kernel32.dll"

Probablemente la única solución sea usando código C puro (#pragma BEGINDUMP .../... #pragma ENDDUMP)
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
User avatar
JmGarcia
 
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Re: Borland7 versus VisualStudio

Postby Antonio Linares » Wed Mar 16, 2016 8:33 pm

JM,

Prueba a quitar la claúsula PASCAL:

DLL32 FUNCTION GetBinaryType(cFile AS LPSTR, nType AS PTR) AS LONG FROM "GetBinaryTypeA" LIB "Kernel32.dll"

y usa GetBinaryTypeA
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 73 guests