Newsgroup: it.comp.lang.delphi
Titolo: Un aiutino... AIUTO !!!!!!!!!!!!!!!!!

Psero che perdonerai una domanda scema: cosa sono gli AV?
AS

Salve,
Scusate lo sfogo nel subject... Ma sto veramente impazzendo dietro a una
cosa bellissima. Volevo mantenere il segreto ancora per un pò, ma non posso
perché non riesco a capire dov'è il problema contro cui sto combattendo.
Sto scrivendo un editor di proprietà per le immagini con :
- Capacità di creare le immagini DIRETTAMENTE dall'editor,
- Gestione dei folder recenti, così da velocizzare l'accesso alle immagini
più comuni,
- Database di immagini recenti, contenente proprio le immagini più usate in
assoluto.
Oltre ovviamente al semplice load. Ed è questo il problema. Per effettuare
il loading, data la varietà di possibili accessi ad una stessa immagine, ho
dovuto creare una form di selezione della modalità di apertura( scelta tra
browsing, folders recenti e database ) da cui avviene poi il vero e proprio
caricamento. Per condividere le immagini tra l'OpenDialog ed il form
principale dell'editor ho escogitato un sistema tanto semplice quanto,
almeno in teoria, efficace. Vale a dire che in una unit visibile a tutte le
form dell'editor, ho definito delle variabili globali a puro scopo
condivisivo( anch'io odio le variabili globali ) nel senso che più che
variabili sono utilizzate come spazio di memoria condiviso per motivi di
velocità di accesso. Nel momento in cui imposto la variabile contenente il
nome - ed il percorso completo - dell'immagine, mando un messaggio custom
alla form principale allo scopo di comunicarle l'avvenuta selezione e l'ok
per il vero caricamento. Beh, non ci crederete, ma sto dannando Delphi ed i
suoi accidenti di AV. Li odio gli AV. Non li sopporto.C'è da dire che il mio
computer si comporta in modo misterico sin dal primo giorno del suo
utilizzo, ma a tutto c'è un limite... Devo per forza pensare che da qualche
parte ho scritto una minchiata, scusate il termine, che mi ingrippa tutto ma
dal punto di vista teorico dovrebbe essere tutto a posto... Insomma il
meccanismo l'avete capito... Io invece non riesco a capire che gli piglia a
questo disgraziato di software...
Vi prego, aiuto !!!!!!!!!
--
Andrea Raimondi
rain...@tin.it
ICQ #66008183
"Software development is as having a girlfriend :
  it delights many times but it can make u crazy..."

 wrote in message
8jujsd$d9f$1...@news.mclink.it...


per il vero caricamento.
Forse fai prima a fare in modo che l'OpenDialog sia modale (ShowModal), poi
controlli il ModalResult.
Questo e' un sistema buttato giu' alla veloce (uno dei tanti)
{...}
frmOpenDialog := TfrmOpenDialog.Create(frmPadre);
try // Questo per sicurezza
  if frmOpenDialog.ShowModal = mrOK then
  begin
    { Carica l'immagine }
    sNomeFile := frmOpenDialog.NomeFile; // Questa e' una proprieta' che
potresti aggiungere a frmOpenDialog
  end;
finally
  frmOpenDialog.Free;
end;
{...}
Nell'esempio ho ipotizzato di aggiungere una proprieta' "NOMEFILE" al form
frmOpenDialog, che vai a impostare quando l'utente seleziona un file (in
qualsiasi modo). Cosi' eviti messaggi, variabili globali e altre faccende.
Se ci sono altre difficolta' scrivi pure. =)
Ciao
Daigo

>
Sto scrivendo un editor di proprietà per le immagini con :
- Capacità di creare le immagini DIRETTAMENTE dall'editor,
- Gestione dei folder recenti, così da velocizzare l'accesso alle
immagini
più comuni,
- Database di immagini recenti, contenente proprio le immagini più usate
in
assoluto.
Oltre ovviamente al semplice load. Ed è questo il problema. Per
effettuare
il loading, data la varietà di possibili accessi ad una stessa immagine,
ho
dovuto creare una form di selezione della modalità di apertura( scelta
tra
browsing, folders recenti e database ) da cui avviene poi il vero e
proprio
caricamento. Per condividere le immagini tra l'OpenDialog ed il form
principale dell'editor ho escogitato un sistema tanto semplice quanto,
almeno in teoria, efficace. Vale a dire che in una unit visibile a tutte
le
form dell'editor, ho definito delle variabili globali a puro scopo
condivisivo( anch'io odio le variabili globali ) nel senso che più che
variabili sono utilizzate come spazio di memoria condiviso per motivi di
velocità di accesso. Nel momento in cui imposto la variabile contenente
il
nome - ed il percorso completo - dell'immagine, mando un messaggio
custom
alla form principale allo scopo di comunicarle l'avvenuta selezione e
l'ok
per il vero caricamento. Beh, non ci crederete, ma sto dannando Delphi
ed i
suoi accidenti di AV. Li odio gli AV.
[...]
<<
Non riesco a capire esattamente la situazione. Non potresti
semplicemente(?) rendere disponibili le proprietà desiderate, o, meglio
ancora, avere le form secondarie fra cui la OpenDlg come campi
del'editor?
Per restare comunque al problema specifico: usi SendMessage o
PostMessage? sostituisci la WndProc della form principale o usi message
handler specifici?
Perchè non passi direttamente il pchar al filename con il messaggio,
lasciando all'handler il compito di strdispose? (1)
Stai facendo il testing sul registrato o sull'editor runtime? dove viene
sollevata l'eccezione?
Facci sapere
Paolo Arosio
------------------------------------
(1): qualcosa tipo:
const
    WM_GETTHISSTRINGANDFREEIT = WM_USER + 1;
procedure SecondaryForm.MsgSender(const str2send: string);
var Buf: PChar;
begin
  Buf := StrNew(PChar(str2send)); // copia la stringa dopo aver allocato
mem
  Windows.PostMessage(Self.DestWinHandle, WM_GETTHISSTRINGANDFREEIT,
Integer(Buf), 0);
end;
procedure LongNameMsgHandler(var Msg: TMessage); message
WM_GETTHISSTRINGANDFREEIT;
procedure MainForm.LongNameMsgHandler(var Msg: TMessage);
var p: PChar;
begin
  p := PChar(Ptr(Msg.WParam));
  try
    Self.FFilename := strpas(p);
  finally
    strdispose(p);
  end;
  DoChange;  // ripittura, etc..
end;