Wednesday, October 31, 2007

Build 156

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.

Build 155

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.

Build 154

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:

  1. 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.
  2. The class name is always empty.
  3. The procedure or module name doesn't properly work for methods. Guineu displays the program name instead.
  4. 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

Build 152

Fixed #33: SEEK and SEEK() sometimes moved to the first record instead of the one that has been found.

Sunday, October 28, 2007

Build 150

Fixed #30: Wrong alias would be generated causing code to break that uses ALIAS.FIELD. This bug has been introduced in one of the recent builds.

Thursday, October 25, 2007

Build 148

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")
loFrm.show(1)

Define Class
frmSample as Form
Add Object cnt as container
Add Object "cnt.cmd" as commandbutton
Procedure cnt.cmd.Click
MessageBox("Click")
EndProc
EndDefine

This adds a container with a button control. While Visual FoxPro can compile this code, you can only execute it in Guineu.

Build 147

The Enter key now moves the focus to the next control on both, the desktop as well as the compact platform.

Build 146

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.