Fixed #35: When an index is active, APPEND BLANK would append an empty record, but move the record pointer into EOF. This is now working correctly.
Wednesday, October 31, 2007
Fixed #34: Repeated PUBLIC statements using the same variable now don't cause an error anymore. Fixed another issue with resolving PUBLIC variables. In some cases variables wouldn't be found causing Guineu to report an error.
ZAP is implemented for cursors as well as DBF files. The DBF file is properly updated. Index files, however, are not yet updated. If the table has got a CDX file you need to REINDEX the file in Visual FoxPro.
To aid in discovering performance issues with Guineu, Guineu now supports the SET COVERAGE TO command. The performance log looks similar to the one in Visual FoxPro, but is different:
- The line number is not the line number in the source file, rather the number of compiled code. Compiled code is every line that is not a comment, a preprocessor statement, PROCEDURE and DEFINE CLASS.
- The class name is always empty.
- The procedure or module name doesn't properly work for methods. Guineu displays the program name instead.
- This fourth column is a new column in Guineu. It contains the command for the line, eg. Guineu.SEEK, etc. This name is meant to make it easier for you to identify slow lines without having to count lines in the code file.
The format of the log file might change in future builds. In the long term the log file should be identical to the one in Visual FoxPro, even when this means to log less information. If requested, I could add an option to log more information.
Tuesday, October 30, 2007
Sunday, October 28, 2007
Thursday, October 25, 2007
ADD OBJECT can now resolve multi-level object references. In order to properly compile such references, you have to wrap them into quotes like in the following example:
loFrm = CreateObject("frmSample")
Define Class frmSample as Form
Add Object cnt as container
Add Object "cnt.cmd" as commandbutton
This adds a container with a button control. While Visual FoxPro can compile this code, you can only execute it in Guineu.
LOCATE command supported for tables as well as cursors. LOCATE without any further clauses moves the record pointer to the top of the file. The FOR clause allows for searching records that meet certain criteria. CONTINUE finds the next record.
FOUND() properly returns .T. and .F. when used with LOCATE. It did already work for SEEK.