Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa |
en:migrar.de.xharbour.a.harbour [2012/12/19 17:46] – jfgimenez | en:migrar.de.xharbour.a.harbour [2022/02/07 17:03] (actual) – editor externo 127.0.0.1 |
---|
::nCounter := n | ::nCounter := n |
...</code>Detected by the compiler. | ...</code>Detected by the compiler. |
| <note>UPDATE: This was fixed later in Harbour, and only applies to Xailer 2.7. Newer versions are free of this lack.</note> |
| |
| |
| |
* Change ''hb_SetCodePage()'' to ''hb_CdpSelect()''. Detected at linking time. | * Change ''hb_SetCodePage()'' to ''hb_CdpSelect()''. Detected at linking time. |
| |
| |
| * Change ''Super:'' into ''::Super:''. In xHarbour and Xailer 2.7's Harbour release, ''Super:'' is used to access parent class members from a child class. Later, this //reserved word// was removed, and now it has to be used ''::Super'' to access parent class members. |
| |
| |
| |
* The ''PRIVATE'' scope works in a different manner in Harbour than xHarbour. On both cases, this scope means that the member can only be accessed from a method of its own class and not from outside of it or any child class. But in Harbour, if a ''PRIVATE'' method is overloaded, a new member is created with the same name, but in the rest, completely different from its parent class. This implies that when the parent class private member change its value, the child class member does not change, and the opposite. In all aspects the two members are completely different. This was not the behavior in xHarbour. A overloaded ''PRIVATE'' method there was only a member on the object with a unique value. | * The ''PRIVATE'' scope works in a different manner in Harbour than xHarbour. On both cases, this scope means that the member can only be accessed from a method of its own class and not from outside of it or any child class. But in Harbour, if a ''PRIVATE'' method is overloaded, a new member is created with the same name, but in the rest, completely different from its parent class. This implies that when the parent class private member change its value, the child class member does not change, and the opposite. In all aspects the two members are completely different. This was not the behavior in xHarbour. A overloaded ''PRIVATE'' method there was only a member on the object with a unique value. |
| |
| |
| * The ''ErrorNew()'' function that creates an ''Error'' object in xHarbour supports many parameters to indicate the type of error: ''cSubsystem'', ''nGenCode'', ''cOperation'', ''cDescription'', ''aArgs'', ''ModuleName'', ''cProcName'' and ''nProcLine''. However in Harbour as in CA-Clipper it does not receive such parameters. Therefore, in Harbour the ''Error'' object created by ''ErrorNew()'' will be created meaningless. The simplest way to fix this is to create a ''MyErrorNew()'' function to get the parameters used on xHarbour and that function will create the error object and set the value of its members. Not detected at compile-time nor at run-time but produces useless error objects. |
| |
| |
===== Inside Xailer ===== | ===== Inside Xailer ===== |
| |
* You must use the Harbour distro provided by Xailer Harbour due to a necessary modification in the //classes.c// module in order to perform our OOP extensions. The modification consists in the addition of only two small functions at the end of the module. | * You must use the Harbour //distro// provided by Xailer Harbour due to a necessary modification in the //classes.c// module in order to perform our OOP extensions. The modification consists in the addition of only two small functions at the end of the module. |
| <note>UPDATE: This only applies to Xailer 2.7. Since Xailer 3.0 it's no longer needed, and any Harbour's //nightly-build// may be used for Xailer. However, Xailer will only support our //official// Harbour's //distro// which is available from the Xailer's download area.</note> |
| |
| |
| |
* In order to avoid problems with ''PRIVATE'' scope, all of them have been changed to ''PROTECTED''. | * In order to avoid problems with ''PRIVATE'' scope, all of them have been changed to ''PROTECTED''. |
| |
| |
* ''SetKey'' is a reserved word. We have changed the method name ''SetKey'' of ''THotkey'' for ''SetHotKey''. Not detected at compile time. May cause wrong application behavior. | * ''SetKey'' is a reserved word. We have changed the method name ''SetKey'' of ''THotkey'' for ''SetHotKey''. Not detected at compile time. May cause wrong application behavior. |
| |
| * If you use the **MinGW** compiler, be aware that library and compiled modules syntax is completely different from Borland C. Libraries must have the extension "**.a**" but also they should be prefixed with the letters "**lib**". The extension for the compiled modules is "**.o**" instead of "**.obj**". |
| |