Unit B should just work if it is named "Programm B"
In a Unit there didn't just exist a begin. (as far as i know my programms :) )

The initialization section is called when the unit is linked the first time into the programm by a "uses" class. so it is called before everithing else is going on, even before the normal programm ever did a single step.

The initialization section is good for Units that you write, without knowing the programm where it is used in. So you could initialize some variables or objects, and you don't need the programmer of the programm who uses your Unit. (It is also good if you are the programmer who uses the unit. Because everything what is needed for the Unit stays in that Unit.)

------------------------------------------------------------

unit A;

interface

type Tsomething = class(TObject)
  ...
public
  procedure Hello;
 ....
end;

var

something : TSomething;
ProgrammDir : string;

implementation

....

initialization
 something := Tsomething.create();
 ProgrammDir := Application.Params[0];
finalization something.free;
end.
------------------------------------------------------------


no everyone who uses the Unit A could just use "something.hello" without 
creating the object.
(because the object just exists from the beginning.)


Beni

btw: i shouldn't post when i am drunk :)

leledumbo schrieb:
Might be a stupid question, but it's nowhere mentioned in the documentation
though allowed. What are the differences between:

unit A;

interface

implementation

initialization
  <initialization code>

end.

and:

unit B;

interface

implementation

begin
  <initialization code>

end.

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to