If this is your first visit to our forums, welcome!
Let's take a closer look at [I]External_Function[/I]. But first, there are currently two generic and well established technologies you can use from VDF to interact with external components, DLL functions and COM objects. Actually, there are several other techniques available as well, the obsolete and defunct DDE technology, and the more modern SOAP technology for example, and various other IPC mechanisms. But we'll ignore those for now. DLL and COM are the two fundamental technologies ...
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 ...
In [URL="http://support.dataaccess.com/forums/blog.php?b=83"]the last article[/URL] I mentioned that the [I]Address[/I] type can be used to efficiently copy a [I]Char[][/I] containing a null terminated C string to a VDF [I]String[/I], and I also mentioned that it works the other way around. A follow-up question I received (and should have predicted) was about exactly how you can do that. Basically, the task is to quickly and efficiently copy a VDF [I]String[/I] to a [I]Char[][/I]. ...
If you've been a VDF developer for a while you've undoubtedly come across [I]Pointer[/I], but what about the [I]Address[/I] type? Isn't that just redundant? [I]Pointer[/I] has been around seemingly forever, but you may or may not know that [I]Pointer[/I] is not a real data type in its own right. If you type [I]Pointer[/I] in the Visual DataFlex Studio editor and hover your mouse cursor over the word, you'll see a tooltip that says "Alias type Pointer Integer". So even though ...
In order to update our Samples to use the new XML methods (*NS methods) and schema validation, I had to go through some steps to get it all working. I thought it would be beneficial to document what I have done and share what I have learned while converting the samples -- so here I am. Note that these changes are not required for applications to be migrated to Visual DataFlex 15.1, but namespaces can play a vital role in a data integration project or data exchange scenario, where ...
When it comes to performance working in the Studio as a developer, as opposed to running the application, there are generally two performance critical areas. The first one is the Studio Parser, which is the foundation for CodeSense, Visual Modeling, Go-To-Definition and more. The second performance critical area is when compiling. Unnecessarily long and slow compile times can make for a very frustrating experience working with the Visual DataFlex Studio. Sometimes you may not even ...
Updated 17-Mar-2010 at 05:25 PM by Sonny Falk
A while ago I received a question about why the following code is not working as expected: [code] String[] listData ... Move (SendMessage(hWnd, LB_ADDSTRING, 0, AddressOf(listData[iIndex]))) to iRetval [/code] It's a little tricky, but the code is expecting a pointer to a null terminated C-style string. And usually [I]AddressOf()[/I] will produce that with a local string variable. But in this case [I]AddressOf()[/I] actually returns a pointer ...
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
A big part of our job as software developers is knowing lots of detailed information, but I would argue that knowing how to find information when you need it is even more important. So here is an assortment of resources and tips for Visual DataFlex developers. I use just about all of these resources on a daily basis: The DAW Development Team blog (you're reading it now )The DAW Forums: Peer to peer support for developers.DAW Knowledge Base (KBase): Technical articles with ...
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 ...
As soon as the [URL="http://support.dataaccess.com/forums/blog.php?b=74"]previous article[/URL] was published, I realized that some examples would go a long way to illustrate the point. Of course, I wrote it a week ahead, but didn't think of adding examples until the same day it was published... Oh well, we've all been there... So here are some real-world examples of what I was talking about. [B]Start Center[/B] A few years ago when the Start Center in the Studio ...
Updated 1-Feb-2010 at 08:05 PM by Sonny Falk
I very often see questions like "How can I find out if doing xyz will work?". Often that's in disguise for a more straightforward problem like "Sometimes when I do xyz I get an error, I just want to suppress the error and do something else instead." That original problem should lead you to think: "I know, I'll check for the error and handle it". But all too often it turns into "I'll figure out if doing xyz is going to succeed first, and then I do ...
Most procedures do not return a value, so don't be surprised when you get no return value from a web service method that's a procedure. This may sound obvious, but it can be confusing when you get an unexpected message that seems to suggest something's wrong. A bug report actually made it all the way to our bugtracker system, actually suggesting we should disable use of [I]Procedure[/I] for web service methods. This suggestion was based on a logical but mistaken conclusion formed ...
The basic effect of [I]Set_Argument_Size[/I] is that it limits the maximum size of strings that can be manipulated. [URL="http://support.dataaccess.com/forums/blog.php?b=61#comment136"]Mark wonders if it specifies a fixed string variable size[/URL]. A simplified explanation would be that it limits the upper size of String variables, but String variables do not have a fixed size. A clue to the low level technical explanation is in the name Argument_Size. It doesn't actually ...
In most cases you don't even realize it, but if you look closely enough when stepping through i[I]f/else[/I] statements in the debugger, you notice it seems to behave in an unintuitive manner, even though it actually works correctly. [code] If (1=1) Begin Showln "yup" End Else If (1=1) Begin Showln "huh?" End Else If (1=1) Begin Showln "what?" End [/code] ...
The default Windows settings constantly change and starting with Windows Server 2003 some settings are not configured to accommodate what is needed in a Visual DataFlex environment. Also, some components necessary for Visual DataFlex to fully run are not installed by default. So, before installing Visual DataFlex, you should review and configure your server. In order to install and successfully run, Visual DataFlex needs the following to be appropriately set: Internet ...
Updated 8-Aug-2014 at 11:17 AM by Marcia Booth
The DataFlex activation and deactivation mechanism has a long history. It was built as part of the original object-oriented user interface and has gone through many changes. It had to be extended to support modal and non-modal objects. It was then expanded to work with data aware objects (DEOs). Later it was altered to support Windows controls. It should come as no surprise that the end result is that there are a lot of ways to make this work and even more ways to make this not work. Sooner or later ...
Updated 1-Sep-2011 at 11:44 AM by Dennis Piccioni
Now that you've read the new namespace primer in the Visual DataFlex documentation, and perhaps also read [URL="http://support.dataaccess.com/forums/blog.php?b=67"]John's article about namespaces[/URL] (you have read them, right?), you're probably thinking, good, but how do I really use namespaces when creating my XML document? First, you should use [I]AddElementNS[/I] and so on, all those methods ending with [I]NS[/I]. As John mentioned, you'll notice that you specify the ...
International characters have always been very complicated to deal with in computer systems, and configuring your computer for your locale is often more difficult than it should be. Have you ever had the problem where extended ascii characters such as [IMG]http://support.dataaccess.com/forums/blog_attachment.php?attachmentid=59&stc=1&d=1260836739[/IMG] ends up being displayed in a dbForm or similar in your VDF application as [IMG]http://support.dataaccess.com/forums/blog_attachment.php?attachmentid=60&stc=1&d=1260836885[/IMG] ...
Updated 24-Mar-2011 at 01:03 PM by Marcia Booth
When using the Connectivity Kits, we hear a lot about intermediate (INT) files and structure cache (CCH) files, but the role that those files play in the Connectivity Kit world seems to not be completely understood. What is an INT file? INT files are text files that contain the driver name to be used to open a table, the table's connection information (server, database, etc) and identification (table name, schema, etc), and some special information (e.g. whether the table is ...
Updated 13-Apr-2022 at 10:17 AM by Marcia Booth