View RSS Feed

Development Team Blog

  1. And here is another fine fix Iíve (almost) gotten us into

    by , 28-Sep-2009 at 10:00 AM (Development Team Blog)
    I want to tell you a story about upgrading software. I think you might find the situation familiar.

    With the introduction of the 12.0 Studio we introduced a new Property Panel. We made the Studio smart enough so that it could look at a propertyís data type and meta-data tags and figure out how best to present the data. In the case of boolean properties that data would be displayed using a drop down box containing a value for "True" and "False". This worked great but there were ...
  2. Arrays & Structs in-depth Part VI

    by , 25-Sep-2009 at 08:00 AM (Development Team Blog)
    In [URL=""]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:	1070 
Size:	40.3 KB 
ID:	3773   Click image for larger version. 

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

    by , 23-Sep-2009 at 08:00 AM (Development Team Blog)
    In [URL=""]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:	1084 
Size:	42.4 KB 
ID:	3772  
    Attached Thumbnails Attached Files
  4. Suggestions - How we make mountains out of molehills

    by , 21-Sep-2009 at 08:00 AM (Development Team Blog)
    There was a recent forum thread suggesting that the Studio's codesense should provide assistance with index selection for the Find command. We noted that this suggestion actually was implemented but that it was implemented in a slightly different manner. As expected a lively discussion ensued. This presents a good opportunity to discuss how we implement suggestions. We can use this suggestion as an example.

    The suggestion was that codesense should pop up a list of all available indexes ...
  5. Arrays & Structs in-depth Part IV

    by , 18-Sep-2009 at 08:00 AM (Development Team Blog)
    In [URL=""]Part III[/URL] we discovered that arrays work great together with struct types, and that native arrays are clearly much easier to use than the old Array class, but what about performance? A simple test shows that the basic use of native arrays (reading/writing elements) compare very favorably against the old-school Array class. In fact, native arrays are a little faster. Your mileage may vary depending on the data type as well ...
    Attached Thumbnails Attached Thumbnails Click image for larger version. 

Name:	perf-result1.jpg 
Views:	2307 
Size:	56.0 KB 
ID:	3767   Click image for larger version. 

Name:	perf-result2.jpg 
Views:	704 
Size:	27.5 KB 
ID:	3768   Click image for larger version. 

Name:	perf-result3.jpg 
Views:	691 
Size:	24.1 KB 
ID:	3769  
    Attached Thumbnails Attached Files
  6. 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. ...
  7. Studio Modeling and Data Dictionary Files

    by , 14-Sep-2009 at 09:00 AM (Development Team Blog)
    In Visual DataFlex 14.1 we added data dictionary modeling to the Studio. This task used to be performed by the Database Builder tool.

    Database Builder used a quite primitive approach to source code modeling. It relied on special marker comments and a set of hard-coded symbols to understand how to model a data dictionary class.

    The Studio's modeler is more powerful and flexible. It properly analyzes the source code of the data dictionary file and all of the files used ...
  8. How to break a text line in a Textbox

    I received a support call from a developer that used a Textbox control in his program. The textbox wrapped on the screen when the text is too wide for the width of the control but the developer wanted to break the textline at a given location. The question was whether it is possible and how?

    The text in a Textbox control can be wrapped at a given location by inserting a Character(13) in the label at the location where you want the new line to start.
    Object oMyTextBox Is A
  9. Arrays & Structs in-depth Part III

    by , 10-Sep-2009 at 08:00 AM (Development Team Blog)
    In [URL=""]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. ...
  10. Arrays & Structs in-depth Part II

    by , 8-Sep-2009 at 08:00 AM (Development Team Blog)
    In [URL=""]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 ...
  11. 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

  12. Mixing WinPrint 1 and WinPrint 2 Reports

    by , 1-Sep-2009 at 08:00 AM (Development Team Blog)
    In a recent forum message a VDF developer wrote:

    I have an issue when a client runs a Winprint II report, then goes back and runs a Winprint 1 Report in the same application. (Winprint error. Could not create a new page!)
    The problem is due to this program sending instructions from a WinPrint 1 report to the WinPrint 2 DLL or visa versa.

    There are two global winprint objects. One that directs printing instructions to the WinPrint 1 DLL and one that directs printing to ...
  13. Why donít you just add it to the product?

    by , 31-Aug-2009 at 08:00 AM (Development Team Blog)
    There was a recent forum thread asking about adding an extra feature to one of our standard controls. It was noted that this could be done as evidenced by this feature being part of the Visual Report Writer. This resulted in the following question:
    Just curious.

    This is not the first time DAW have used classes in the development environment over the years that they have a reluctance to publish to us mere mortals.

    Is there any reasoning behind this?
  14. Under the Hood: The Studio Parser

    by , 28-Aug-2009 at 08:00 AM (Development Team Blog)
    The Visual DataFlex Studio parser is actually two separate parsers, one is parsing source code and the other is parsing the tree structure output by the first one. The first one is internally referred to as the CDS(Code Data Structure) Parser, and the second one is referred to as the Metadata Parser. But often they are referred to collectively as the Studio Parser, as the technical distinctions are often irrelevant unless you're discussing Studio internals. The CDS and Metadata parsers are also ...
    Attached Thumbnails Attached Thumbnails Click image for larger version. 

Name:	pr1.jpg 
Views:	780 
Size:	24.1 KB 
ID:	3761   Click image for larger version. 

Name:	pr2.jpg 
Views:	792 
Size:	24.7 KB 
ID:	3762   Click image for larger version. 

Name:	vd1.jpg 
Views:	777 
Size:	50.4 KB 
ID:	3763   Click image for larger version. 

Name:	ddoexpl.jpg 
Views:	795 
Size:	38.9 KB 
ID:	3764  
  15. How to get volume information

    Always wanted to know what drives are available in your computer? Wanted to know what the status of the drive is? Wanted to know the serialnumber (e.g. 503E-A401)? Wanted to know is filename casing preserved? No... then go to the next blog. Yes, read on...

    Visual DataFlex has a command called GetDskInfo. You pass it an integer and because drives can be assigned to a drive letter there is a maximum of 26 drives. So we can make a loop through all the drives. In the following ...
    Attached Thumbnails Attached Thumbnails Click image for larger version. 

Name:	VolumeInfo.jpg 
Views:	1057 
Size:	74.8 KB 
ID:	3766  
  16. Windows 2003 Test Environment: Getting rid of a few Annoyances

    Depending on what you are working on, certain improvements in security that Microsoft implemented become annoyances in your test environment. On Windows Server 2003, my favorite two that I need to turn off immediately are:

    1. Internet Explorer Enhanced Security Configuration
    2. Shutdown Event Tracker

    1. Internet Explorer Enhanced Security Configuration
    By default, this is enabled on Windows 2003. Whenever you open IE, you get the message below displayed ...
    Attached Thumbnails Attached Thumbnails Click image for larger version. 

Name:	ShutdownEventTracker.JPG 
Views:	1608 
Size:	33.1 KB 
ID:	3760   Click image for larger version. 

Name:	DBE- DidYouKnowBlocked.JPG 
Views:	1342 
Size:	40.3 KB 
ID:	3765  
  17. How to get detail information from the callstack

    Recently I received a support call from a developer who was very pleased with the fact that the product now has a command to return the current callstack. He said however it is one string and I would like to retrieve detailed information from the callstack. I told the developer to look at string manipulation functions and that made him not so happy. The amount of work was high he thought.

    Because I said it is not so difficult he challenged me to make a function that makes it easier ...
  18. 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 ...
  19. 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=""]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=""]follow-up article about constraints and properties[/URL] that "The constraints are split up into multiple ...
  20. 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 best way for a view and a dialog to communicate.
    What is the best way to pass data back and forth between views and dialogs?

    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 an X and a Y coordinate.

    How do I make it so that multiple views in my program can query this dialog and get the information
Page 7 of 8 FirstFirst ... 45678 LastLast