PrestwoodBoards Knowledgebase: portal.prestwood.com/ASPSuite/kb/

www.prestwoodboards.com

Mike Prestwood

Mike Prestwood's Articles Page

434 Articles (full articles, general posts, and/or blog topics).

These Articles are organized by our community groups then by our knowledge base sub-topics.

Group: Linux Users


Topic: Linux Applications

Paradox for Linux resources here and on the net.





Group: C++





Topic: C++ Language Basics

C++ is a hybrid language and as such offers global functions and class methods. A function must come before it's usage or you can prototype the function.






Topic: Standard C++

Using cin and cout in C++ to output values.





Group: Pascal and Delphi Coding





Topic: BDE

This KB Post addresses accessing Paradox tables through the BDE using TDatasource, TTable, and TDBGrid. This tutorial was updated for Delphi 2009 but applies to all versions of Delphi.



Description of the Borland Database Engine (BDE).





Topic: Coding Tasks

This code snippet shows you how to get your NIC MAC address using Borland Delphi.






Topic: Delphi for Win32

Delphi supports both static and dynamic arrays.






Topic: Tool Basics

Borland Delphi editor tips and tricks.






Topic: Language Basics

This primer is intended for those just getting started in Delphi and focuses on displaying things.



Create a classic "Hello, World" Windows native code Console App using Delphi. This tutorial is based on Borland Developer Suite 2006 but you can use any version of Delphi you wish. In this tutorial, you will create a classic "Hello, World!" windows console application. A console application is a type of Windows application that has FULL access to the Win32 API, but it's GUI is limited to a DOS-like text window. When Windows starts a console application, it creates a text-mode console window where the program can display text and the user can interact with the program via the keyboard.



Create a classic "Hello, World" Windows native code application using Delphi. This tutorial is based on Borland Developer Suite 2006 but you can use any version of Delphi you wish.


Object Pascal is generally not case sensitive.



Delphi uses // for a single line comment and both {} and (**) for multiple line comments. Although you can nest different types of multiple line comments, it is recommended that you don't. A special comment. Delphi compiler directives are in the form of {$DIRECTIVE}. Of interest for comments is using the $IFDEF compiler directive to remark out code.



In Delphi, you define constants similar to how you define variables but use the Const keyword instead of the Var keyword. Declare global constants in a unit's interface section and unit constants (scope limited to unit) in the implementation section. Declare local constants above the begin..end block.



Common source code file extensions include:

  • .BDSPROJ - Project, Borland Developer Studio project file holds compiler options, etc. This is the file you open.
  • .DCU - Delphi Compiled Unit file.
  • .DFM - Delphi Win32 form file (a text resource file).
  • .DPR - Delphi project file. Primary project "source" file.
  • .PAS - Delphi unit source file.


Object Pascal allows parameters of the same type to be listed together, separated by commas, and followed with a single data type (more params of different data types can follow, after a semi-colon). The default for parameters is by value. For by reference, add var in front of the parameter. Object Pascal also offers constant parameters where you add const in front of the parameter. A constant parameter is like a local constant or read-only parameter the compiler can optimize. You cannot assign a value to a constant parameter, nor can you pass one as a var parameter to another routine.



Rave Reports comes closest to a Delphi standard now but historically there has been no real standard in Delphi development. Do-it-yourself developers sometimes like to use TPrinter for very simple reports. ReportSmith was bundled with the first few versions of Delphi.

Delphi has offered many embedded VCL component report options. Quick Reports has been a part of Delphi since Delphi 2.0 and has been the default report writer for many Delphi developers. Ace Reporter, ReportBuilder and Rave Reports are also very popular. During the time of Kylix, FastReports was popular because of it's cross-platform nature.



Declare global variables in the interface section of a unit, variables declared within the implementation section (but not within a method) have a scope limited to the unit. You declare local variables in a var block outside (above) your begin..end code block. You cannot declare variables in-line (inside begin..end). You can initialize global and unit variables but you cannot initialize local variables. Delphi offers many variable types. Some common variable types include String, WideString, PCharInteger, Boolean, Single, Double, Pointer, and Variant.






Topic: Language Details

When you want the exception to be the rule. A technique for handling exceptions in Borland Delphi's Object Pascal.



20. Arrays
Arrays in Object Pascal.


This lesson shows you how to create and use several different types of arrays in Object Pascal.


Common comparison operators:

= equal
<> not equal
< less than
> greater than
<= less than or equal
>= greater than or equal



Object Pascal

  • Operator - Yes. But not Pascal.
  • Method - Yes.  


Using Pascal and PChar strings in Delphi.


25. Records
Using record data types in Delphi.


Using case statements in Delphi.


InputBox allows you to set a value, display it to the user, and have the user change it. Although InputBox generally isn’t flashy enough for finished applications, it is great for debugging and smaller “in-house” applications.


MessageBox is similar to ShowMessage but gives you more control over how it displays. This one is a favorite of developers because it is a Windows API function wrapped in a Delphi method. This is important because many Windows development languages support the MessageBox function.


How to use Delphi's two varieties of string variables: Pascal strings and PChar strings.


How to use records in Delphi.


Use SetWindowLong to hide your application.


ShowMessage displays a simple dialog box with the text you provide it. It is one of the most used ways of displaying information.


Simple example of using the carrot operand.


The StatusBar component allows you to write text to the status bar. This is one of the most common ways to display information to a user without stopping their work.





Topic: OOP

Beginners example of creating and using a class. Early versions of Delphi use the standard OO private, protected, and public visibility specifiers plus add published for RTTI info. Later versions of Delphi add strict private and strict protected for a true OO implementation.



Delphi for Win32 supports abstract class members using the abstract keyword. You can even instantiate instances of a class that contains abstract members. Then you override each abstract member in a descendant class with Override. Delphi does not support setting an entire class as abstract. You can create an abstract class (a class with one or more abstract methods), but there is no way to tell the compiler to not allow the instantiation of the abstract class. Delphi does not support abstract member properties directly. To implement an abstract properity, make use of abstract methods. That is, you can read a GetPropertyX abstract function and write to a SetPropertyX abstract procedure. In effect, creating  an abstract property.



In Delphi programming language (Object Pascal), all classes ultimately inherit from the base class TObject.



Delphi allows you to extend an existing class without using inheritance. Buggy in 2005 and not officially supported but stable and usable in 2006 and above. You declare a class helper similiar to how you declare a class but use the keywords class helper for.

  • You can name a helper anything.
  • Helpers have access only to public members of the class.
  • You cannot create an object instance directly from a class helper.
  • self refers to the class being helped.


Declare your class in the Interface section. Then implement the class in the Implementation section.



In Delphi, use the constructor keyword to signify which method or methods are constructors for a class. It is traditional but not required to use a procedure called Create.

In addition to having multiple named constructors, you can overload constructors.



In Delphi, you use the class keyword followed by the parent class in parens. If you leave out the parent class, your class inherits from TObject.



You specify an interface in the type block just like you do for a class but you use the interface keywoard instead of the class keyword and in the interfaces section only. Since interfaces, by definition, do not have any implementation details, all you do is specifiy it in the type block.



Specify Delphi member modifiers as follows:

reintroduce; overload; [binding modifier]; [calling convention]; abstract; [warning]

The binding modifiers are virtual, dynamic, or override. The calling conventions are register, pascal, cdecl, stdcall, or safecall. The warnings are platform, deprecated, or library. Additional directives include reintroduce, abstract, class, static, overload, and message.



Up until D2005, private and protected were not implemented strictly. Starting with D2005, a traditional strict versions of OOP are supported using the strict keyword. OO purist will want you to use strict private over private and strict protected over protected. I suggest you follow that advice until you both fully understand the differences and have a specific need. Delphi offers a special published specifier which is the same as public members but runtime type information (RTTI) is generated.



In Delphi, you specify a virtual method with the virtual keyword in a parent class and replace it in a descendant class using the override keyword. Call Inherited in the descendant method to execute the code in the parent method.






Topic: Using Data

Be careful who you associate with!


Implement static member data in Delphi with variables declared in the implementation section (unit scope). Increment and decrement variable in constructor and destructor. Then use a class function to surface the variable's value publicly.


Heterogeneous Joins in Delphi: by Mike Benemelis. A heterogeneous join is when you join tables from two different SQL servers (or a server and a local table) within the same query. This short article will show you how to perform such queries using Delphi.


How to reindex and pack Paradox and dBASE tables.


SetSystemTime Example


Using DotNet DLLs in Win32 and using Win32 DLLs in DotNet. When. Why. How.


Memory Management and Delphi


The Database Desktop IS Paradox. It's just a stripped down version. The SQL editor in the Database Desktop (and in Paradox) allows you to execute one SQL statement at a time.


With TDataSet.Filter, use square brackets for fields with odd characters like spaces and slashes.





Topic: Using Controls

To determine the total number of columns in a String Grid, refer to its ColCount property and for the total number of rows, refer to RowCount. Determing the currently selected cell is a simple matter of referring to the Col and Row properties.





Topic: Prestwood Delphi Gazette Archive

Our Delphi Gazette ran for a vew years in the late 90s. This page archives 1998.






Group: C# (Visual C# & VS.Net)





Topic: Tool Basics

C# is case sensitive. The following does NOT:

messagebox.Show("hello");  //Does not work!

The first time you type any other case for commands or variables, VS.Net will change it to the accepted or defined case. For example, if you type messagebox.show it is converted to MessageBox.Show. Once corrected, you can break it again by editing MessageBox to messagebox and the compiler will give you an error.






Topic: OOP

C# supports abstract class members and abstract classes using the abstract modifier. An abstract class is a class with one or more abstract members and you cannot instantiate an abstract class. However, you can have additional implemented methods and properties. An abstract member is either a method (implicitly virtual), property, indexer, or event in an abstract class. You can add abstract members ONLY to abstract classes using the abstract keyword.



In C#, you use the class keyword to specify a class and you signify its parent with a colon and the name of the parent class. When you instantiate an object from a class, you use the new keyword.



In C#, a constructor is called whenever a class or struct is created. A constructor is a method with the same name as the class with no return value and you can overload the constructor. If you do not create a constructor, C# will create an implicit constructor that initializes all member fields to their default values.

Constructors can execute at two different times. Static constructors are executed by the CLR before any objects are instantiated. Regular constructors are executed when you create an object.



Use a destructor to free unmanaged resources. A destructor is a method with the same name as the class but preceded with a tilde (as in ~ClassName). The destructor implicity creates an Object.Finalize method (you cannot directly call nor override the Object.Finalize method).

In C# you cannot explicitly destroy an object. Instead, the .Net Frameworks garbage collector (GC) takes care of destroying all objects. The GC destroys the objects only when necessary. Some situations of necessity are when memory is exhausted or you explicitly call the System.GC.Collect method. In general, you never need to call  System.GC.Collect.



Classes and structs can inherit from interfaces in a manner similar to how classes can inherit a base class or struct, but a class or struct can inherit more than one interface and it inherits only the method names and signatures, because the interface itself contains no implementations.

class MyClass: IMyInterface
{  
  public object Clone()
{
return null;
}

// IMyInterface implemented here...
}


In C# you can set the visibility of a member field to any visibility: private, protected, public, internal or protected internal. You can intialize a member field with a default when declared. If you set the member field value in your constructor, it will override the default value. Finally, you can use the static modifier (no instance required) and readonly modifier (similar to a constant).



In C#, parens indicate a method and the lack of parens indicate a property. You use special get and set methods to both get and set the values of properties. For a read-only property, leave out the set method. The value keyword is used to refer to the member field. Properties can make use of any of the access modifiers (private, protected, etc). It is common to use a lowercase member names for member fields ("name" in our example) and uppercase properties to manage member fields ("Name" in our example).



Method overriding allows you to define or implement a virtual method in a parent class and then replace it in a descendant class. In C#, you specify a virtual method with the virtual keyword in a parent class and replace it in a descendant class using the override keyword.



C# uses the keyword partial to specify a partial class. All parts must be in the same namespace.

A partial class, or partial type, is a class that can be split into two or more source code files and/or two or more locations within the same source file. Each partial class is known as a class part or just a part. Logically, partial classes do not make any difference to the compiler. The compiler puts the class together at compile time and treats the final class or type as a single entity exactly the same as if all the source code was in a single location.

You can use them for many things including to separate code generator code, organize large classes, divice a class up so you can split ownwership among multiple developers, have different versions of the same class, and to utilize multiple languages with a single class.






Topic: WinForms

The ButtonsCS project. Create a classic "Hello, World" application using Visual Studio .Net with C# syntax. Requires either the full version or Visual C# Express Edition.






Topic: WebForms Coding Tasks

This article describes the ASPX file extensions.





Group: VB.Net Language





Topic: Tool Basics

This will show how to make a "hello world" console application in Visual Studio 2008 using VB.Net.






Topic: OOP

VB.Net supports abstract class members and abstract classes using the MustInherit and MustOverride modifiers.An abstract class is indicated with a MustInherit modifier and is a class with one or more abstract members and you cannot instantiate an abstract class. However, you can have additional implemented methods and properties. An abstract member is either a method (implicitly virtual), property, indexer, or event in an abstract class. You can add abstract members ONLY to abstract classes using the MustOverride keyword. Then you override it in a descendant class with Overrides.



Declare and implement VB.Net classes after the form class or in their own .vb files. Unlike VB Classic, you can have more than one class in a .vb class file (VB classic uses .cls files for each class).



 A sub named New. You can overload the constructor simply by adding two or more New subs with various parameters.

Public Class Cyborg
Public CyborgName As String
  
  Public Sub New(ByVal pName As String)
CyborgName = pName
End Sub
End Class


Use a destructor to free unmanaged resources. A destructor is a method with the same name as the class but preceded with a tilde (as in ~ClassName). The destructor implicity creates an Object.Finalize method (you cannot directly call nor override the Object.Finalize method).

In VB.Net you cannot explicitly destroy an object. Instead, the .Net Frameworks garbage collector (GC) takes care of destroying all objects. The GC destroys the objects only when necessary. Some situations of necessity are when memory is exhausted or you explicitly call the System.GC.Collect method. In general, you never need to call  System.GC.Collect.



With VB.Net you define an interface with the Interface keyword and use it in a class with the Implements keyword. In the resulting class, you implement each property and method and add Implements Interface.Object to each as in:

Sub Speak(ByVal pSentence As String) Implements IHuman.Speak
  MessageBox.Show(pSentence)
End Sub


In VB.Net you can set the visibility of a member field to any visibility: private, protected, public, friend or protected friend.

You can intialize a member field with a default when declared. If you set the member field value in your constructor, it will override the default value.

Finally, you can use the Shared modifier (no instance required) and ReadOnly modifier (similar to a constant).



VB.Net uses a special property keyword along with special get and set methods to both get and set the values of properties. For a read-only property, leave out the set method. The value keyword is used to refer to the member field. Properties can make use of any of the access modifiers (private, protected, etc).

My preference for VB.Net code is to start member fields with "F" ("FName" in our example) and drop the "F" with properties that manage member fields ("Name" in our example).



In VB.Net, you specify a virtual method with the Overridable keyword in a parent class and extend (or replace) it in a descendant class using the Overrides keyword.

Use the base keyword in the descendant method to execute the code in the parent method, i.e. base.SomeMethod().



VB.Net supports both partial classes and partial methods.






Topic: WinForms

The ButtonsVB project. Create a classic "Hello, World" application using Visual Studio .Net with VB.Net syntax. Requires either the full version or VB.Net Express Edition.





Group: Corel Paradox / ObjectPAL Coding





Topic: Paradox & ObjectPAL

A cuddly tray icon which makes all your apps work with the IntelliMouse scrolling wheel. Two modes of operation are supported. Also, FreeWheel allows you to switch between documents by holding down the control and shift keys while moving the mouse wheel. FreeWheel is free, so dont delay - try it today. You might like it! Requires Microsoft IntelliMouse or equivalent.


Arrays in ObjectPAL use a 1-based indice.

Use size() to get the number of elements. size() returns 0 if the array has no elements.






Topic: Tool Basics

Comparison between dBASE and Paradox (from 1996!!).


My thoughts on whether Paradox for Windows is a good solution for building web-based Internet solutions.


If you have an existing Paradox system you can keep using it but you'll need to skip the Vista operating system and either stick with Windows XP or move to Windows 7. Because better tools exist, you may very well want to put a plan together now for converting to another development tool or at least understand what the future is likely to hold. If you're a power-user or researcher working with data, stick with Paradox.






Topic: Installation, Setup, & BDE

Bottom line is you should skip Vista and either stick with XP or move to Win 7. If you have to use Vista, you might be better off with Paradox 9.



Does Corel Paradox for Windows run on Vista? If so, are there any issues? What about Windows 7?



Procedure for fixing the Could Not Initialize BDE" error.



Paradox 9, 10, 11, etc. install easily on Windows 7! You do have to download WinHelp to get the Paradox help files to work properly.



Instructions to install Paradox 9 for Windows on Vista.



Paradox for Windows has two primary file types: source files and delivered files. Source files in Paradox are binary but can can be opened in later versions of Paradox and even in earlier versions if you don't use any new features: .FSL = Form, .RSL = Report, .SSL = Script, and .LSL = Library. Since Paradox source files do not compile to an EXE, Paradox developers tend to use a startup form or script to start the application.



Paradox does not remember desktop settings. I just installed Paradox 11 on a new computer and my working directory and other settings do not stick when I restart Paradox. Why?



Paradox 9 versions for SP1 through SP4. Plus version info on Paradox 10 and 11.



A trip down memory lane: the icons that shipped with various versions of Paradox.






Topic: Paradox Tables

Overview of using Paradox's table encryption to secure your data.


Use a file server (not a workstation) to store your data, disable Oplocks on the filer server, and configure the BDE (local share to true and optimize if desired). Finally, if workstations are crashing, fix em so they don't. You want clean running computers that don't crash.



Covers ALL Paradox tables from version 4 on including a description of the various Paradox table structures, limits, and specifications.



Step by step instructions for repairing your Paradox tables.






Topic: OPAL: Language Basics

If you've never programmed in ObjectPAL, spend 10 minutes and see how easy it is to program Paradox for Windows.



This detailed ObjectPAL primer will get you up and running developing in Paradox/ObjectPAL within a few hours.



Think levels when you code in the Pardox ObjectPAL development environment.



Common comparison operators:

= equal
<> not equal
< less than
> greater than
<= less than or equal
>= greater than or equal



In ObjectPAL, an empty variable can be unassigned (essentially null) or blank (equivalent to ""). You have to use both isBlank and isAssigned to check for an empty string.



ObjectPAL logical operators:

and and, as in this and that
or or, as in this or that
Not Not, as in Not This



Techniques for thinking about where to put code in Paradox's object-based event model.





Topic: Interactive Paradox: Getting Going

Getting the most out of Paradox's Project Viewer.


Step by step instructions for setting some of Paradox's more useful preferences.






Topic: OPAL: Language Details

The following code demonstrates one technique for adding and subtracting months from a date in Paradox's ObjectPAL.


Demo of importing and exporting spreadsheets using ObjectPAL.


Q. How can you create a table of all the ObjectPAL commands?


Using loop structures in ObjectPAL (for, forEach, scan, while, and looping with timers).



DDE is one of several techniques for merging a word document with a Paradox table.


Demonstration of how to handle dates and times in ObjectPAL.


Paradox character sets: ANSI, OEM, Virtual keycodes (VK Keyboard Constants), and Hex


In 32-bit Windows 95/98/ME/NT/2000, you use the PlaySound function in WINMM.DLL.


Using execute() in ObjectPAL.


ObjectPAL IsFile example demonstrates how to check if a file exists.


Exploring ObjectPAL's TCursor object type.



ObjectPAL methods for using the Window's registry to store and retrieve configuration settings.





Topic: Interactive Paradox: Queries (QBE)

Specifications of query by example





Topic: Interactive Paradox: Reports

Paradox has a built-in report writer that will suffice for nearly all reports you wish to create. You base a report on one or more tables or on a query. It uses a banded approach so you think in terms of records, pages, and report. Except for the record band, each section has a header and a footer. Paradox also offers a quick report which is useful for printing data quickly.






Topic: Interactive Paradox: Using Data

You can use Format | Filter while viewing a table to apply a secondary index.



Paradox versus dBASE tables. Which to use in Paradox for Windows.


Overview of why using BDE aliases are a good idea.





Topic: OPAL: Commands

Tracinging built-in events, setting breakpoints, compiler options, debugging without the debugger, types of errors, the error event, errorShow, and the try structure.


ObjectPAL example that demonstrates listing a set of files and allowing the user to launch any one of them by double clicking.


ObjectPAL example where user selects a file and you extract the path.


Using Paradox internet features. Content from chapter 25 of my "Paradox Power Programming: The Official Guide" book.



Use setWorkingDir then trap for MenuChangingWork in menuAction.


Picture strings from the book Paradox 9 Power Programming.


To test the speed of your code, capture the time before and after your code executes and view the milliseconds between the two dates.





Topic: OPAL: Libraries

Using extended uses in ObjectPAL example.






Topic: OPAL: OOP

Compromise OO implementation strategies for Paradox developers.





Topic: OPAL: Reports

How to use enumUIObjectNames and attach to manipulate a group of objects on a report.


How to send text directly to a printer port (not using a report).





Topic: OPAL: Wicked Coding Tasks

How to add an option to the tools menu.


This overview helps you create and use a reusable progress bar.


Getting started with moving objects with the mouse.


How to use the limited ObjectPAL support in reports.





Topic: OPAL: Win32 Calls

TAPI ObjectPAL example.





Topic: Professional Paradox/ObjectPAL Help

Is Paradox the right tool for your new application?


Should you continue supporting your Paradox legacy applications?


If you've lost your master password for your Paradox tables, we can help you recover your data.





Topic: Runtime, PDE, Package-It!

Paradox for Windows Command-Line Options, runtime registry settings, adding menu items to Paradox, and manually setup a Vista shortcut.



List of commercial applications developed in Paradox for Windows


Listing of Paradox features NOT available in Paradox Runtime.



Getting started using the application framework in Paradox 9.





Topic: P5 Book: What Every Prgrmr Should Know

Chapter 1 of What Every Paradox for Windows Programmer Should Know by Mike Prestwood.


Chapter 2 of What Every Paradox for Windows Programmer Should Know by Mike Prestwood.





Topic: P7 Book: Programming Unleashed

Chapter 27, "Using DDE, OLE, and OLEAuto" from Paradox 7 Programming Unleashed by Mike Prestwood.


The four appendices for Paradox 7 Programming Unleashed included on the CD-ROM.





Topic: P9 Book: Power Programming

Forward to my book Paradox 9 Power Programming: The Official Guide. The forward is by Michael Cowpland (Chairman, President and CEO, Corel Corporation).



We still have a high demand for my book titled, "Paradox 9 Power Programming" by Mike Prestwood. So we're still doing our book buy back. If you've got one sitting on your shelf, please consider selling it to us.


Chapter 1 titled, "The Paradox Development Environment" from Paradox 9 Power Programming by Mike Prestwood.


Chapter 2 "Tables and Developing" from Paradox 9 Power Programming: The Official Guide by Mike Prestwood.


Chapter 3, "How to Develop Forms" from Paradox 9 Power Programming by Mike Prestwood.


Chapter 4, "An Introduction to ObjectPAL" from Paradox 9 Power Programming by Mike Prestwood.



Chapter 6, "The Event Model" from Paradox 9 Power Programming by Mike Prestwood.


Chapter 7, "More About Syntax - Part 1" from Paradox 9 Power Programming by Mike Prestwood.


Chapter 10, "Using Table Windows" from Paradox 9 Power Programming by Mike Prestwood.


Chapter 11, "Programming with Queries" from Paradox 9 Power Programming by Mike Prestwood.


Chapter 12, "Handling Reports" from Paradox 9 Power Programming by Mike Prestwood.



Chapter 13, "Crosstabs and Charts" from Paradox 9 Power Programming by Mike Prestwood.


Chapter 14, "Using Table and TCursor Variables" from Paradox 9 Power Programming by Mike Prestwood.


Chapter 15, "Fields, Table Frames, and MROs" from Paradox 9 Power Programming by Mike Prestwood.


Chapter 16, "Handling the Keyboard" from Paradox 9 Power Programming by Mike Prestwood.



Chapter 17, "Manipulating Objects At Run Time" from Paradox 9 Power Programming by Mike Prestwood.


Chapter 18, "Reusing Code" from Paradox 9 Power Programming by Mike Prestwood. Includes coding custom methods, custom procedures, and using ObjectPAL libraries.


Chapter 19, "Imitate Users with Action, PostAction, and MenuAction" from Paradox 9 Power Programming by Mike Prestwood.


Chapter 24 "SQL and Client/Server Applications" of Paradox 9 Power Programming by Mike Prestwood.



This chapter will introduce you to creating both menus and pop-up menus. If you are going to create an application-wide menu, then I strongly recommend you use Paradox’s Application Framework. This chapter will instruct you how to create menus for non-Application Framework applications and pop-up menus you can use with both.






Topic: Paradox for Win16 (versions 1-7)

Converting Your 16-bit Paradox for Windows applications to 32-bit Paradox for Windows





Topic: Paradox for DOS

Discussion of aggregators in Paradox for Windows reports as they relate to Paradox for DOS.


For maximum compatibility, use compatibility mode and adjust settings (640x480, and run in a Window, etc.).






Topic: Paradox for Linux

Chapter 26 by Mike Prestwood from the book WordPerfect Office 2000 for Linux: The Official Guide. First published June 2000 by Osborne-McGraw/Hill. ISBN 0-07-212238-2.



Chapter 27 by Mike Prestwood from the book WordPerfect Office 2000 for Linux: The Official Guide. First published June 2000 by Osborne-McGraw/Hill. ISBN 0-07-212238-2.



Chapter 28 by Mike Prestwood from the book WordPerfect Office 2000 for Linux: The Official Guide. First published June 2000 by Osborne-McGraw/Hill. ISBN 0-07-212238-2.



Chapter 29 by Mike Prestwood from the book WordPerfect Office 2000 for Linux: The Official Guide. First published June 2000 by Osborne-McGraw/Hill. ISBN 0-07-212238-2.



There is no "good" path for converting a Paradox for DOS application to either Paradox for Windows or Paradox for Linux.





Group: Visual Basic Classic





Topic: Tool Basics

Commenting Code
VB Classic, like all the VB-based languages, uses a single quote (') or the original class-style basic "REM" (most developers just use a quote). VB Classic does NOT have a multiple line comment.

Directives - #

Directives are sometimes called compiler or preprocessor directives. A # is used for directives within VB Classic code. VB Classic offers only an #If..then/#ElseIf/#Else directive.



VB Classic is a loosely typed language. Declaring variables is optional unless you use the Option Explicit statement to force explicit declaration of all variables with Dim, Private, Public, or ReDim. Using Option Explicit is strongly recommended to avoid incorrectly typing an existing variable and to avoid any confusion about variable scope.

Undeclared variables are variants. To specifically declare a variant, use:

Dim x As Variant
Dim x 

Common data types include Byte (0..255), Boolean, Integer (2-byte integers), Long (4-byte integers), Currency, Single (32-bit number), Double (64-bit number), Date, String, and variant.

Variables declared with Dim at the module level are available to all procedures within the module. At the procedure level, variables are available only within the procedure.






Topic: Language Basics

VB Classic logical operators:

and and, as in this and that
or or, as in this or that
Not Not, as in Not This






Topic: Language Details

VB Classic is a non-OOP language with some OOP features. It offers both Subs and Functions. A Sub does not return a value while a Function does. When Subs and Functions are used in a class module, they become the methods of the class.






Group: ASP Classic Coding





Topic: ASP Classic

ASP and ADO coding best practices.


Arrays in ASP Classic use a 0-based indice.

Use UBound to get the number of elements. UBound returns -1 if the array has no elements, 0 if it has 1, 1 if it has 2, etc.



In ASP Classic, you have to add an empty string to the value being compared in order to get consistent results. For example, add &"" to your string varilable or it's code equivalent &vbNullString. Then compare to an empty string or verify it's length to 0 with Len.



Developer blog journal for our ASPSuite product. This blog is intended for the Prestwood ASP Classic developers.


Using CDO to send email.


Introduction to the global.asa file.


Use IsEmpty or Len > 0 to test
When clearing, set to Null (not "")





Topic: Tool Basics

An example of using ASP's Response.Write and creating functions.



Save as VB Classic.






Topic: Language Basics

The End If is optional if you put your code on a single line.



Same as VB. ASP Classic logical operators:

and and, as in this and that
or or, as in this or that
Not Not, as in Not This



In ASP, you can buffer a RecordSet in either a session or application variable. This code snippet shows you how to create a reusable method for buffering RecordSets in an application variable.


Use Application.Contents.RemoveAll and Session.Contents.RemoveAll



Many users these days have very wide screens. This article shows you how to determine the browser width using ASP classic.


Code sample to get a count of the number of fields in a table of a particular field type (a particular DataTypeEnum).


You can use JavaScript to set an IIS App var to the GMT server difference. Then use that number in your code.


This code snippet shows you how to loop through a form's fields.


Call randomize then call Rnd to generate a random number between 0 and 1.


How to use ASPMail to send email from your web site.



You can use "On Error Resume Next" to suppress errors and "On Error Goto 0" to stop suppressing errors.





Topic: Language Details

Use the scriptiing dictionary object which is available on later versions of ASP Classic (all still commonly in use). Both Access VBA and VB Classic use a collection for this but collections are not supported in ASP Classic.

Dim StateList
Set StateList = Server.CreateObject("Scripting.Dictionary")
StateList.Add "CA", "California"
StateList.Add "NV", "Nevada" 
Response.Write "I live in " & StateList.Item("CA")


Using a RecordSet's properties, methods and events.


Response.Flush sends the contents of the buffer to the browser. This command is useful for showing a visitor something while slow loading pages load.



Use Weekday and WeekdayName to return the day of week in ASP.





Topic: OOP

Ultra-primitive (no inheritance) but useful and encourages you to think and design using objects.



When an object instance is created from a class, ASP calls a special parameter-less sub named Class_Initialize. Since you cannot specify parameters for this sub, you also cannot overload it.

When a class is destroyed, ASP calls a special sub called Class_Terminate.



When an object instance is destroyed, ASP calls a special parameter-less sub named Class_Terminate. For example, when the variable falls out of scope. Since you cannot specify parameters for this sub, you also cannot overload it.

When an object instance is created from a class, ASP calls a special sub called Class_Initialize.



ASP classic uses the property keyword and special Get and Let methods to both get and set the values of properties.



The member visibility modifiers are Private and Public. If not specified, the default is Public. Private and Public have the usual meaning. Private members are visible only within the class block. Public members are visible within the class and outside of the class.






Group: Website Design & Hosting





Topic: Beginners Corner

214. Using FTP
How to use FTP to upload your web site pages.





Topic: DNS Settings

MX Records - web hosting, e-mail, machine name





Topic: Free Website Scripts

Free Guestbook Script, web hosting, webmaster





Topic: HTML Language Reference

Translation of entity references and special codes ( such as < to < ).


The tag specifies the font face, font size, and font color.





Topic: MS Frontpage

Browser safe colors consist of 216 colors that have been agreed upon and should look good on any type of monitor capable of displaying 256 colors or higher.


Browser safe colors consist of 216 colors that have been agreed upon and should look good on any type of monitor capable of displaying 256 colors or higher.


These browser safe fonts will render well on various operating systems and browsers.


Rules and guidelines for building a better home page.


We just received FrontPage 2003 beta 2 and Microsoft has continued to add features for serious developers.


Microsoft is killing FrontPage later THIS YEAR!





Topic: Server Farm: RS

This article shows you how to access your web hosting control panel.


Summary of the Prestwood hosting plans Java capabilities.





Topic: Unix Hosting

Now you can add LIVE CHAT to your web site easier than you ever imagined. The VolanoChat system is a combination of server and client side Java programs. The client side Java applet (46 KB to 57 KB depending on browser) is downloaded by the browser and then executed on the user's local machine. The client applet then communicates with the software located on the server to create a live real-time chat environment.


You can assign unique userids and passwords to control access to various web pages.


Limitations on UNIX Connections.





Topic: Website Design

This article is a basic introduction to HTML authoring.



How to create image maps. Imagemaps allow the user to click on predefined sections of a graphic picture on your page and have the server respond as if they clicked on a text hyperlink.





Topic: Website Hosting

How to allow anonymous FTP on your Prestwood hosting account.


Answers to questions you may have about using Microsoft's FrontPage on Prestwood Servers.



How to get your forgotten or lost Prestwoood hosting account password.



Frequently Asked Questions about email on our hosted websites.





Topic: Website Scripting

13 things you can do to make your code more secure, general advice about the rest of it, PLUS YOUR COMMENTS and experiences.






Topic: Windows Hosting

ASP.NET web hosting frequently asked questions.



Summary of the "special" directories used with our Windows hosting plans.


Limitations of using Microsoft Access as a database in a hosting environment.


How to use a DSN to connect to a database (specific to our Windows web hosting clients).


We recently upgraded the way in which our statistics packages for Windows 2000 hosting plans store and log their web site data.





Group: Java





Topic: Language Details

General Info: Inheritance

The concept of a class makes it possible to define subclasses that share some or all of the main class characteristics. This is called inheritance. Inheritance also allows you to reuse code more efficiently. In a class tree, inheritance is used to design classes vertically. (You can use Interfaces to design classes horizontally within a class tree.) With inheritance, you are defining an "is-a" relationship (i.e. a chow is-a dog). Analysts using UML call this generalization where you generalize specific classes into general parent classes.

Java Inheritance

Simple syntax example of class inheritance.






Group: JavaScript and AJAX





Topic: Beginners Corner

Short 10 minute getting started JavaScript primer.


Description of the JavaScript event handlers.


JavaScript frequently asked questions.


Adding JavaScript to your HTML forms to validate form fields.





Topic: Coding Tasks

For IE 4+, this script will give visitors to your site the option to add your page to their favorites. For Netscape users it will remind them to press Control + D, for all others, it simply reminds them to bookmark your page.


How to validate form field is blank or not using JavaScript.


How do you do a really simple 30 second countdown in JavaScript?


How to specify browser size with Javascript.


A Javascript "You are here:" location script that uses your folder path to indicate location.





Topic: JavaScript and AJAX

JScript is Microsoft's implementation of JavaScript.





Topic: Language Reference

JavaScript uses functions and loosely typed parameters. Function definitions must come before their usage so the usual preference when adding JavaScript to HTML pages is to include them between the head tags.



Javascript operators: assignment, comparison, computational, and logical.


JavaScript reserved words





Group: Perl





Topic: Beginners Corner

A short 10 minute Perl primer. Get started in Perl now!



Literals are quoted as in "Prestwood".  If you need to embed a quote use a slash in front of the quote as in \"



Perl is a loosely typed language with only three types of variables: scalars, arrays, and hashes. Use $ for a scalar variable, @ for an array, or % for a hash (an associative array). The scalar variable type is used for anytype of simple data such as strings, integers, and numbers. In Perl, you identify and use a variable with a $ even within strings






Topic: Language Reference

List of Perl operators.






Topic: Perl

Perl uses subs and parameters are referenced in a special array. All arguments passed to a subroutine are stored in a special @_ array. To retrieve the arguments, you have to look inside the array and extract them.






Group: PHP & Delphi for PHP





Topic: Beginners Corner

Download page from PHP.Net.



Declare associative array with initial known values. You can also add to associative array. (You can just assign values without ever declaring it too!)



In PHP you can use quotes, or apostraphies as in "Prestwood", and 'Prestwood'. Use a slash in front of a quote or apostrophe to embed same type as in \' and \".



PHP uses a period (.) known as a dot to concatenate strings.



PHP is a loosely typed language. No variable types in PHP. Declaring and using variables are a bit different than in other languages. In PHP, you identify and use a variable with a $ even within strings!

You assign by reference with & as in &$MyVar.






Topic: Language Reference

PHP uses functions and loosely typed parameters. Function definitions can come before or after their usage so my preference when mixing PHP in with a mostly HTML page is to put the functions after the </html> tag.






Topic: PHP

PHP has become more conformed to CGI specifications and as such, you will need to make changes to your code in order for global variables to be filled in.





Group: Coding & OO





Topic: Borland Database Engine

Download BDE 5.202 (includes a small BDE Information utility for testing the installation).



Q. I've updated my BDE from version 5.01 to version 5.2.0.2 but the About BDE Administrator dialog still shows version 5.01?

A. Your update may have taken. Updates typically just replace the DLLs the BDE uses so you may have the latest installed.

Version Information
To see what version of the BDE engine you "actually" have installed, you need to look at the Version Information from within the BDE Administrator. Select Object | Version Information... to see the DLL version numbers






Topic: Object Orientation (OO)

270. Aggregation

Aggregations indicate a whole-part relationship, and are known as "has-a" or "is part of" relationships. An Aggregation relationship is indicated by a line with a hollow diamond.



Overview and introduction to object orientation. When you analyze, design, and code in an OO way, you "think" about objects and their interaction. This type of thinking is more like real life where you naturally think about how "this object" relates to "that object". Classes represent the "design" of an existing object. The values or properties of an existing object is it's current state. When designing classes, OO supports many features like inheritance (like real-life where you inherit your parents characteristics), encapsulation (hiding data), and polymorphism (the ability of one thing to act like another or in different ways).


272. Inheritance

The concept of a class makes it possible to define subclasses that share some or all of the main class characteristics. This is called inheritance. Inheritance also allows you to reuse code more efficiently. In a class tree, inheritance is used to design classes vertically. (You can use Interfaces to design classes horizontally within a class tree.) With inheritance, you are defining an "is-a" relationship (i.e. a chow is-a dog). Analysts using UML call this generalization where you generalize specific classes into general parent classes.



Our most popular article in the history of our online community! Explains the "is a", "has a", "uses a", and "looks like" relationships (updated May 2007). "Is a" is inheritance, "looks like" is interfaces, "has a" is aggregation, and "uses a" is composition.



A static member is a member you can have access to without instantiating the class into an object. For example, you can read and write static properties and call static methods without ever creating the class. Static members are also called class members (class methods, class properties, etc.) since they belong to the class and not to a specific object. A static class is a class that contains only static members. In the UML, these classes are described as utility classes.






Group: DBA, Databases, & Data





Topic: ANSI SQL Scripting

To find duplicate values in the same field, you need to use an alias with the same table twice.





Topic: DBA & Data

Reference of common table structures


List of common field names, along with suggested field type and length. These are only suggestions and shouldn't be taken as gospel. Use as a starting point.


Description of dBASE IV field types





Topic: Desktop Databases




Topic: Interbase

Interbase database and field specifications





Topic: MS SQL 97 / 2000

The preferred technique for transferring an MS SQL database is to do a complete backup and restore.





Group: Windows Users





Topic: Features You Should Know

You should occasionally review your Windows update history and make sure all updates are succeeding.






Topic: Microsoft Office

How do you turn off Markup comments in Microsoft Word so the next time I open a document, I do not see the markup comments by default?






Topic: Microsoft Outlook

To view the source code of an HTML email as text like you could in Outlook 2003, select Actions | Other Actions | View Source in the Move panel of the ribbon. Also available on the same menu is Message Header and View in Browser.






Topic: Online Security

Don't use it until they fix major problems with false positives and until they stop pubicly displaying your email address!






Topic: Windows 7

The Windows 7 Home, Professional, and Ultimate editions will retail at a lower price than Vista. The upgrade pricing is available for XP and Vista users but XP users will have to perform a clean install. Gone is the Business edition. It's now back to it's pre-Vista Professional name.

Windows 7 Pricing:

  • Home Premium New User: $199.99, Upgrade: $119.99
  • Professional New User: $299.99, Upgrade: $199.99
  • Ultimate New User: $319.99, Upgrade: $219.99





Topic: Windows Users

Protect your computer before it slows down, you lose data, or someone steals information. The basics are an antivirus program, Windows Updates, and a firewall. Beyond that, I like to use several programs that add layers of protection to your computer.



See what services are running inside of SvcHost.EXE. See what is causing your 99% CPU usage.


If your computer was fast but is now slow, you can use techniques such as adware removers, defrag, and others to bring your PC back to life! You can also add hardware to speed up your computer (RAM, SATA HD, better video card, etc.).



How do I uninstall Internet Explorer 9?



What is the maximum file + path name allowed in Windows?






Topic: Windows Vista

Windows Help program (WinHlp32.exe) does not ship with Microsft Vista nore with Windows Server 2008 but is available for download.


To create a shortcut, right click on the deskop and select New | Shortcut. The old ways of altering the properties or even copying existing shortcuts is now very limited.






Topic: Windows XP

The Microsoft Windows Key (WinKey) does more than just display the Start menu.





Group: Computer Tech





Topic: Backup Software

Our FAQ list primarily for our clients where we highlight the most important Carbonite questions.



To add an extension, right click on a file, select Properties. On the Carbonite tab, check the Back up files of this type (within folders selected for backup) checkbox. Alternatively, you can specify specific files to back up by right clicking the file and selecting Carbonite | Back This Up.






Topic: Computer Tech

Phone numbers of the major computer manufacturers.



Link page for common support pages.






Topic: Domains

For a particular user on a particular computer, all programs installed for all users will still be available whether they log into their computer or the domain. You will have to migrate all other user specific settings either manually or use an automated tool.

Both of which are incomplete so expect to have to manually migrate some application specific settings and data for each user. At a minimum, log into the old local account and migrate My Documents, Desktop, Favorites, and perhaps e-mail such as the Outlook .PST or Outlook Express .DBX files.






Topic: RAM

DDR RAM generally comes in one of  four speeds: PC1600, PC2100, PC2700, and PC3200.






Topic: Software

If you maintain more than a few computers, here are 10 applications you should have in your toolbox of software.



From bit to exabyte, know your quantities.


In a batch file, schecule DOS command shutdown. Use shutdown /? for specifics. Use net stop to kill services before hand if you wish. Use task scheduler to schedule the execution of the batch file.






Topic: Windows Server 2003

In Windows Server 2003 terminal server, how do you automatically log off disconnected sessions? I'm getting the following error:

"The terminal server has exceeded the maximum number of allowed connections. The system can not log you on. The system has reached its licensed logon limit. Please try again later."






Topic: Wired Networking

Do I need different connectors for Cat 6 then what I'm currently using for Cat 5?






Group: Computer Industry





Topic: General News & Trends

Borland's annual developer conference was held this month in Long Beach CA. Attending the conference for Prestwood were Scott Wehrly, Mike Prestwood, and Kim Berry.






Topic: IT Water-Cooler for Power-Users

Industry links. Add your computer related website to our list of websites.


List of books and articles every IT professional should read. Add your recommendations!


Use if you have a physical location and want to appear in local search results.






Topic: Lighter Side

Apparently if the first and last letters are correct, the rest don't matter.





Topic: Techie Jokes

We can't do this proposed project.



312. Wife Upgrade

Last year a friend of mine upgraded Girlfriend 1.0 to Wife 1.0






Group: Technical Writing





Topic: Publishing

Use up to four levels within articles (Heading 1..4). Within text, bold language elements and menu options. Use italics to bring attention to non-code things such as companies, important words, etc. Use bold+Italic for embedded topics and follow with a colon. Use the paragraph style for text and preformatted for code. Max width for images is 700 pixels.





Group: PM, Process, and PSDP





Topic: PSDP & Process

This change management procedure is specific to Prestwood Software Development Process (PSDP).  PSDP is our free process we maintain and distribute as well as use with our own clients. Althought this is specific to PSDP, you can read it with an eye toward your own change management procedure. Do you use version control software? Do you use promotion groups?






Topic: PSDP Analysis

The term software artifact has a general meaning in software development process. Several processes have used this term as part of their process. This article focuses on both the general definition and a specific implementation in PSDP Online.





Topic: PSDP Development

Guidelines for create proof of concepts (POCs).






Topic: PSDP General

Description of PSDP.


Brief summary of how UML workflows map to the PSDP phases.





Group: Staff Intranet





Topic: Coding Div Training

Ted talk on design appropriate for software developers.






Topic: Directors (Tech=AD/MP Others)

Info for all our directors.



Kick start tech staff. Watch tech whiteboard to make sure all use their planner. Plus watch it throughout day to make sure they enter timers within 5 minutes of returning and have one running at the office for their stuff. All=whiteboard/clean. Each=Planner, My Home, communication, then work from assignments.



TBD






Topic: eBay Management (AT)

Procedure and notes regarding Prestwood listings on eBay.






Topic: Filing (LP/AP)

324. Filing

At least twice a week, file all papers in GRAY slots on top of filing cabinet.






Topic: Holiday Cards, Oct/Nov (LP)

The holiday season is a great opportunity to "touch base" with every single client.






Topic: Marketing

Claim your free listing. Phone verification required.






Topic: Monthly Coupons (AT)

Maintain coupon database and printed coupon at front of office.

We use retention coupons to close a deal and to help soothe an upset client. Prize coupons require an authorized signature.






Topic: Office Cameras (AT)

Our QT4 series cameras replaced our old system in February 2012.






Topic: Client Forms

In Word templates and printed.



Word templates and printed.



Covers Timer Billing, WO Billing, and Items Tickets.






Group: PrestwoodBoards





Topic: Message Board Help

How to become a moderator and moderator's guide.



How to create a custom avatar for use with http://www.prestwoodboards.com.


Guide to using our message boards


Our Prestwood Community rank titles are based on Star Trek's Starfleet Officer Ranks. I know, I know, it's a bit geeky, but what the heck. You rise up in the ranks by earning Prestwood points with our Member Points Program. You earn points by participating in our online community: visit, post, etc. You can spend your points in our online store.

Cadet 1st Year=O-0,  Lieutenant=O-3, Commodore=F-1, more...

The easiest way to earn points is to visit daily and post to our Prestwood Message Boards.






Topic: PrestwoodBoards

Displaying code snippets in the knowledge base and message boards can be a bit tricky. You cannot use "&_lt;", "&_gt;", "&_amp;lt;", nor "&_amp;gt;" (minus underscores).


Member points information.



A message board is for Q&A, blogs are personal, and WIKI's are controlled.



From any group, you can display a random tidbit, article, cross reference example, or message board thread. This is a fun and convenient way to browse content quickly to find interesting gems. To use this new feature, visit your favorite group and click on one of the random links in the left column menu.



The Prestwood Online Community rules and disclaimers. Essentially, our policies all center around be-friendly, don't flame, encourage more discussion, and limit advertising to approved areas.



Good behavior while participating in online communities, blogs, newsgroups, message boards, etc. Although this article is specific to our website, it's intention is general in nature.



Go to pda.prestwood.com for the small screen version of PPC with small screen features such as a random tidbit browser for studying on the go! All pages are specially designed to look as good as possible on your tiny-screen phone, iPhone, Blackberry, PocketPC, or Palm. To get started, browse to pda.prestwood.com with your PDA-ish device.

kb PDA articlekb PDA article






Group: Prestwood IT Solutions





Topic: ASPSuite

This error is usually a result of folder permissions.



How customizable is ASPSuite.






Topic: ATIS

The current version of ATIS is 4.9. We are currently focusing on supporting existing ATIS customers.






Topic: Coding Services Info

To Do:

  1. Create a new project ticket to store requirements.
  2. Create 1 tasks or artifact for each specific feature or deliverable to the client. For example, one artifact for the framework, and one for each form, report, and supporting application such as an installation program, or help file. If a printed user manuel is desired, we usually complete that with a separate Documentation project, but you could add that as a task to the requirements document as well.

2-Step or Rolling Estimates

With our 2-Step approach, we stop after an initial step-1 effort and seek authorization to build the application. With our rolling estimates approach, we just roll right into building the application frequently starting the initial coding phase toward the end of a Req+Design phase.

Informal, Formal, and Robust

For our PSDP informal path, the requirements project is approved and we usually just roll with the requirements project as Step-2 of our 2-Step approach. With our Formal and Robust paths, our preferred technique is to copy the initial requirements into a new project and close the Initial Requirements project as complete prior to building the application. This allows us to establish a baseline of requirements and estimates we can measure ourselves against as the project proceeds. Plus, it clearly documents and changes in scope.

 



Project management. Generally project management ranges from 10% to 30% of a project budget. However, the amount of project management required depends on the project.



When converting an application, developers need access to a working version of the old app.

Setup old application so Prestwood developers have access to exercising the application. The old app can be setup at Prestwood, or at the client. If at the client, we need VPN access available to the application throughout the duration of the project.



Help stabilize Paradox System with our proprietary procedure including oplocks, BDE settings, software updates (latest appropriate BDE/Paradox), and stabilize computers too. Also includes review of deployment architecture (appropriateness).






Topic: eStore Storefront Software

Alter w_pay.inc. Prestwood eStore ships with an example that uses authorize.net.



Use pay.inc to integrate various merchants.






Topic: Historical Archive

Historical view of our old office located at 7525 Auburn Blvd, Ste 8.



Picture tour of the Prestwood offices at 8421 Auburn Blvd, Suite 256 (Auburn Oaks Plaza business complex).






Topic: JobDB

Code example of including a list of the 10 most recent jobs from Prestwood JobDB. (Prestwood JobDB is a module available with Prestwood ASPSuite.)






Topic: Load Balancer

Load Balancer installation.


Load Balancer routing options.


Load Balancer startup configuration options.


Load Balancer user interface options.





Topic: Prestwood eMag

Suggested topics and ideas for our monthly eMag.





Topic: Prestwood I.T.

Our security and privacy policy.






Topic: Prestwood IT Events

Prestwood IT received two Best of Citrus Heights 2011 plaques at the annual Best Of luncheon. Prestwood IT won for best company in both Web Design and Computer Consulting categories. The event was sold out with over 150 attending.






Topic: RequestDB

Code example of including the RequestDB mini control panel in your pages (for example, as part of your intranet).






Topic: ResumeDB

Code example of including a list of the 10 most recent resumes from Prestwood ResumeDB. (Prestwood ResumeDB is a module available with Prestwood ASPSuite.)






Topic: Tech Services Info

DriveSavers Partner. After our recovery attempts, offer to send to DriveSavers or equivalent. Price ranges from $500 to $1,500.



Computer data backup services for home users and small businesses in the greater Sacramento, CA area including online backup for disaster recovery, onsite hard drive backup, redundant hard drives in servers AND KEY WORKSTATIONS, and data backup and restore from one computer to another.






Topic: Web & Marketing Services Info

Optimize website for primary city of business and surrounding cities (up to 6 cities total). Optimized for cities, zip codes, and area codes specified. This combined with our SEO Primary Bundle will ensure your website and services will be found in your community.






Topic: Help Wanted!

We are always looking for talented developers to work with us at our corporate office in Citrus Heights, CA and remotely from your home office.



We are always looking for talented developers to participate in our message boards, post articles, etc.


New unpaid intern position posted to Craigslist. We hire about 1 in 4 techs that go through our formal intern program. Either way, it's a great way to gain some real industry experience.



371. Help Wanted!

Help Wanted!

Computer Techs and .Net Coders wanted

Do you live within 30 minutes of our office? Contact Us. Hiring now for the following positions:

  • Server Tech
  • .Net Programmer
  • Delphi Programmer
  • Paradox Programmer

Fax your resume to 916-726-5676.

Are you a talented server tech or .Net coder? If you live within 30 minutes of Citrus Heights, CA (near Sacramento), and are looking for work, contact us. We are looking to fill two postions at our corporate office in Citrus Heights (sorry, no remote work available).



We offer 2 referal programs: client and general .






Topic: Company Info

New computer support brochure!!! Printable versions of our brochures and flyers in PDF format.



Prestwood IT advertising strategy and history.



Listing of Prestwood IT awards. We will back fill with our varioius wins as time allows.



Prestwood IT Company Profile



Listing of Prestwood IT memberships and certifications.



Listing of Prestwood partners.



Social networking is a bit confusing! Emailing and calling are still the standards. Is faxing still ok? What about Facebook? Do I friend someone or become a fan of their fan page? Wait, what happened to fan pages? Are they now Facebook pages? What about Facebook groups? What about LinkedIn, YouTube, Twitter, MySpace, and others?

The following articles are posted to the PrestwoodBoards knowledge base:

The Prestwood Strategy: Although we still prefer phone calls and email, we do use social media to reach out. Our primary form of social networking is not with our clients, but with fellow IT professionals at PrestwoodBoards.com. Use the link above to learn more including how to interact with Prestwood IT, our other websites and groups, and our staff including Mike Prestwood.

For more information see...



Prestwood IT believes in community and participates as frequently as possible in sponsorships.



Our various Prestwood IT and PrestwoodBoards logos.



The following comments are a mix of comments from visitors to our www.Prestwood.com (business), and www.PrestwoodBoards.com (online community).






Group: Analysis & UML





Topic: Data Flow Diagrams (DFD)

DFDs document a process by documenting the flow of data throughout the process. They depict how data interacts with a system. They can be used to engineer a new process, document an existing process, or re-engineer an existing process.






Topic: Unified Modeling Language (UML)

This introduction to the UML covers symbol usage, definitions, and creating diagrams. The UML standardizes what diagrams with what symbols for what situation. The UML is complete with diagrams for analysis, design, and coding. Use use case diagrams to document how users (actors) use a system (a use case). Use class and object diagrams for the design and coding of a system. A class is the prototype for an object. An object has attributes (properties) and the current values of those properties is the current state of the object.





Group: Microsoft Access





Topic: Language Basics

Access VBA, like all the VB-based languages, uses a single quote (') or the original class-style basic "REM" (most developers just use a quote). Access VBA does NOT have a multiple line comment. Directives are sometimes called compiler or preprocessor directives. A # is used for directives within Access VBA code. Access VBA offers only an #If..then/#ElseIf/#Else directive.



Same as VB. Access VBA logical operators:

and and, as in this and that
or or, as in this or that
Not Not, as in Not This



Access VBA is a loosely typed language. Declaring variables is optional unless you use the Option Explicit statement to force explicit declaration of all variables with Dim, Private, Public, or ReDim. Using Option Explicit is strongly recommended to avoid incorrectly typing an existing variable and to avoid any confusion about variable scope. Variables declared with Dim at the module level are available to all procedures within the module. At the procedure level, variables are available only within the procedure.






Topic: Language Details

Access VBA is a non-OOP language with some OOP features. It offers both Subs and Functions. A Sub does not return a value while a Function does. When Subs and Functions are used in a class module, they become the methods of the class.






Group: Website Owners





Topic: Getting Started

List of 20 reasons why you need to be on the Internet including to establish a presence/advertise, serve your customers, network with staff and vendors, to support your customers 24 hours a day, to reach the media, and to serve your local market.

Use these reasons as an Internet and email marketing guide for your web site. Does your website fully utilize each applicable reason?



A static website is like a brochure. A dynamic website uses a database to present large amounts of data.





Topic: Internet Marketing

Ideas for promoting your website.


Marketing and sales is about reaching out to people. People are on social networks so you, or your company, should be out there too. For some companies, a particular social network such as Facebook is another valuable marketing channel. For others, a social network might be a way they interact with their key customers or vendors.



Currently Facebook is the "it" website for social networking. Create a business page for your business, but ONLY if you‘re going to post business stuff to it at least once a month. A simple approach is to show the more social side of your business. Yes, you can post company happenings like specials, awards you‘ve won, events you‘re attending, and company functions like company picnics and get togethers.

You have to have a personal account, but if you really don‘t want to be on Facebook, you can create a personal Facebook account and only use it for business. This approach allows you to friend clients and interact with them, but you‘ll have to be disciplined and keep your family and true friends off of it, and keep it business focused. Meaning, like the old days, keep your politics, religion, and sex to yourself. You‘ll have to act within your personal Facebook page like you act at the office--professionally at all times.

If you already have a personal account, create a Facebook page for your business. If you don‘t wish to mix personal info with business, set your privacy settings to friends-of-friends and direct business-folk to your page. Facebook groups are limited to 5,000 members and are used for family, or friends, or club-like activity. However, if your club activity is public, it is better to use a fan page any way. Just like your public account, fan pages are indexed by the search engines but groups are not.






Topic: Website Design Services

Increase your company's IQ with a properly built company wide intranet.


e-Commerce * e-Business * Members-only * Online Databases


FAQs related to Prestwood building your website.





Topic: Website Owners

Common security tasks for web browsers and web servers.





Group: Delphi Prism





Topic: Delphi Prism

In Prism, a string can be nil (unassigned), assigned an empty string (""), or assigned a value.  Therefore, to check if a string is empty, you have to check against both nil and (""). Alternatively, you can check the length of the string or use String.IsNullOrEmpty.






Topic: Tool Basics

Can I share code between a Delphi and a Dephi Prism project? I want to have a single source Win32 and .Net application.






Topic: Language Basics

Same as in Delphi for Win32 but Prism also supports inline variable declaration.



In Prism, everything is within a class (just like with C#, VB.Net, and Java). So you create class methods using the method keyword. Alternatively, you can use procedure or function if you want the compiler to enforce returning or not returning a value.



Unlike Delphi, Prism performs implicit casting. To concatenate two strings, a string to an integer, or a string to a floating point number, use the + operator. For example, to convert a floating point number to a string just concatenate an empty string to the number as in "" + 3.2.



The Prism unary operators are:

+
-
Not






Topic: Language Details

Like Delphi, Prism supports overloading. However, Prism supports implicit overloading (no need for an overload keyword).






Topic: OOP

Prism supports abstract class members and abstract classes using the abstract keyword. An abstract class is a class with one or more abstract members and you cannot instantiate an abstract class. However, you can have additional implemented methods and properties. An abstract member is either a method (method, procedure, or function), a property, or an event in an abstract class. You can add abstract members ONLY to abstract classes using the abstract keyword. Alternatively, you can use the empty keyword in place of abstract if you wish to instantiate the abstract class.



Declare your class in the Interface section. Then implement the class in the Implementation section. To create an object instance, use the New keyword. Optionally, you can use Create for backword compatibility with Delphi if you turn it on in the compatibility options. Since Prism does have a garbage collector, you do not have to free the object. If you need to free either unmanaged resources or resources where "timing" is important, implement IDisposable and take control of freeing the object yourself using Dispose.



Prism uses unnamed constructor methods for constructors. Prism also supports a Create constructor method for backward compatibility with Delphi for Win32.



Unlike Delphi, Delphi Prism uses the .Net garbage collector to free managed object instances. Prism does not have nor need a true destructor.

In .Net, a finalizer is used to free non-managed objects such as a file or network resource. Because you don't know when the garbage collector will call your finalizer, Microsoft recommends you implement the IDisposable interface for non-managed resources and call it's Dispose() method at the appropriate time.



With Prism, you use the Interface keyword to define an interface and then you include one or more interfaces where you specify the single class inheritance (separated by commas).



In Prism you can set the visibility of a member field to any visibility: private, protected, public, assembly and protected or assembly or protected. Prism supports the readonly modifier for member fields which is handy for constant like data. In this case, I chose not to preface my read-only member field with "F" so it's usage is just like a read-only property. Prism also support the class modifier (static data) for member fields. Delphi developers should notice the use of := to initialize a member field (in Delphi you use an =).



Prism supports a full suite of member modifiers. Prism virtuality modifiers are virtual, override, final, and reintroduce. Prism general modifiers are abstract, empty, async, external, locked, unsafe, implements, and iterator. Not all member types support all member modifiers. For example, member fields support only readonly and implements.



Same as Delphi. In Prism, you specify a virtual method with the virtual keyword in a parent class and replace it in a descendant class using the override keyword. Call Inherited in the descendant method to execute the code in the parent method.



Prism supports both partial classes and partial methods using the keyword partial. A partial method is an empty method defined in a partial class.






Topic: Delphi for .Net Archive

Delphi 8 fix for Required package Borland$ not found caused by the .Net Framework service pack 1 update.





Group: Client Extranet





Topic: Coding Services

Usually includes screenshots with text, access to physical database for reference, or we document existing database. Other documentation might include creating videos of old app focusing on walking through of various use cases.

  1. Create app record in Enterprise Modeling, complete 100%.
  2. Create Old Requirements Document project. Usually best to stick with one task/artifact per screen. Skip General Requirements because that applies to new projects.
  3. Add App Specific Actors.
  4. Add App Specific Definitions.
  5. [Optional] Document old app General Design.


Prestwood uses database expertise in development of a new student tracking application for renowned Chicago Department of Cultural Affairs/Gallery 37.


Prestwood uses database expertise in development of a new student tracking application for renowned Chicago Department of Cultural Affairs/Gallery 37.





Topic: New Client Area

What is the advantage of working with a smaller consulting firm like Prestwood versus a Big 5 IT consulting firm?


Welcome to our New Client area and thank you for considering Prestwood Software for your software development outsourcing needs.





Topic: PS Hosting

Online help.





Topic: PSDP Step 1-Discovery

PSDP Online Q&A



Estimating the time to develop an entire project at the beginning of a project is a tricky task because of too many unknown variables.


During Discovery we decide on an approach that works for both companies, establish an initial budget, and document what the software must do.


The best way to get started is to submit a New Ticket. This ticket will be used to track your project. If you're ready to get started, you can open a support account and optionally pre-pay for some development hours.






Topic: PSDP Step 2-Plan

During the planning step we document how the software will satisfy the requirements (the what) using a General Design followed by a Detail Design phase.





Topic: PSDP Step 3-Build

Quality is one of the factors that determines how much a project will cost. Functional applications are cheaper and faster to get to version 1.0 but cost more to maintain and enhance. In PSDP, functional applications include temporary and moderat risk projects. Robust applications cost a little more to get to version 1.0 but cost less to maintain and enhance. In PSDP, robust applications include high risk, commercial, and critical applications.


During the building step, we actually build and debug the software with the Initial Coding and Testing and Rework phases.





Topic: PSDP Step 4-Deliver

The Delivery of your software can be as simple as us emailing you the installation file or delivery can include on-site installation and training.





Topic: Working Remotely with PS

For online business chatting, we use MSN Messenger. MSN Messenger also works with Windows Messenger which comes with Windows XP and above. MSN Messenger is a free download.



For file management (to and from you), we do not normally use FTP. Instead we use our My Uploads feature to both upload a file to Prestwood and to view existing account files.

To get to your uploads, from the main pull-down menu click My | More... | My Uploads. Use the Upload a File option to send us a file. Use the File Manager options to view existing files you and others have uploaded to your account and files attached to notes. You can add a note to your account, tickets, and PSDP items (tasks, defects, requirement items, etc). All note attachments also show up in your My Uploads area.



We offer both Vault and SourceOffsite to manage source code. Both have nearly the same feature set and both offer a remote desktop Windows applications for checking source code in and out.






Topic: Dr. Bott

A Dr Bott uploader. This wizard uploads DrBott.com store items to our ASPSuite eStore storefront software. We can customize it to upload to your store from any drop-shipper.



www.prestwoodboards.com
Copyright (C) Prestwood IT Solutions.
All Rights Reserved.
Printed 2/19/2019