FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Borland7 versus VisualStudio
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Borland7 versus VisualStudio
Posted: 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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Borland7 versus VisualStudio
Posted: Sat Mar 12, 2016 07: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
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Re: Borland7 versus VisualStudio
Posted: 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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Borland7 versus VisualStudio
Posted: 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
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Re: Borland7 versus VisualStudio
Posted: 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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Borland7 versus VisualStudio
Posted: Sun Mar 13, 2016 07: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
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Re: Borland7 versus VisualStudio
Posted: Sun Mar 13, 2016 08:27 PM
OK.

El build64.bat veo que ya tiene los path apuntando a la instalaci贸n que hace Visual Studio.
Code (fw): Select all Collapse
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
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Re: Borland7 versus VisualStudio
Posted: 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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Borland7 versus VisualStudio
Posted: 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
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Re: Borland7 versus VisualStudio
Posted: Tue Mar 15, 2016 02: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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Borland7 versus VisualStudio
Posted: Tue Mar 15, 2016 05: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
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Re: Borland7 versus VisualStudio
Posted: 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 (fw): Select all Collapse
#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 (fw): Select all Collapse
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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Borland7 versus VisualStudio
Posted: Wed Mar 16, 2016 04: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
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Re: Borland7 versus VisualStudio
Posted: Wed Mar 16, 2016 06: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 (fw): Select all Collapse
#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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Borland7 versus VisualStudio
Posted: Wed Mar 16, 2016 08: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