Clarion Folklore Podcast #6 Is Live!

“I think that’s considered a bug isn’t it?”

– Dave Harms

“If you learn everything, then you know everything.”

– Bruce Johnson

[audio:ClarionFolklore-006.mp3]

Hosts

Ken “Deep Assign” Wragg (http://www.agedcaresoftware.com)

Dave “Clarion Sharp” Harms (http://www.clarionmag.com)

Bruce “He Didn’t Know That” Johnson (http://www.capesoft.com)

Stu “I Need More Diet Coke” Andrews (http://clarionfolk.com)

Some Of The Things We Talk About

  • Ken’s “Deep Assign” tip
  • Dave’s work with Clarion Sharp and Webish Templates
  • 600 Pages Of Manual
  • The new Clarion 7 version
  • My girl’s coming in fighting about a toy

Special Christmas Podcast Is Live!

“Clearly, if we mess up this podcast, it’s Dave’s fault .. And in fact, I would go so far as to say it’s Dot Net’s fault.”

– Bruce Johnson

[audio:ClarionFolklore-005.mp3]

Hosts

Dave Harms

Ken Wragg

Bruce Johnson

Kim Davies

Stu Andrews

Some Of The Things We Talk About

  • Dave’s Pondcasting App
  • Highlights from the year past
  • What we’re looking forward too in the new year

Clarion Folklore Podcast #4 Is Live!

“I certainly don’t want to figure out how the .Net component works, or the ActiveX component works .. If I can put a template wrapper in and spend my time focusing on the applications functionality, not the development tool behind it.”

– Kim Davies

[audio:ClarionFolklore-4.mp3]

Hosts

Kim Davies

Ken Wragg

Dave Harm

Bruce Johnson

Stu Andrews

Some Of The Things We Talk About

  • The 3rd Party Community and the new Clarion products
  • Listening to Bruce eat chocolate and cough a lot
  • Clarion# and Custom Controls
  • ClarionMag’s latest poll regarding use of Legacy/ABC Development

Clarion Folklore Podcast #3 Is Live!

"You get to see your code in the context of the code around it. That’s not something that many systems offer you."

– Bruce Johnson

[audio:ClarionFolklore-3.mp3]

Hosts

Ken Wragg

Bruce Johnson

Stu Andrews

Some Of The Things We Talk About:

  • Clarion 7
  • Conversion from Clarion 7 to Clarion .Net
  • The Entry Level Barrier to Programming is low. Yet Programming is much harder.

The Revamped Clarion Podcast, #1, Is Live!

[audio:ClarionFolkLore-1.mp3]

WARNING: This is a large mp3 file, 70+ megs. Apologies, I’ll be trimming the structure for next time.

Hosts

Bruce Johnson

Dave Harms

Kim Davies

Stu Andrews

Some Of The Things We Talk About:

  • Nettalk 5
  • Clarionmag rewrite
  • Marketing ideas for Clarion
  • Important "Support" lessons
  • And the upcoming release of the Appgen

Clarion Folklore #3–Dutchland, Scope and Slanderers Warned

Clarion Folk Lore #3 is live!

[audio:ClarionFolkLore-003.mp3]

URLs

Answers

  1. What does MEMBER() do vs. MEMBER(‘MyApp.clw’)

    Every module needs to either have a PROGRAM statement or a MEMBER statement.

    The main module of an EXE/DLL/LIB will have the PROGRAM statement. All others will have a MEMBER statement of some form.

    – The form, MEMBER(‘MyApp.CLW’) tells the module to use the global scope of MyApp.CLW

    – The form, MEMBER() has no shared scope what so ever. This form is useful for generic code, these days typically for CLASSes

  2. What is the purpose of having a MAP, when it has no procedures in it?

    A MAP is used to declare prototypes for procedure. However an empty MAP isn’t quite as empty as it seems.

    Every MAP brings in %cwroot%\\libsrc\\BUILTINS.CLW
       so

       MAP
       END

       becomes

       MAP
         INCLUDE(‘BUILTINS.CLW’),ONCE
       END

    Other files that are brought in:
       – EQUATES.CLW  (found in %cwroot%\\libsrc)
       – Win32.LIB    (found in %cwroot%\\lib)

  3. How do you make a QUEUE of QUEUEs ?

    You’ll need to use ,TYPEd Queues, and you’ll (typically) use NEW / DISPOSE .

       At it’s core:
       qtChild QUEUE,TYPE
       Name           STRING(42)
                       END

       ParentQ  QUEUE
       ID                  LONG
       Children     &qtChild
                           END

       Here a field of the ParentQ is a reference to another queue. Typically as you’re doing the ADD()s to the parent, you’ll either:
       a) ParentQ.Children &= NULL
       b) ParentQ.Children &= NEW qtChild  !instantiate a new one
       c) ParentQ.Children &= SomeChildQ   !already instantiated

       Remember when you’ve used NEW to instantiate, you are responsible for the matching DISPOSE, so typically when you’re doing DELETE(ParentQ) or wish to FREE(ParentQ) you will want to first DISPOSE(ParentQ.Children).

       qtFolder QUEUE,TYPE
       Name       STRING(FILE:MaxFileName)
       Path       STRING(FILE:MaxFilePath)
       ShortName  STRING(13)
       Date       LONG
       Time       LONG
       Size       LONG
       Attrib     BYTE
       SubFolders &qtFolder
                END

Above is an example of a structure for a queue of queues, where the child queue is of the same structure as the parent queue.

These sorts of structures lend themselves to recursive coding, however it’s not required.