Newsgroup: it.comp.lang.delphi
Titolo: offro una cena ma aiutatemi

la cena offerta non è una battuta, è vera. da consumarsi in zona Finale Ligure.
la lotta con i mulini a vento è dura e mi sta esaurendo.
Il problema sono i file temporanei che mi saturano la directory TEMP che ho
predisposto per l'applicazione.
Non posso mettere MaxFilesHandles =  1000 nel BDE, deve esserci un altra
soluzione.
uso SQL7 con BDE e ODBC
Nell'applicazione ho tre form:
Formmain dalla quale apro il FormListaNomi in modal con:
procedure TFormMainButton1Click(Sender: TObject);
var XApri:TFormListaNomi;
begin
XApri:=TFormListaNomi.Create(self);
XApri.showmodal;
XApri.Free;
end;
il FormListaNomi aprirà a sua volta il terzo form (FormPre) non modale in base
ad una scelta con:
procedure TFormListaNomi.BTApriClick(Sender: TObject);
Var XApri:TFormPre;
begin
XApri:=TFormPre.Create(self);
XApri.show;
FormPre.Free;
end;
quindi ho il FormMain e il FormListaNomi sempre in show e operanti, il terzo lo
apro e lo chiudo.
il problema è che ogni volta che apro il terzo form (FormPre) dal FormListaNomi
mi si creano una dozzina
di file temporanei (DELxxx.MB) nella directory temp, dopo quattro o cinque
aperture del form sono in
crack. i file non sono cancellabili perchè ancora in uso (ho il
FormListaNomi)ancora aperto).
Una soluzione potrebbe essere quella di chiudere alla chiusura del FormPre
anche il FormListaNomi, ma non mi
accontento. devo in qualche modo eliminare o ridurre i File temp.
senz'altro qualcuno di voi è in grado di aiutarmi.
 
-- 
Posted from 
ppp-166-3.28-151.libero.it
 [151.28.3.166] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

di file temporanei (DELxxx.MB)
probabilmente perchè hai settato le cached updates a true...
cmq, perchè ricrei ogni volta la form?
ti servono + istanze? potresti verificare se l'hai già creata con una
cosa del tipo:
 if not Assigned(XApri) then XApri:=TFormPre.Create(self);
poi direi che è meglio fare il free della form nel'onclose della form
stessa,
procedure TXApri.FormClose
...
 Action := caFree
...
Ciao,
Alan Solo

 FormListaNomi)ancora aperto
I .mb contengono (se non sbaglio) dei BLOB: si tratta quindi dei
risultati di operazioni che esegui sul database. L'ordine di creazione
delle form mi pare ininfluente: piu' importanti le operazioni che compi
sulle tabelle e la loro struttura.
Se fornisci qualche dettaglio sulle tabelle forse e' meglio. Considera
anche di mettere la logica di accesso al db in un datamodule (svincolare
dagli aspetti UI puo' essere d'aiuto per capire cosa non funziona come
vorresti).
Saluti
Paolo Arosio

 
effettivamente non mi servono più istanze, le creavo solo perchè cosi
il form mi si ricreava pulito(DBEdit, label, Edit ecc..).
ho provato a mettere il form tra gli autocreati e a mostrarlo ed effettivamente
i file temporanei creati sono minori. però ho il problema che con riesco a
far eseguire una serie di opearzioni che prima erano collegate al OnCreate
ma che adesso sia nell'OnActivate o nell'OnShow non riesco a fare eseguire.
Come posso fare per lasciare il form se non è nell'autocreate dell'applicazione
senza crearne un istanza??? si può.
ciao
-- 
Posted from 
ppp-149-3.28-151.libero.it
 [151.28.3.149] 


 
sulle tabelle eseguo tramite query delle operazioni nell'OnCalcField.
Uso un datamodule in comune per tutte le oltre 30 form che compongono
l'applicazione. se sono file temporanei legati alle operazioni sulle query
allora non dovrebbero scomparire se cancello, alla chiusa del form, le 
query stesse con destroy o qualcosa di simile???
ciao
-- 
Posted from 
ppp-149-3.28-151.libero.it
 [151.28.3.149] 


senza crearne un istanza??? si può.
se ho capito bene, no... la form è un 'oggetto e lo devi creare per
forza, o nel .dpr o quando la usi...
a questo punto verificherei le operazioin che compi nel oncreate/show
di quella form...
Ciao.
Alan Solo

 query stesse con destroy o qualcosa di simile???
Le query sono oggetti della tua applicazione; i file .mb sono creati dal
BDE. Le due cose sono in larga parte indipendenti. Se non erro, dicevi
che i file 'temporanei' hanno prefisso DEL: se esegui frequentemente
delle query di delete puoi provare a forzare la scrittura su disco
tramite una chiamata diretta al BDE (dbiSaveChanges o simili: v. il file
di Help del BDE bde32.hlp e localSQL.hlp)
Cio' detto, un destroy esplicito di una query non e' quasi mai
necessario (basta crearle con un Owner)
Saluti
Paolo Arosio

 
effettivamente sbagliavo perchč passavo un parametro  null e allora
non mi eseguiva le query.
le operazioni che eseguo sulle query sono associati al OnClacField e qualche
operazione all'interno della query tipo cognome+' '+nome as cliente.
comunque ogni promessa č debito, non so da dove scrivi, se passi dalle parti
di Finale Ligure sarņ ben lieto di pagare il mio debito.
ancora una piccola cosa: si puņ creare una form passando un parametro come
sender al posdto dell'oggetto??  es. Sender = Codice = String ????
ciao e grazie
-- 
Posted from 
ppp-181-5.28-151.libero.it
 [151.28.5.181] 


sender al posdto dell'oggetto??  es. Sender = Codice = String ????
intendi come owner? cmq, in ogni caso no passare una stringa al posto
dell'owner,  ma puoi fare molto di piu',fai l'overload del create con
altri parametri...
type
  TForm1 = class(TForm)
...
  public
    constructor Create(AOwner:TComponent; AString: string);
e per crearla fai
F:=TForm1.Create(Self, 'una stringa');
Ciao,
Alan Solo

 necessario (basta crearle con un Owner)
Non e' detto.
Io spesso utilizzo qualcosa tipo:
with TQuery.Create(nil) do
begin
  try
    SQL.Text := 'select * from tabella';
    Open;
    ...
  finally
    Free;
  end;
end;
-- 
Posted from  [80.105.34.80] 


 Non e' detto.
[snip esempio]
Si', e' molto comodo (per non affollare i DM, ma anche per query che
ritornano un solo record/valore). Ma, appunto, in quel caso l'Owner e'
nil.
Saluti
Paolo Arosio

 
grazie anche per questo.
ciao
gianlorenzo
-- 
Posted from 
ppp-229-46.28-151.libero.it
 [151.28.46.229] 


 Alan Solo
Ciao,
Andrea

Ti sei dimenticato "reintroduce" e "overload"... :D)
giusto :)
ciao Andrea! :D
Alan Solo