[fpc-pascal]Classes/Objects/Pointers / Pointer Help

James Mills prologic at prologitech.com
Mon Feb 10 13:28:15 CET 2003


On Mon, Feb 10, 2003 at 01:24:05PM +0100, Anton Tichawa wrote:
> Hello!
> 
> If TNick is a class - I don't have the declarations - it must be initialized 
> with
> 
>   nicks := new(TNick, init(nick, hops, signon, ident, host, server, unused,   
>   name));
> 
> That's correct because TNick is already a pointer, not an object, and init is 
> required to call TNick's constructor.
> 
> But the problem ist a more generic one .. I'll try to formulate the 
> questions: A procedure (Alice) passes Data to another procedure (Bob):

So you say I should be using class declarations instead of object ?
Fair enough if that's the case, but could you show a simple example that
uses just object declarations ?

ie:

type
   TmyObject = object
      constructor init;
      destructor deInit;
      private
      public
         procedure test;
   end;
   PmyObject = ^TmyObject;

procedure TmyObject.test;
begin
   writeLn('test');
end;

...

James

> 
> ***
> procedure Alice;
> begin
>   Bob(Data);
> end;
> ***
> 
> Questions:
> 
> 1. is Data "empty", i. e. is the call to Bob parameterless? Note that even in 
> this case, there is still information flow between them, because 1. Bob knows 
> having been called by Alice (which is information > 0 bit), and 2. might read 
> input and return results in a predefined, global manner.
> 
> 2. is Data readable?
> 
> 3. is it writeable?
> 
> 4. is it a special (CPU, hardwre) register, or global memory?
> 
> 5. Is Data the only one of it's kind, or does it need addressing? If it needs 
> addressing, is the address defined? Does Data have a fixed size? If not, is 
> the size known or unknown?
> 
> 6. Other questions that I don't see at the moment. One of these is the SWITCH 
> mentioned below.
> 
> 7. Is Data a pointer? If this is the case, then pointer types should be able 
> to point to "null", "readable", "writeable", "register / memory", and other.
> 
> I think the solution isa kindof redundancy. As a legacy example, look at 
> pointers: Pointers with value $00000000 are defined as "nil". That disallows 
> pointing to a variable at address 0. On one hand, that excludes memory at 
> address 0 to be used for "pointed-to" data. On the other hand, low-level 
> access with references to address 0 might still be required in some cases, 
> simply to increase performance.
> 
> There should be some kind of aggreement about Data. As a second example, 
> Classes e. g. are now checked (the VMT contains a kind of checksum), but this 
> is dangerous for every-day run-time type information, because a pice of 
> arbitrary data might contain a correct checksum, thus pretending to be a 
> class .. trak! exception.
> 
> I suggest the words "SAFE" and "FAST" for these two "modes of operation".
> 
> SAFE mode obeys legacy agreements, forces redundancy, and Bob is guaranteed 
> to find a solution for the questions mentioned above, converning Data. In 
> case of misunderstandings, exception handling moves the system to the safe 
> side.
> 
> In FAST mode, there is no redundancy, i. e. hardware runs at full speed, but 
> software might crash.
> 
> I suggest a BIG RED SWITCH on top / front of the computer, which is normally 
> switched OFF, forcing SAFE mode, disallowing references to address 0 with a 
> pointer, requiring action to follow previous negotiations.
> 
> Any ideas how to continue this topic?
> 
> Anton Tichawa.
> 
> 
> 
> ----------
> 
> "Adas Methode war, wie sich zeigen wird, Tagtr?ume in offenbar korrekte 
> Berechnungen einzuweben."
> 
> Doris Langley Moore: Ada, Countess of Lovelace (London 1977).
> 
> ----------
> 
> Anton Tichawa
> Volkertstrasse 19 / 20
> A-1020 Wien
> mobil: +43 664 52 07 907
> email: anton.tichawa at chello.at
> 
> ----------
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal



More information about the fpc-pascal mailing list