Xailer Wiki

El entorno de desarrollo definitivo en Xbase

Herramientas de usuario

Herramientas del sitio


migrar.de.xharbour.a.harbour

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
migrar.de.xharbour.a.harbour [2013/03/27 12:54] jfgimenezmigrar.de.xharbour.a.harbour [2022/02/07 17:03] (actual) – editor externo 127.0.0.1
Línea 56: Línea 56:
   * Sustituir ''ADel()'' con 3 parámetros por ''hb_ADel()''. En xHarbour, la función ''ADel()'' admite un tercer parámetro, que indica que el array se tiene que reducir de tamaño en un elemento, en vez de dejar un valor ''Nil'' en la última posición. Harbour ignora este tercer parámetro, por lo que habrá que sustituirlo por ''hb_ADel()'' o redimensionar el array manualmente con ''ASize()'' despúes de borrar el elemento. No se detecta ni al compilar ni al ejecutar, aunque puede provocar comportamientos erróneos en las rutinas que la utilicen.   * Sustituir ''ADel()'' con 3 parámetros por ''hb_ADel()''. En xHarbour, la función ''ADel()'' admite un tercer parámetro, que indica que el array se tiene que reducir de tamaño en un elemento, en vez de dejar un valor ''Nil'' en la última posición. Harbour ignora este tercer parámetro, por lo que habrá que sustituirlo por ''hb_ADel()'' o redimensionar el array manualmente con ''ASize()'' despúes de borrar el elemento. No se detecta ni al compilar ni al ejecutar, aunque puede provocar comportamientos erróneos en las rutinas que la utilicen.
  
 +  * Sustituir ''AIns()'' con 3 parámetros por ''hb_AIns()''. En xHarbour, la función ''AIns()'' admite un tercer parámetro, que indica que el array se tiene que agrandar de tamaño en un elemento, en vez de perder el último elemento. Harbour ignora este tercer parámetro, por lo que habrá que sustituirlo por ''hb_Ins()'' o hacer crecerr el array manualmente con ''Aadd()'' antes de insertar. No se detecta ni al compilar ni al ejecutar, aunque puede provocar comportamientos erróneos en las rutinas que la utilicen.
  
   * No existe la función ''ASizeAlloc()'', ni hay nada parecido que pueda sustituirla, pero es suficiente con eliminar cualquier llamada a la misma. Se detecta al enlazar.   * No existe la función ''ASizeAlloc()'', ni hay nada parecido que pueda sustituirla, pero es suficiente con eliminar cualquier llamada a la misma. Se detecta al enlazar.
Línea 94: Línea 95:
   * El ámbito ''PRIVATE'' en las clases funciona de forma completamente distinta en Harbour que en xHarbour. En ambos casos, este ámbito significa que ese miembro de la clase sólo puede ser accedido desde un método de la propia clase, y no desde fuera de la misma ni desde una clase hija. Pero además en Harbour, si se sobrecarga un miembro ''PRIVATE'' (es decir, se vuelve a declarar en una clase hija), se crea un nuevo miembro con el mismo nombre, pero en todo lo demás es completamente distinto al de su clase padre. Esto implica que cuando la clase padre cambia el valor de una propiedad ''PRIVATE'', la clase hija no ve ese valor. Y lo mismo ocurre si la clase hija lo cambia. A todos los efectos son dos propiedades distintas, que no pueden ser accedidas desde fuera de la propia clase, aunque tengan el mismo nombre en la clase padre y en la clase hija. Esto no era así en xHarbour, que cuando se sobrecargaba una propiedad ''PRIVATE'' en una clase hija, se podía acceder a su valor tanto desde la clase padre como desde la hija.   * El ámbito ''PRIVATE'' en las clases funciona de forma completamente distinta en Harbour que en xHarbour. En ambos casos, este ámbito significa que ese miembro de la clase sólo puede ser accedido desde un método de la propia clase, y no desde fuera de la misma ni desde una clase hija. Pero además en Harbour, si se sobrecarga un miembro ''PRIVATE'' (es decir, se vuelve a declarar en una clase hija), se crea un nuevo miembro con el mismo nombre, pero en todo lo demás es completamente distinto al de su clase padre. Esto implica que cuando la clase padre cambia el valor de una propiedad ''PRIVATE'', la clase hija no ve ese valor. Y lo mismo ocurre si la clase hija lo cambia. A todos los efectos son dos propiedades distintas, que no pueden ser accedidas desde fuera de la propia clase, aunque tengan el mismo nombre en la clase padre y en la clase hija. Esto no era así en xHarbour, que cuando se sobrecargaba una propiedad ''PRIVATE'' en una clase hija, se podía acceder a su valor tanto desde la clase padre como desde la hija.
  
 +  * La función ''ErrorNew()'' que crea un objeto ''Error'' en xHarbour admite muchos parámetros para indicar el tipo de error: ''cSubsystem'', ''nGenCode'', ''cOperation'', ''cDescription'', ''aArgs'', ''ModuleName'', ''cProcName'' y ''nProcLine''. Sin embargo en Harbour al igual que en CA-Clipper dicha función no recibe ningún parámetro. Por lo tanto, en Harbour el objeto ''Error'' creado con ''ErrorNew()'' se creará vacío de contenido. Lo más sencillo es crear una función ''MyErrorNew()'' que reciba los parámetros que usaba la versión de xHarbour y que esta se encargue de llamar a ''ErrorNew()'' y luego establecer el valor de sus miembros. No se detecta al compilar, y tampoco se produce ningún error al ejecutar el programa, pero produce objetos ''Error'' inusables.
 + 
  
 ===== A nivel C ===== ===== A nivel C =====
Línea 149: Línea 152:
  
   * ''SetKey'' es una palabra reservada. Ha habido que cambiar el nombre del método ''SetKey'' de ''THotkey'' por ''SetHotKey''. No se detecta al compilar, pero provoca cambios de comportamiento.   * ''SetKey'' es una palabra reservada. Ha habido que cambiar el nombre del método ''SetKey'' de ''THotkey'' por ''SetHotKey''. No se detecta al compilar, pero provoca cambios de comportamiento.
 +
 +  * Si utiliza el compilador **MinGW** tenga en cuenta que la sintaxis de nombre de librerías y módulos compilados cambia completamente. en el caso de las librerías sus extensión ha de ser "**.a**" pero además el nombre ha de comenzar necesariamente con el texto "**lib**". La extensión de los módulos compilados ya no es "**obj**", sino "**o**".
migrar.de.xharbour.a.harbour.1364388870.txt.gz · Última modificación: 2022/02/07 17:03 (editor externo)

Herramientas de la página