View RSS Feed

Development Team Blog

  1. How does External_Function really work?

    by , 22-Apr-2010 at 08:00 AM (Development Team Blog)
    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 ...
  2. 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:	2288 
Size:	16.7 KB 
ID:	3806   Click image for larger version. 

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

Name:	VaultBT4711ChangesInBC.PNG 
Views:	8726 
Size:	92.3 KB 
ID:	3808  
  3. Converting a String to Char[]

    by , 14-Apr-2010 at 08:00 AM (Development Team Blog)
    In [URL=""]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]. ...
    Tags: sonny falk
  4. Address and Pointer, what's up with that?

    by , 1-Apr-2010 at 08:00 AM (Development Team Blog)
    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 ...
  5. Adjusting your XML Application to use Namespace and XML Schema Validation

    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 ...
  6. Diagnosing Studio and compile time performance problems

    by , 22-Mar-2010 at 08:00 AM (Development Team Blog)
    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

    Attached Thumbnails Attached Thumbnails Click image for larger version. 

Name:	comp-perf.jpg 
Views:	1116 
Size:	26.8 KB 
ID:	3799   Click image for larger version. 

Name:	parse-perf.jpg 
Views:	1091 
Size:	29.0 KB 
ID:	3800   Click image for larger version. 

Name:	studio-load.jpg 
Views:	1091 
Size:	29.8 KB 
ID:	3801   Click image for larger version. 

Name:	studio-parse.jpg 
Views:	1155 
Size:	51.5 KB 
ID:	3802   Click image for larger version. 

Name:	bigws2.jpg 
Views:	1099 
Size:	50.7 KB 
ID:	3803   Click image for larger version. 

Name:	bigws1.jpg 
Views:	1148 
Size:	23.6 KB 
ID:	3804  
  7. AddressOf() does/did not work as expected with String[]

    by , 15-Mar-2010 at 09:00 AM (Development Team Blog)
    A while ago I received a question about why the following code is not working as expected:

    String[] listData
    Move (SendMessage(hWnd, LB_ADDSTRING, 0, AddressOf(listData[iIndex]))) to iRetval

    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 ...
  8. 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

    Attached Thumbnails Attached Thumbnails Click image for larger version. 

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

Name:	SubscribeToThread.PNG 
Views:	836 
Size:	8.1 KB 
ID:	3798  
  9. Developer Resources: Finding Information

    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:

  10. 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 ...
  11. Sometimes it's better to Just do it: Examples

    by , 1-Feb-2010 at 09:00 AM (Development Team Blog)
    As soon as the [URL=""]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

  12. Sometimes it's better to Just do it

    by , 27-Jan-2010 at 09:00 AM (Development Team Blog)
    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 ...
  13. A procedure that does not return a value, does not return a value

    by , 22-Jan-2010 at 07:00 AM (Development Team Blog)
    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 ...
  14. What does Argument_Size really do?

    by , 18-Jan-2010 at 09:00 AM (Development Team Blog)
    The basic effect of [I]Set_Argument_Size[/I] is that it limits the maximum size of strings that can be manipulated. [URL=""]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 ...
  15. Why does if/else statements behave so strangely when debugging?

    by , 11-Jan-2010 at 09:00 AM (Development Team Blog)
    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.

    If (1=1) Begin
    Showln "yup"
    Else If (1=1) Begin
    Showln "huh?"
    Else If (1=1) Begin
    Showln "what?"

  16. Adjusting Server Settings prior to installing Visual DataFlex

    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:

    1. Internet

    Updated 8-Aug-2014 at 11:17 AM by Marcia Booth

  17. Activation and Deactivation: A suggested approach

    by , 28-Dec-2009 at 09:00 AM (Development Team Blog)
    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

  18. Practical XML namespaces

    by , 22-Dec-2009 at 08:00 AM (Development Team Blog)
    Now that you've read the new namespace primer in the Visual DataFlex documentation, and perhaps also read [URL=""]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 ...
  19. On the same (code) page

    by , 17-Dec-2009 at 11:00 AM (Development Team Blog)
    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][/IMG] ends up being displayed in a dbForm or similar in your VDF application as [IMG][/IMG] ...

    Updated 24-Mar-2011 at 01:03 PM by Marcia Booth

    Attached Thumbnails Attached Thumbnails Click image for larger version. 

Name:	us-good.jpg 
Views:	1595 
Size:	43.0 KB 
ID:	3779   Click image for larger version. 

Name:	swe-bad.jpg 
Views:	1647 
Size:	42.3 KB 
ID:	3780   Click image for larger version. 

Name:	conflict.jpg 
Views:	1523 
Size:	37.9 KB 
ID:	3781   Click image for larger version. 

Name:	settings-xp.jpg 
Views:	1588 
Size:	93.2 KB 
ID:	3782   Click image for larger version. 

Name:	settings-vista.jpg 
Views:	1674 
Size:	104.1 KB 
ID:	3783   Click image for larger version. 

Name:	swe-good.jpg 
Views:	1535 
Size:	49.5 KB 
ID:	3784  
    Attached Thumbnails Attached Images     
    Attached Thumbnails Attached Files
  20. INT and CCH Files Explained

    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 15-Dec-2009 at 10:28 AM by Stephen W. Meeley (Spell Check)

    Tags: cli, marcia booth, sql
Page 5 of 8 FirstFirst ... 2345678 LastLast