Newsgroup: it.comp.lang.delphi
Titolo: conversione da C a delphi (pas)

Ciao a tutti
devo convertire un po' di codice C per portarlo in delphi e cerco di basarmi 
su quello che è riportato nell'help in line di delphi (D7) (Vedi A)
incontro però dei problemi su come tradurre alcune cose, se qualcuno avesse 
qualche dritta l'apprezzerei molto
Ho anche provato qualche tool (come il convertitore CtoPas e il drbob 
HeaderConverter) ma purtroppo, in questo caso almeno, non sembrano generare 
un risultato utilizzabile...
(Allego quanto sono riuscito finora a tradurre, ho messo dei commenti // nei 
punti ancora da convertire)
Grazie in anticipo per qualsiasi aiuto (anche se doveste avere un'idea solo 
per singoli elementi mi sarebbe utile ugualmente)
un saluto
A) dall'help in linea di D7
Type
  TClassName = Class (TParentClass)
  //If you omit (ancestorClass), then the new class inherits directly
  // from the predefined TObject class.
    public
      {public fields}
      {public methods}
    protected
      {protected fields}
      {protected methods}
    private
      {private fields}
      {private methods}
end;
--- le classi da tradurre (sotto a ciascuna la relativa prova di 
traduz.) ---
-----------------------
classe usata nelle altre
==================
class IndexedList : public Array {
  public:
    IndexedList() :
      Array(0, 0, 1) {}
    IndexedList(int anUpper, int aLower = 0, int aDelta = 1) :
      Array(anUpper, aLower, aDelta) {}
    int number() {return itemsInContainer;}
    void insertAt(Object &, int);
    void detachAt(int);
    void destroyAt(int);
    void WriteOn(ostream &) const;
};
traduz
======
TO DO... (magari esiste già una classe simile ad Array Indicizzato in 
Delphi)
-------------
1.a classe
==========
class Class1 {
  protected:
    char _name[MAXNAME+1];
    int _qty;
    unsigned YMin;
    BOOL LoadFrom(istream &, void (*)());
    void WriteOn(ostream &);
  public:
    char *name() {return _name;}
    int &qty() {return _qty;}
    void SetY(unsigned Y) {YMin = Y;}
    unsigned GetYMin() {return YMin;}
};
traduz. 1.a classe
==============
Type
  TClass1 = Class
     protected
        //char _name[MAXNAME+1];
       _qty: integer;
      YMin: word;
     public
       // char *name() {return _name;}
      function qty() : integer;
      procedure SetY(Y: word);
      function GetYMin(): word;
end;
------------
2.a classe
==========
class Class2: public Object, public Class1 {
  public:
    IndexedList var1;
    Class2();
    Class2(const char *, int);
    ~Class2();
    virtual classType isA() const {return CLASS2;}
    virtual char *nameOf() const {return "Class2";}
    virtual hashValueType hashValue() const {return 0;}
    virtual int isEqual(const Object &obj) const
      {return (obj.isA() == CLASS2);}
    BOOL LoadFrom(istream &, void (*)());
    virtual void WriteOn(ostream &) const;
};
traduz. 2.a classe
==============
type
 Class2 = class(TObject, Class1)
  public
    //IndexedList var1;
    constructor Create();
    //Class2(const char *, int);
    destructor Destroy(); // ovveride? virtual?
    //virtual classType isA() const {return CLASS2;}
    //virtual char *nameOf() const {return "Class2";}
    //virtual hashValueType hashValue() const {return 0;}
    //virtual int isEqual(const Object &obj) const
    //  {return (obj.isA() == CLASS2);}
    function LoadFrom(istream: TStream): boolean;
    procedure WriteOn(ostream: TStream);
end;
-------------
3.a classe
==========
class Class3 {
  protected:
    unsigned _X, _Y, _width;
    BOOL LoadFrom(istream &, void (*)());
    void WriteOn(ostream &);
  public:
    unsigned &X() {return _X;}
    unsigned &Y() {return _Y;}
    unsigned &width() {return _width;}
};
traduz. 3.a classe
==============
Type
  TClass3 = Class
  //If you omit (ancestorClass), then the new class inherits directly
  // from the predefined TObject class.
    public
      function X() : word;
      function Y(): word;
      function width() : word;
    protected
    _X, _Y, _width: word;
    function LoadFrom(istream: TStream): boolean;
    procedure WriteOn(ostream: TStream);
end;

    //virtual char *nameOf() const {return "Class2";}
Queste funzioni esistono già in TObject (ClassName e ClassType), ma se ti
servono puoi reimplementarle come virtual.
Comunque, non fare passi più lunghi della gamba. Prendi in mano la Object
Pascal Language Guide (da D7 Delphi Language Guide) e buona lettura.
Luigi D. Sandon - D&amp;D Support Team
--- posted by geoForum on 
http://www.delphiedintorni.it

 Pascal Language Guide (da D7 Delphi Language Guide) e buona lettura.
Concordo sull'utilità di approfondire il linguaggio delphi. Quella guida in 
effetti ce l'ho sottomano, più che altro il problema in questo caso è che 
dovrei rispolverare un librone di c++ ma il tempo a disposizione è troppo 
poco. Vedrò di cercare un'altra soluzione.
grazie ancora e un saluto