Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: Maverich - Dicembre 19, 2014, 01:51:25 pm

Titolo: alternative a LoadFromFile
Inserito da: Maverich - Dicembre 19, 2014, 01:51:25 pm
ho notato che eseguendo ad es. un LoadFromFile per trasferirlo se TMemoryStream sicore il rischio di bloccare l'applicazione se il server non risponde velocemente

Codice: [Seleziona]
 try
  MemStream := TMemoryStream.Create;
  MemStream.LoadFromFile(<nomefile>);
 finally
  MemStream.Free;

e'  possibile caricare l'iimagine a blocchi o in qualche modo controllare, se il server ha eseguito l'operazione

es: un ciclo che carica n immagini da locale e le invio al server tramite MemStream, che le scrivera' sl Db se il server non risponde o impiega troppo,
continuo a fare LoadFromFile, e tutto puo' piantarsi.
Titolo: Re:alternative a LoadFromFile
Inserito da: nomorelogic - Dicembre 19, 2014, 03:51:37 pm
solitamente č l'applyupdates verso un DB che puņ bloccare l'applicazione e non la lettura con TStream

comunque puoi provare scrivendo a blocchi con TStream.WriteBuffer
mi spiego meglio:
apri il file in lettura con AssignFile
imposti un buffer es: 1024 bytes
fai un loop leggendo ripetitivamente blocchi di 1K
all'interno del loop esegui: Application.ProcessMessages (eviti di bloccare l'applicazione)