Delphi Certification - Braindump

Delphi exam - Braindump

Well, I decided to write this braindump because I never found any good
references about materials or study guides to take the Delphi
examination. I don't know if I'm the first guy around the world that
writes a such braindump, but I would'n like to be the first! I would
like to have found a braindump to guide me! Please, everyone that can
help me adding comments or notes, feel free to write me.

Well, let's go:

This is the most difficult exam I ever made (at least, comparing with
MS exams - I'm a MCSD). The passing score is 80% and I got 72%. I will
take it again in 15 days. I'm still re-reading some books...

These are my memories:

Questions about TStoredProc object (the context asked about when to
connect a StoredProc to a DataSource)
Methods:
Fetch All // retrieve all records
Open does exist and also an Active clause (I didn't know they exist!)

Don't forget TStoredProc can act exactly as a TDataSet.

Questions about package distribution in client/server applications
COMP, VCLDB30, VCL30.DPL, DCL30.DPL
I think the correct choices were VCL30.dpl e VCLDB30.dpl. Not sure.

Questions about DLLs  (how to manage long strings, what you must
aggregate in order to create a DLL). This section was difficult
because it had many multiple choice questions. I got 1 out of 5. There
is a DLL called ShareDMM.DLL that must be distributed if your DLL
manipulate long strings. I'm gonna read Marco Cant's "Mastering
Delphi 3" again.

One question about how TPrint (EndDoc, EndPrintJob) open and closes a
print job
- EndDoc is the corret answer. Since I already had done a such
component before, I could remember it for sure.

Some questions about object's owners and parents
- If you create a TLabel with ParentFont=True, where do the font
settings come from? From the owner or from the container? (From the
Owner)
- How to check (make a loop) throughtout the objects owned by a
component? Controls or Components? Components, but maybe I have
checked Controls.

One question about TCustomControl (I think I got that). You were
requested to create an object (a watch) and the user should be able to
adjust the time with the mouse or the keyboard. In fact, the object
has necessarily to be able to receive focus (that's the implicit
point). I don't remember, but maybe TWinControl was available.

One question asking the best definition about TDataSource. The answer
is literally taken from the help: "Use TDataSource to provide a
conduit between a dataset and data-aware controls on a form that
enable display, navigation, and editing of the data underlying the
dataset".

One question asked why to inherit from Tpersistent (in order to create
components able to store persistent streams and have RTTI
information).

Questions about Threads (Wich methods must be overriden in order to
create a thread?)
I think the choices were:
Execute // The right answer
Create
Suspend

Another question on threads asked if Suspends can be nested and if
WaitFor must be set to true. Yes, Suspends can be nested, but WaitFor
is a method, not a property that can be set to True

Questions about SQL:
In case of a master-detail with Tquery, wich properties must be used:

SQL             [x]
DataSource      [x]
MasterSource    [  ]
MasterFields    [  ]

Questions about TDataSet:
- Table['Company'] - I didn't know that {*word*30}ing syntax exists, but I
think I got this one properly. The context was a function that
received a TTable parameter and returned the content of a field called
'Company' as a string. FieldByName wasn't available (at least with a
correct syntax).
- OnDataChange (every time you move from a record/field, I don't think
it's triggered immediately when typing in a field)
- dsCalcFields (non-calculated fields cannot be modified during this
status). I missed this one.
- TDatabase definition (provides a discrete control over a single
conexion). Also missed this one.

One question about BatchMove (where do files resulting of a
unsuccessful importing go?). I checked Session.PrivateDir. I still
didn't find the right answer.

One question about BeforeScroll (how to prevent a user from moving). I
checked BeforeInsert and lost this one.

One question asking what were the possible values to store in variant
variable. I would just have checked Null and String. A variant cannot
contain pointer to an VCL object or collection? The only alternative I
did not check pointed to a TDataSet. By the way, I lost this one
because I checked ClassType as a valid value.

One question about exception handling (What piece of code really
illustrates a resource protection?). Notice the sucking and subtle
detail:

p:=strnew() // allocates memory before the protection block
try
  use
finally
  Dispose();
end;

or

try
  p:=strnew() // allocates memory inside the protection block
  use
finally
  Dispose;
end;

I checked the second example, but the first example is the wise
choice.

Some questions about SQL Explorer. (BDE Alias creation, METADATA
edition).

One question about DataBroker. What is the model used to
intercommunication? Mail Slots, IPX/SPX, DCOM, ou NetBEUI? (DCOM, if
I'm not wrong)

One or two questions about variable scope and visibility. Easy, but
take care because they are big questions (sample programs with 6
choices).

One huge question about Menu Merging within MDI applications. Lots of
menus, forms, GroupIndexes and choices. As far as I don't have a lot
of practice with menu merging, I think I missed this one. It asked
about GroupIndex and menu positioning.

One question asked what are the characterisctics of a TGraphicControl
class. Don't forget they consider Canvas as a protected *property*
that must be made public when deriving. In fact, TCanvas is not
exactly a property, but consider it as if it was.

Some questions about some clauses of packages: Contains, Requires.

6 questions about OLE (I missed just one of them). What's the basic
Interface of COM? (IUnknown). Another question asked what was the file
extension for type libraries (.TLB)

One question about RTTI - what type casting uses RTTI  (AS or IS). I
missed this one. I think this question is not clear in my mind.

No questions about Message Handlers.

One question contrasted SetRange (specific for files with indices)
with Filter

No questions about QuickReport or ReportSmith.

No questions about PVCS

One question about when to use Explicit Rebuild in packages. I missed
this one. According to Delphi's Help (Build Control): "If the package
is low-level and does not change often, click Explicit Rebuild.  It is
built only when you display it in the Package editor and click Build.
For automatic compilation, click Rebuild As Needed."

One question asked about what a DataModule is for. There were about 6
choices (multiple) and I remember one choice suggested that a
DataModule would be useful to store Timers in a server application.
Another one suggested consolidation of commom dialog boxes.

I found many questions with choices ranging from A to G. The multiple
choice questions never had a predefined number (like Choose two). All
of them were "Choose All that Apply". Take care with it.

I don't remember for sure, but there was a question about how a
TWinControl could get a handle for a control. The options were HDC,
hWnd, Handle and WindowHandle. I think I missed this one. According to
what I read in Delphi's Help, Handle is the property (hWnd is just a
type). Maybe WindowHandle is also right. Don't confuse these elements.

I correctly answered 79 out of a total of 109(72%). Thus, I missed 30
questions. The multiple choice questions were the most difficult. My
impression is that the easy questions are VERY easy and the difficult
ones are VERY difficult.

One thing I have noticed is that if you pay attention to the
definitions written in Delphi's help, you can save a lot of questions.
Practice is absolutely needed. One question asked what's F11's
function. Without using, you never would know how to answer a so easy
question.