PDA

Visualizza la versione completa : [Delphi] costanti


kate71
06-08-2003, 17:49
per evitare di dover modificare tutto il codice
in caso di modifiche vorrei utilizzare delle
variabili di sistema .. delle costanti!

Il problema è sorto sul nome delle tabelle
e sul nome delle query.

Visto che le costanti possono essere dichiarate così
const
width = 400;

ho provato scrivere una cosa diquesto tipo...

const
q : TQuery = dm.query1;
e
q = dm.query1;

ma mi da errore! credo di aver inventato....probabilmente!!
è una cosa possibile da fare?

Kate71 :confused:

alka
06-08-2003, 17:59
Non è possibile fare una cosa del genere, per pochi semplici motivi:

una costante, per sua natura, è un entità che non modifica mai il proprio valore. Pertanto, non puoi dichiararla in modo che il suo valore dipenda da una variabile, ancora meno puoi assegnare ad una costante il valore di un oggetto come Query1, il cui valore è conosciuto solo durante la fase di esecuzione del programma e non al momento della compilazione.

Se stai cercando di crearti delle "scorciatoie" per raggiungere i componenti, ti esorto a non farlo o ad utilizzare diversi sistemi, poichè un simile approccio in un linguaggio ad oggetti può essere pericoloso e portare a bug difficili da individuare.

Ciao! :ciauz:

kate71
06-08-2003, 18:29
ci avevo pensato in effetti....


una costante, per sua natura, è un entità che non modifica mai il proprio valore. Pertanto, non puoi dichiararla in modo che il suo valore dipenda da una variabile, ancora meno puoi assegnare ad una costante il valore di un oggetto come Query1, il cui valore è conosciuto solo durante la fase di esecuzione del programma e non al momento della compilazione.


ho pensato però ...anche se in questo caso non è utilissimo..
di creare una UNIT in cui scrivo le mie procedure...
ma non riesco a far funzionare il programma.

Da File--> New--> Unit (ho creato una nuova unit)
ho scritto il codice che mi serviva....

unit uPocedure;

interface

procedure query_Delete ;

implementation
uses
uAnagrafica;

procedure query_Delete;
var
qryDel: string;
idDel: integer;
begin

idDel := dm.tabTest.Fields[0].AsInteger ;
qryDel := 'DELETE FROM test WHERE ID= '+ IntToStr(idDel);

dm.qryDelete.Close;
dm.qryDelete.SQL.Clear;
dm.qryDelete.SQL.Add(qryDel);
dm.qryDelete.ExecSQL;

dm.tabTest.Refresh ;
DBGrid1.Refresh ;

end;

end.

ho aggiunto la Unit al Progetto da --> Add File To Project
ed ho richiamato il nome della mia pocedura in questo modo

procedure TfmAnagrafica.pEliminaDClick(Sender: TObject);
begin
query_Delete;
end;


ma non funziona!!!
mi dice che non trova uProcedure.dcu
cosa devo fare??:cry:

Kate71

alka
06-08-2003, 18:33
Originariamente inviato da kate71
mi dice che non trova uProcedure.dcu
cosa devo fare??:cry:

unit uPocedure;



Errore di distrazione... ;)

kate71
06-08-2003, 18:41
perdonami ma non capisco!!
tra l'altro sotto
implementation
ho aggiunto
uses
uAnagrafica;
e comunque non gli piace!!!
dove ho sbagliato ???

alka
06-08-2003, 18:45
Hai chiamato la unit Pocedure invece di [I]Procedure[U].

kate71
06-08-2003, 18:46
..scusami prima mi sono sbagliata...era il contrario..
tra le uses di Anagrafica.. ho aggiunto uProcedure..
compilo...ma non trova uProcedure.dcu
se provo a farlo partire dall'eseguibile però funziona!!!
come mai??? non capisco!! :confused:

alka
06-08-2003, 18:50
Il file Procedure.pas si trova nella stessa cartella del progetto? (quella in cui vi sono anche tutti gli altri file)

kate71
06-08-2003, 18:52
ho modificato il nome della UNIT
hai ragione ...la testa..!!!!!
ora mi da altri errori...
ma con un po' di attenzione..
potrei farcela!!!
Grazie !!

Kate71...sbadatella :ciauz:

kate71
06-08-2003, 18:53
per risponedere al tuo ultimo mesaggio,
si! è nella stessa cartella...
ma dato che il nome era diverso..non
avrebbe dovuto funzionare..non trovi???

Loading