Newsgroup: it.comp.lang.delphi
Titolo: Inaccessible value...strano!

Come mai quando eseguo il debug del mio programma, tutte le variabili
definite nella parte "public" risultano "inaccessible value"??? E' normale?
Ho disattivato tutte le ottimizzazioni...ma il problema persiste!
Help!
:)

 definite nella parte "public" risultano "inaccessible value"??? E' normale?
Credo che tutto dipenda dal momento dell'esecuzione in cui tu arrivi ad 
ispezionare le variabili.
Descrivi con minuzia il modo con cui esegui il debugging...ti soffermi 
sugli identificatori delle variabili con il mouse? oppure usi la 
funzionalità di Evaluate?
Ciao! :-)
-- 
MARCO «Alka» BREVEGLIERI
   (
http://www.marco.breveglieri.name
)
Leggi le FAQ di ICLD: 
http://icld.altervista.org


Occhio che, dopo aver disattivato le ottimizzazioni, devi fare un rebuild.
Non penso però che sia colpa dell'optimizer...
-- 
Jax
====
Ogni nazione ha il governo che si merita. (Joseph Maistre)


Metto un breakpoint e vado avanti a son di F8.
Ho notato che se nel codice tutte le variabili le uso così:
FormMain.nomevariabilepubblica:=funzione....
funziona! se invece escludo FormMain (che è la funzione contenuta nella form
che stò "debuggando") e considero nomevariabilepubblica:=funzione...  il
debugger dice che nomevariabilepubblica è "inaccessible value" (si noti che
il programma funziona ma non ne posso valutare le variabili durante il
debugger!).
Se tolgo le varibili dalla sezione "public" e le metto locali alla form
tutto è "controllabile" con il debugger.
Strane cose....


Scusa eh...lo noto adesso...ma tu che fai alle 3 di notte?! rispondi ai
post?! eheheheheheheheh

 tutto è "controllabile" con il debugger.
Cosa significa "metterle locali alla Form"?
Le tue variabili possono appartenere alla unit, oppure essere campi 
(pubblici o privati) della classe del form.
Non riesco a capire se nel tuo codice ciò che cambia è solamente la 
forma di scrittura della stessa variabile, o se modifichi anche l'ambito 
della variabile stessa, spostandola nella unit all'esterno della 
dichiarazione della classe del form.


 post?! eheheheheheheheh
Sì, a volte torno a casa tardi da serate in compagnia di amici e...ho 
ancora energie da vendere! ;-) :-D


Esempio....
unit Main;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ToolWin, ComCtrls, Menus,IniFiles, ImgList,Registry;
type
  TFormMain = class(TForm)
    StatusBar1: TStatusBar;
    ToolBar1: TToolBar;
    MenuPrincipale: TMainMenu;
    Database: TMenuItem;
    procedure SoundsClick(Sender: TObject);
  private
    { Private declarations }
  public                                    //per vedere questi valori, devo
specificare FormMain.LanguageFile
    { Public declarations }
  LanguageFile:string;
  DatabaseFile:string;
  ProgramDir:string;
  DefaultLanguagestr:string;
  Databasestr:string;
  OpenDBstr:string;
  NewDBstr:string;
  end;
var
  FormMain: TFormMain;
  pippo:string                            //questa variabile la vedo sempre
bene (e non inaccessible value)
implementation
uses ChooseLanguage, ChooseDBfrm, fsuoni;
{$R *.dfm}
procedure TFormMain.FormCreate(Sender: TObject);
begin
FormMain.LanguageFile:=balblabalblablabl        // (se metto solo
LanguageFile, risulata 'inaccessible value', se invece metto
FormMain.Languagefile il debugger
end;                                                                    //
mi dice il valore esatto. Il codice cmq funziona perfettamente!

 Esempio....
Ho capito cosa intendi. Secondo me, il tutto è dovuto ad una limitazione 
interpretativa del codice che valuta l'espressione e restituisce il 
valore nel tooltip.
In quei casi, meglio utilizzare la finestra [Debug|Evaluate] per 
ottenere un determinato valore.
Oltre al tuo esempio, ci sono altri casi in cui il comportamento di quel 
tooltip trae in inganno: provalo su un costrutto *with...do* che fa 
riferimento ad un record o ad un oggetto che possiede campi omonimi a 
proprietà appartenenti alla classe che possiede il metodo in cui fai uso 
del costrutto: ti verrà restituito il valore di tali proprietà e non 
quelle dell'oggetto osservato dal costrutto *with...do*. :-D



Quindi č una limitazione di Delphi 7?!?!?!?! Pazzesco...
Cmq grazie!!!!