Newsgroup: it.comp.lang.vo-clipper
Titolo: DBFengine 1.0.5

Ciao a tutti,
ho da poco rilasciato la verione 1.0.5 di DBFengine.
Sono state aggiunte alcune caratteristiche ed altre sono state
corrette e migliorate.
+ Miglior sistema di memorizzazione sul file temporaneo dei dati fino
a 100 (modificabile) records per DBF. E' stato abbandonato il sistema
di caching in memoria.
+ Aggiunto la possibilità di ricerca di testo libero all'interno dei
DBF meglio nota come WildSeek
e molto altro...
Per scaricarlo e ottenere qualche informazione in piu' visitate il
sito
http://web.tiscalinet.it/dbfengine
Dovrebbe essere inutile dirlo, ma lo dico lo stesso :-), di scrivermi
cosa ne pensate, ogni commento sara' il benvenuto.
Saluti,
Antonello

Ciao Antonello, scusa se ti faccio perdere tempo con una domanda
terra-terra.
1) Se io dal mio programma client devo aprire una tabella DBF per leggere
informazioni la tabella viene aperta da
          a)  il programma client
          b) il programma server
2) nel caso in cui la risposta sia b) cosa viaggia per la rete per farmi
apparire a video i dati come se la tabella fosse aperta direttamente dal
client?
Grazie

apparire a video i dati come se la tabella fosse aperta direttamente dal
I files vengono aperti dal server, sulla rete viaggiano solo le
istruzioni e i risultati.
Secondo me, comunque, la risposta alle tue domande e' di provarlo e
vedere che la logica e l'utilizzo, tolto il fatto di avviare una
connessione nel Metodo App:Start, sono le stesse dei DbServer.
Antonello

 DBF meglio nota come WildSeek
Mi (ci) parleresti in modo più approfondito di questa tecnica?
EMG

Mi (ci) parleresti in modo più approfondito di questa tecnica?
Premetto che non l'ho inventata io, io ho solo scaricato da
www.knowvo.com
 un libreria completa di esempio già fatta.
Comunque in breve funziona cosi':
C'è una chiave da trovare. Es. "PIPPO"
Il metodo accede al DBF usando una FOpen, oppure utilizza il puntatore
al file utilizzato al momento dalll'RDD.
Skippa l'header e si posiziona sul primo byte dei dati.
Memorizza la lunghezza del record per determinare di quanti byte deve
spostarsi di 1 record.
Per ogni record calcolato quindi, preleva i bytes dei dati, li copia
in memoria e memorizza se la chiave cercata compare al suo interno.
Se la stringa c'è, memorizza il Recno().
Quando arriva a fine file, restituisce un array contente i numeri di
record in cui ha trovato la chiave.
La ricerca inoltre tiene conto di eventuali Scope e/o campi nei quali
deve essere effettuata, escludendo gli altri.
Questo metodo però ha un limite: non considera i campi memo.
Limite ampiamente coperto pero' da una libreria, che non e' free,
che invece li utilizza che mi pare sia prodotta o commercializzata
da Luxent software.
Questa libreria mi pare fosse nata per il Clipper, poi portata in VO
(e forse altri ma non so dire).
Spero di essere stato utile.
Antonello

 Comunque in breve funziona cosi':
Grazie. E' sempre utile avere sotto mano nuove tecniche da utilizzare al
momento opportuno. Questa funzione di ricerca la vedrei scritta in C per
questioni di velocità.
EMG

questioni di velocità.
Penso che per quel che riguarda clipper la libreria e' certamente
scritta in C, per quel che riguarda VO, praticamente è come il C,
perchè utilizza le funzioni di allocazione (ed altre) a basso livello
tipo la MemAlloc, MemCopy, ecc.ecc.
Antonello