Newsgroup: it.comp.lang.delphi
Titolo: Exception class EReadError :property  xxxx does not exist

ciao a tutti,
ho inserito il componente Timer all'interno di un'altro componente.
quando lancio una form che contiene il componente di cui sopra, ottengo il
seguente errore :"Exception class EReadError :property  xxxx does not exist".
Cosa significa e dove sto sbagliando?
grazie in anticipo
--- posted by geoForum on 
http://www.delphiedintorni.it

 Cosa significa e dove sto sbagliando?
Il codice sorgente...
..."oh le lee oh la laa, faccelo vede', faccelo tocca'" :-D
-- 
Marco «Alka» Breveglieri	
http://www.marco.breveglieri.name
  «bvmcnxsjlkhròhyeq, potrei scrivere a questo punto,
   se mi addormentassi sui tasti» (Daniele Luttazzi)

..."oh le lee oh la laa, faccelo vede', faccelo tocca'" :-D
:-))
il codice del componente che ho creato e' il seguente. 
grazie
unit Macchina;
interface
uses
  Windows, Messages, SysUtils, Classes, Controls, Animate, GIFCtrl,ExtCtrls;
type
  TMacchina = class(TRxGIFAnimator)
      FTimer: TTimer;
  private
    { Private declarations }
    constructor Create(AOwner: TComponent);override;
    destructor  Destroy;override;
  protected
    { Protected declarations }
  public
    { Public declarations }
    procedure setTimerName(newValue: string);
    function getTimerName:string;
  published
   property NOME_TIMER : string read getTimerName write setTimerName;
   { Published declarations }
  end;
procedure Register;
implementation
procedure Register;
begin
  RegisterComponents('IMPIANTI', [TMacchina]);
end;
constructor TMacchina.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FTimer := TTimer.Create(Self);
end;
destructor TMacchina.Destroy;
begin
  FTimer.Free;
  inherited Destroy;
end;
procedure Tmacchina.setTimerName(newValue:string);
begin
 FTimer.Name := newValue;
end;
function TMacchina.getTimerName:string;
begin
 result := FTimer.Name;
end;
end.


 ..."oh le lee oh la laa, faccelo vede', faccelo tocca'" :-D
ROTFL!!!!!!!
-- 
Jax
====
Ama ciò che ti rende felice, ma non amare la tua felicità. (Gustave
Thibon)

 grazie
Il campo /FTimer/ che contiene l'istanza del componente *TTimer* usata 
dal tuo componente dovrebbe essere privata, mentre nel tuo caso ha 
visibilità *published* quindi, molto probabilmente, viene incluso nello 
streaming delle proprietà del componente che lo contiene e ciò non 
dovrebbe avvenire.
Sposta il campo /FTimer/ nella sezione *private*.
Ciao,
   Marco.


Sposta il campo /FTimer/ nella sezione *private*.
ho seguito le tue indicazioni, ma il problema sussiste ancora.
sara' banale ma:
se nell'object inspector non imposto il nome del timer l'eccezione di
prima non si presenta.
cosa posso fare?
grazie


 cosa posso fare?
Prova ad inserire una riga di codice nel costruttore del tuo componente 
che, semplicemente, imposti il nome del componente *TTimer* ad una 
stringa vuota (in sostanza, lo lasci "non assegnato").
Rimuovi poi la tua proprietà che, a tal punto, diventa ininfluente e 
secondo me crea il problema in esame poichè reimposta il nome del 
componente e potrebbe facilmente impedire così il corretto "streaming" 
dal DFM del modulo in cui il tuo componente viene inserito.
In secondo luogo, già che il tuo codice si occupa di distruggere il 
timer sulla /Destroy/, rimuovi l'indicazione di /Self/ dalla chiamata a 
/Create/ del componente *TTimer* e sostituiscilo con *nil*.


>[...snip...]
mille grazie Marco x tutte le indicazioni che mi hai dato!
sei stato molto gentile!
al momento le sto provando...
grazie ancora
ciao
