Advanced Programming Techniques

24
Advanced Programming Advanced Programming Techniques Techniques In CA-Clipper 5.3 In CA-Clipper 5.3 TechniCon at CA- World’97 Session: TM103SR

Transcript of Advanced Programming Techniques

Page 1: Advanced Programming Techniques

Advanced Programming Advanced Programming TechniquesTechniques

In CA-Clipper 5.3In CA-Clipper 5.3

TechniCon at CA-World’97Session: TM103SR

TechniCon at CA-World’97Session: TM103SR

Page 2: Advanced Programming Techniques

Always an easier way? Improves programmer productivity Improves application usability Improves application robustness

Why Advanced Programming Techniques?

Page 3: Advanced Programming Techniques

Application performance Development efficiency

Need for control

Page 4: Advanced Programming Techniques

Understand the language Understand the environment Suggest realistic options

Know your tools

Page 5: Advanced Programming Techniques

Think about your task Not just "the usual way" Look for the best way

How to implement?

Page 6: Advanced Programming Techniques

LOCAL lTest := .t.

...

If lTest

lTest := .f.

Else

lTest := .t.

End

Good

Page 7: Advanced Programming Techniques

LOCAL lTest := .t.

...

lTest := If( lTest, .f., .t. )

Better

Page 8: Advanced Programming Techniques

LOCAL lTest := .t.

...

lTest := !lTest

Best

Page 9: Advanced Programming Techniques

Think about your task Take one good technique Ask yourself if you could use this

in another way?

How to implement?

Page 10: Advanced Programming Techniques

MyAlias->( dbSeek( cSomeKey ) )

MyAlias->( dbAppend() )

MyAlias->( dbSkip() )

Page 11: Advanced Programming Techniques

Small sub-functions Modular Re-useable components

Break up your code

Page 12: Advanced Programming Techniques

Combine smaller sub-functions into larger useable units

Mix and Match

Page 13: Advanced Programming Techniques

FUNCTION InOrder( nNewOrder )

LOCAL nOldOrder := IndexOrder()

DbSetOrder( nNewOrder )

RETURN nOldOrder

Page 14: Advanced Programming Techniques

FUNCTION OrdNSearch( nOrder, cKey )

LOCAL nOldOrder := InOrder( nOrder )

LOCAL lRetVal := DbSeek( cKey )

InOrder( nOldOrder )

RETURN lRetVal

Page 15: Advanced Programming Techniques

@ Row++, Col Get OneVar Valid;

Code->( OrdnSearch( 2, OneVar ) )

@ Row++, Col Get SomeVar Valid;

Code->( OrdnSearch( 3, SomeVar ) )

Read

Page 16: Advanced Programming Techniques

If this works here, why not elsewhere? Try it out Experiment Think about your task Examine different ways

Exploit yourself

Page 17: Advanced Programming Techniques

Function ExceptKey( nKey, oBrowse )Local lRetVal := .f.

Do Case Case nKey == K_INS lRetVal := .t.

Case nKey == K_F10 lRetVal := .t.

End

Return lRetVal

Page 18: Advanced Programming Techniques

Local oBrowse := tBrowseDb( t, l, b, r )Local bExceptBlock := { | nKey, oBrowse | , ; ExceptKey( nKey, oBrowse ) }

...

oBrowse:ForceStable()While lBrowsing lBrowsing := MyKeyHandler(oBrowse, bExceptBlock)End

Page 19: Advanced Programming Techniques

Function MyKeyHandler( oBrowse, bExceptions ) Local nKey := InKey( 0 ) Local lRetVal := .t.

If Eval( bExceptions, nKey, oBrowse ) Else Do Case // Process normal keystrokes here End End

RETURN lRetVal

Page 20: Advanced Programming Techniques

Summary data at start of report Multiple reports from same source Same report, varying layouts

Report Problems

Page 21: Advanced Programming Techniques

Memory efficient Powerful Flexible

Use Arrays

Page 22: Advanced Programming Techniques

Report = array Page = array element Output line = Sub-array element

Arrays In Reports

Page 23: Advanced Programming Techniques

Any Questions?

Page 24: Advanced Programming Techniques

Gary Stark

Internet [email protected]

CIS ID 100033,2324