View RSS Feed

Development Team Blog

  1. Configuring Source Control for Visual DataFlex

    This post contains information about configuring a source control system to be used for Visual DataFlex projects. This post can be used in conjunction with Source Control and Visual DataFlex 101: The Basics and Source Control and Visual DataFlex 102: Multi-Developer Use. Also, see my previous post, The Case for Source Control to learn why you should use it.

    What Files to Check Into Source Control

    The rule of thumb for checking in source code is only to check in files ...
  2. Source Control and Visual DataFlex 102: Multi-Developer Use

    Source Control and Visual DataFlex 101: The Basics got you started with source control.; this post will show you how to use source control when multiple developers work on the same project. This post builds on the previous post and assumes you are familiar with the information in it, so if you have not, please read it now.

    Just as the aforementioned post, the purpose of this post is to allow you to start using source control in a fast and efficient manner. It is not intended to explain ...
  3. Source Control and Visual DataFlex 101: The Basics

    In The Case for Source Control, I told you why you should use source control. Now I will show you how to use source control with Visual DataFlex. This post will demonstrate the basics of source control from a single developer perspective. Source Control and Visual DataFlex 102: Multi-Developer Use moves on to using source control when multiple developers work on the same project. The purpose of this post is to allow you to start using source control in a fast and efficient manner. See Configuring Source Control for Visual DataFlex ...
  4. The Case for Source Control

    Source Control has been discussed in our forums off and on for years and it appears that some developers are not convinced that using it will benefit them. If you are not currently using source control, you should seriously reconsider doing so. I hope this article clears up most questions you have.

    Source control is often also referred to as "version control" or "revision control". I prefer the term source control because it does so much more than simply tracking revisions, as I will ...
    Attached Thumbnails Attached Thumbnails Click image for larger version. 

Name:	VaultHistoryBT4711.PNG 
Views:	3136 
Size:	16.7 KB 
ID:	3806   Click image for larger version. 

Name:	VaultHistoryBT4711DrillDown.PNG 
Views:	3164 
Size:	57.8 KB 
ID:	3807   Click image for larger version. 

Name:	VaultBT4711ChangesInBC.PNG 
Views:	9516 
Size:	92.3 KB 
ID:	3808  
  5. Developer Resources: Getting the Most from the Forums

    Our forums are chock full of information and we want to make sure that everyone can make the most of this.

    Post all relevant information

    Sometimes the operating system on which you encounter a problem matters, sometimes it does not, sometimes other product versions matter. By providing all the pertinent information from the get-go, it allows people who read your posts to better help you and not have to guess. At minimum, I would suggest that you provide the following ...

    Updated 26-Mar-2010 at 12:56 PM by Dennis Piccioni

    Categories
    Uncategorized
    Attached Thumbnails Attached Thumbnails Click image for larger version. 

Name:	UnhandledProgramError.png 
Views:	1339 
Size:	33.5 KB 
ID:	3797   Click image for larger version. 

Name:	SubscribeToThread.PNG 
Views:	1286 
Size:	8.1 KB 
ID:	3798  
  6. The secret NewRecord command

    by , 8-Feb-2010 at 09:00 AM (Development Team Blog)
    A well known old trick in DataFlex is the [I]Move 0 to Recnum[/I] trick. It's been used with character mode DataFlex and Visual DataFlex for so long that nobody probably remembers where it came from, and I'm not sure it was ever really a documented or intended feature in the beginning. Nonetheless it became a fully supported technique at some point.

    Basically, if you ever wanted to create a new record loosely based on data from an existing record, you could use this trick to simplify ...
    Categories
    Uncategorized
  7. Arrays & Structs in-depth - Conclusion

    by , 6-Oct-2009 at 08:00 AM (Development Team Blog)
    To wrap up this multi-part series about arrays and structs I'll highlight a few key areas and answer some questions that came up.

    [URL="http://support.dataaccess.com/forums/blog.php?b=26"]Part I[/URL] starts by showing the basic use of structs and arrays, how they can be used together and as parameter & return types.

    [URL="http://support.dataaccess.com/forums/blog.php?b=27"]Part II[/URL] discusses how sorting and searching works with native arrays. ...
  8. Arrays & Structs in-depth Part VI

    by , 25-Sep-2009 at 08:00 AM (Development Team Blog)
    In [URL="http://support.dataaccess.com/forums/blog.php?b=39"]Part V[/URL] we realized that there's a very common mistake one can make when working with array properties and trying to write code designed after the old Array class interface, which can cause performance issues. When making changes to array properties, and you're concerned about performance, the key thing is to coalesce/combine all changes into one transaction. Remember that a [I]Get[/I] property is always super-fast. There's ...
    Attached Thumbnails Attached Thumbnails Click image for larger version. 

Name:	without-access-methods.jpg 
Views:	1790 
Size:	40.3 KB 
ID:	3773   Click image for larger version. 

Name:	array-property-comparison.jpg 
Views:	1834 
Size:	46.0 KB 
ID:	3774  
    Attached Thumbnails Attached Files
  9. Arrays & Structs in-depth Part V

    by , 23-Sep-2009 at 08:00 AM (Development Team Blog)
    In [URL="http://support.dataaccess.com/forums/blog.php?b=36"]Part IV[/URL] we discovered that passing very large arrays around via parameters and return values is usually very fast thanks to the built-in copy-on-write optimization. We also discovered that if you modify the array, you incur a copy operation and lose the benefit of the copy-on-write optimization. It may come as no surprise then that the fewer copy operations you perform, the better performance you get.

    Up ...
    Attached Thumbnails Attached Thumbnails Click image for larger version. 

Name:	with-access-methods.jpg 
Views:	1883 
Size:	42.4 KB 
ID:	3772  
    Attached Thumbnails Attached Files
  10. Need a Stack Class?

    Amidst all the Arrays & Structs in-depth multi-part series by Sonny Falk, why not take a look at an example of using an array? The code shown here uses a single-dimensional array as the base for a stack class.

    A stack is, by definition, a "last in, first out" (LIFO) abstract structure where elements can be added or taken off from only one end, called the "top". A stack can have any abstract data type as an element, but is characterized by two fundamental operations: push and pop. ...
    Categories
    Uncategorized
  11. Arrays & Structs in-depth Part III

    by , 10-Sep-2009 at 08:00 AM (Development Team Blog)
    In [URL="http://support.dataaccess.com/forums/blog.php?b=27"]Part II[/URL] of this multi-part series we discussed sorting and searching arrays, and we also mentioned that multi-dimensional arrays aren't really suited for sorting and searching, we'll dig into that a little deeper here and see how a struct type is often a better solution.

    [B]Multi-dimensional Arrays[/B]
    Despite what the documentation may seem to suggest, you really cannot sort multi-dimensional arrays. ...
  12. Arrays & Structs in-depth Part II

    by , 8-Sep-2009 at 08:00 AM (Development Team Blog)
    In [URL="http://support.dataaccess.com/forums/blog.php?b=26"]Part I[/URL] we were just getting warmed up and started looking at the basics of arrays and struct types. Now things are about to get more complicated as we dig in deeper.

    [B]Sorting Arrays[/B]
    If you have [I]Integer[] myArray[/I] for example, then sorting is very simple and straightforward. You simply do [I]Move (SortArray(myArray)) to myArray[/I], and you're done. The runtime takes care of all the magic ...
  13. Arrays & Structs in-depth Part I

    by , 3-Sep-2009 at 08:00 AM (Development Team Blog)
    Native arrays have been around in Visual DataFlex for years now, it's obvious that native array types are preferred by far over the old Array class, but just what are the differences? For one, with native array types you can create local array variables without resorting to creating an object. That also means you can use array types as parameter types and return types, and the data is carried across method calls far easier than array objects. You also never have to worry about destroying an object, ...

    Updated 3-Sep-2009 at 06:48 PM by Sonny Falk

    Categories
    Uncategorized
  14. Deadlocks with Alias Files

    by , 21-Aug-2009 at 08:00 AM (Development Team Blog)
    Help, my program hangs on [I]Lock[/I]/[I]Reread[/I]/[I]Begin_Transaction[/I]! That, or some sort of variation is probably the single most revisited topic in the forums over all the years. Probably about 99% of all instances with any problem like this is due to deadlocks with alias files.

    This is not related to SQL style deadlocks that are resolved by the server, but an inherent complication from alias files/tables that is mostly only seen with the embedded(DataFlex) database. It's ...
  15. Constraints and Performance

    by , 19-Aug-2009 at 08:00 AM (Development Team Blog)
    Constraints again, who knew there could be so much to say about that. In some [URL="http://support.dataaccess.com/Forums/blog.php?b=17#comments"]comments[/URL] to an earlier post about constraints, the question about ordering of constraints and the impact on performance came up. John Tuohy then also mentioned in his [URL="http://support.dataaccess.com/forums/blog.php?b=25"]follow-up article about constraints and properties[/URL] that "The constraints are split up into multiple ...
    Categories
    Uncategorized
  16. Communication between views and dialogs

    by , 18-Aug-2009 at 11:09 AM (Development Team Blog)
    A question was asked on the forum about the [URL="http://support.dataaccess.com/Forums/showthread.php?t=40755"]best way for a view and a dialog to communicate[/URL].
    [COLOR=black][quote][COLOR=black]What is the best way to pass data back and forth between views and dialogs?[/COLOR]

    [COLOR=black]Lets say I have a custom dialog (not a lookup) that I want to use to get information from the user. Maybe there is more than one item of data that need to be returned, like ...
    Categories
    Uncategorized
  17. Constraints and Local Variables

    by , 10-Aug-2009 at 07:00 AM (Development Team Blog)
    Constraints and local variables is a frequent question in the forums, let's see if we can sort this out. The basics is that you set it up once, and then the runtime uses the constraints when finding records thereafter. If you want to change your constraints, you rebuild the whole set of constraints, and then the runtime uses that thereafter.

    The way constraints are set up is complicated a little with DDs and I won't go into the details, but essentially you augment the [I]OnConstrain[/I] ...
  18. The Smallest Program

    by , 3-Aug-2009 at 07:00 AM (Development Team Blog)
    A Visual DataFlex program doesn't have to consist of windows, views and dialogs, you can write command line style programs in VDF too. And the best part is that the VDF Studio (12.x and later) fully supports programs that have no graphical user interface as first class citizens. All the wonderful features, such as CodeSense, the CodeExplorer, the Properties panel, all treat any source code the same, afterall, it's all source code and [I]source code rules[/I]. This may seem obvious unless you've ...