Difference between revisions of "Visual FoxPro"

From TheAlmightyGuru
Jump to: navigation, search
Line 14: Line 14:
 
* The IDE uses a wonderful multi-window system so you can easily open and view several different code blocks at the same time, even from the same object.
 
* The IDE uses a wonderful multi-window system so you can easily open and view several different code blocks at the same time, even from the same object.
  
==Bad==
+
===Bad===
 
* The database format is way out of date and doesn't support any of the new data types, or even some primitives. You can't store a short or double long integer, there is no support for unsigned integers, no Unicode support, etc.
 
* The database format is way out of date and doesn't support any of the new data types, or even some primitives. You can't store a short or double long integer, there is no support for unsigned integers, no Unicode support, etc.
 
* Functions that affect file names like ''Copy File'' don't preserve text case.
 
* Functions that affect file names like ''Copy File'' don't preserve text case.
Line 21: Line 21:
 
* While text fields longer than 254 characters are possible, they require the use of "memos" which are especially cumbersome to work with.
 
* While text fields longer than 254 characters are possible, they require the use of "memos" which are especially cumbersome to work with.
  
==Ugly==
+
===Ugly===
 
* VFP has really poor ActiveX and OLE support, often to the point of crashing the UI.
 
* VFP has really poor ActiveX and OLE support, often to the point of crashing the UI.
 
* VFP has really poor array support. Arrays must be 2D (to resemble tables). Single dimensional arrays, or three or more dimensional arrays are not possible.
 
* VFP has really poor array support. Arrays must be 2D (to resemble tables). Single dimensional arrays, or three or more dimensional arrays are not possible.
 +
 +
==Quirks==
 +
This is a list quirks found in VFP and how to resolve them.
 +
 +
* The VARTYPE function doesn't work correctly if the expression doesn't exist and if it contains a period, because VFP will assume it is a table. You must use TYPE instead.
 +
* There is a bug that sometimes occurs when, if you LOCATE into a table with only one record, even if FOUND() returns .T. and the record pointer is on the first record, VFP will return and empty string ("") as the value of a field. This can be resolved by adding additional blank records.
  
 
==Links==
 
==Links==

Revision as of 15:42, 13 October 2017

Visual FoxPro 9.

Visual FoxPro is a programming language and IDE from Microsoft. The primary use of the language is for rapid database application development. The programming syntax is similar to that of Visual BASIC (not VB.NET). The language uses dynamic inferred structural typing. It compiles to pseudo-code which is interpreted by the runtimes.

Visual FoxPro is based off of FoxPro, which is based off of FoxBASE, which is based off of dBASE. The language is no longer being updated, though it is still supported by Microsoft.

Though I had seen FoxPro icons since my first days with Windows 3, I never knew what FoxPro was. I got my first taste of Visual FoxPro in 1999. It was the main programming language for the company I started working for. I was familiar with Visual BASIC, so it was pretty easy for me to pickup the syntax, and I had just developed an Access application for my high school, so I knew enough about databases to secure my job. I've used VFP from version 6 until its final release, version 9.2.

Review

Good

  • The language has a built-in database creator, editor, and viewer. Though it's not without its problems, it's the best I've ever worked with.
  • It has a full SQL interpreter as well as many additional database features, and they're very easy to use.
  • The SQL speed is lightning fast, even to the point of outpacing SQL Server at times since you can shortcut the transaction if you're using a single-user.
  • The IDE uses a wonderful multi-window system so you can easily open and view several different code blocks at the same time, even from the same object.

Bad

  • The database format is way out of date and doesn't support any of the new data types, or even some primitives. You can't store a short or double long integer, there is no support for unsigned integers, no Unicode support, etc.
  • Functions that affect file names like Copy File don't preserve text case.
  • The UI does a poor job of storing the position of windows and the code block you last viewed.
  • Although VFP is mostly object oriented, it has a lot of legacy commands and functions that are procedural. This lack of standards creates confusion.
  • While text fields longer than 254 characters are possible, they require the use of "memos" which are especially cumbersome to work with.

Ugly

  • VFP has really poor ActiveX and OLE support, often to the point of crashing the UI.
  • VFP has really poor array support. Arrays must be 2D (to resemble tables). Single dimensional arrays, or three or more dimensional arrays are not possible.

Quirks

This is a list quirks found in VFP and how to resolve them.

  • The VARTYPE function doesn't work correctly if the expression doesn't exist and if it contains a period, because VFP will assume it is a table. You must use TYPE instead.
  • There is a bug that sometimes occurs when, if you LOCATE into a table with only one record, even if FOUND() returns .T. and the record pointer is on the first record, VFP will return and empty string ("") as the value of a field. This can be resolved by adding additional blank records.

Links