If this is your first visit to our forums, welcome!
[FONT=Verdana][SIZE=2]I want to tell you a story about upgrading software. I think you might find the situation familiar.[/SIZE][/FONT][SIZE=2] [/SIZE] [FONT=Verdana][SIZE=2]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 ...
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 ...
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 ...
There was a recent [URL="http://support.dataaccess.com/Forums/newreply.php?do=postreply&t=41016"]forum thread[/URL] 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 ...
In [URL="http://support.dataaccess.com/forums/blog.php?b=29"]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 ...
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. ...
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 ...
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. Code: Object oMyTextBox Is A ...
Object oMyTextBox Is A
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. ...
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 ...
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
In a recent forum message a VDF developer wrote: [quote]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!)[/quote]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 ...
There was a recent [URL="http://support.dataaccess.com/Forums/showthread.php?t=40867"]forum thread[/URL] 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: [quote][COLOR=black][COLOR=black]Just curious. [/COLOR] [COLOR=black]This is not the first time DAW have used classes in the development environment ...
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 ...
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... Drives 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 ...
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 ...
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 ...
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 ...
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 ...
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 ...