Newsgroup: it.comp.lang.visual-basic
Titolo: E' giusto utilizzare FileSystemObject per accedere ai file oppure è troppo "pesante" ?

E' giusto utilizzare FileSystemObject per accedere ai file (accesso,
cancellazione, creazione, ecc) oppure è troppo "pesante" dato che mi pare di
aver capito che usa usa sorta di script interno a Visual Basic, e quindi è
meglio utilizzare una chiamata alle API che gestiscono i file?
però chiamare le API, rende l'applicazione più critica, dato che accede
direttamente al kernel di Win
esempio di cancellazione di un file:
Dim fs As Object, f As Object          ' FileSystemObject e FileObject
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.getfile(App.path + "nomefile.doc")
f.Delete
oppure è meglio utilizzare direttamente le API che lavorano sui file.
inoltre come mai se dichiaro "Dim fs as new FileSystemObject", non accetta
questa dichiarazione, ma occorre per forza utilizzare la CreateObject
(eppure sull'help in linea c'è scritto che si può fare in entrambi i modi).
Grazie.

 (eppure sull'help in linea c'è scritto che si può fare in entrambi i
modi).
Perchè devi aggiungere il riferimento allo scripting runtime, quindi
includere una dll in più al pacchetto di setup.
Il che andrebbe comunque fatto anche con la CreateObject() (se la dll non
c'è sul PC destinazione ti va in errore).
Nota che la CreateObject() usa il Late-Binding, più lento e non sfrutti
l'intellisense di VB.
Ciao

con getfile se non ricordo male ottieni un oggetto con il tuo file dentro
non ho mai provato ma a rigore di logica perdi un sacco di tempo cosě,
prova con....
Set fso = CreateObject("Scripting.FileSystemObject")
fso.deletefile (file)
Set fso = Nothing
in ogni caso mi sembra di ricordare che MS spinga all'uso del
filesystemobject per
operazioni su file.
carlo


Io lo dichiaro cosě:
Dim fs as new Scripting.FileSystemObject
e tutto funziona correttamente!
Penso che l'uso di questo oggetto garantisca meno problemi in caso di
porting verso VB.net
Ciao Matteo

 Kill App.path & "nomefile.doc"
Grazie della info, ignoravo l'esistenza della kill.

 Set fso = Nothing
ma la 3° riga: "set fso=Nothing" non è inutile,
dato che all'uscita della procedura l'oggetto viene deallocato
automaticamente?

 porting verso VB.net
Scordatelo :)
La gestione dei file in VB.net è molto più simile a VB: il FSO in .NET non
esiste proprio.
Anche se volessi staccarti da VB e usare solo il Framework.
Ciao

 accede direttamente al kernel di Win
prego?
-- 
 < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
     Don't stand, REACT!      version 0.0.19. C, C++ and ASM developers
                              and beta testers are welcome!

 Anche se volessi staccarti da VB e usare solo il Framework.
Sono d'accordo che il FSO non esista in .NET, ma la gestione
dei file in .NET è enormemente più articolata che in VB, per
cui non è possibile stabilire similitudini. Le funzioni 
VB.NET
(FileOpen, ecc...) hanno comunque una sintassi parecchio
diversa da quelle VB (Open, ecc...), mentre le molte classi
per l'IO disponibili nella libreria sono certamente
completamente un'altra cosa.
Ciao.
--
BSD is for UNIX-lovers -- linux is for Windows-haters.

 cui non è possibile stabilire similitudini.
Verissimo, in entrambi i casi bisogna ristudiarsi il tutto :) o :( ?
Approposito, come cavolo si fa a leggere da un file binario una struttura?
Fin'ora ho trovato solo metodi che leggono i dati base o al massimo un array
di byte...
Sarebbe anche interessante sapere se esiste un modo per sostituire la
CopyMemory()...
Ciao

 sostituire la CopyMemory()...
Ricerca "
VB.NET
 pointers" su 
www.devx.com
, troverai un po' di
articoli molto interessanti.


dovrebbe, ma...
l'istruzione potrebbe non essere proprio alla fine della procedura,
inoltre il mio libro di ASP dice di non fidarsi mai,
di creare l'oggetto all'ultimo momento e di distruggerlo esplicitamente
appena finito di usarlo.
credo valga anche per VB.
carlo



Beh, se è per questo esiste anche MkDir (make Directory)
RmDir (remove Directory)
CurDir (resituisce la dir corrente)
ChDir (cambia la dir corrente)
ChDrive (cambia il drive corrente).
Se non sbaglio (provatevi a smentirmi!) erano già dentro nel QBasic.
Ciao ;)
Dads
P.S.: è un'ottima libreria (FSO) per applicazioni web (ASP).

 Se non sbaglio (provatevi a smentirmi!) erano già dentro nel QBasic.
           +--------------------------------------------------------+
           ¦                                                        ¦
           ¦               Benvenuti in MS-DOS QBasic               ¦
           ¦                                                        ¦
           ¦     Copyright (C) Microsoft Corporation, 1987-1993.    ¦
           ¦               Tutti i diritti riservati.               ¦
           ¦                                                        ¦
           ¦     <Premere INVIO per consultare la Guida rapida>     ¦
           +--------------------------------------------------------¦
           ¦      <Premere ESC per cancellare questa finestra>      ¦
           +--------------------------------------------------------+
Classe                               Parole chiave comprese in questa classe
----------------------------------   ---------------------------------------
[...]
Comandi del sistema DOS              CHDIR, KILL, MKDIR, NAME, RMDIR
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------