Oppure

Loading
09/11/08 7:13
Ultra Phonic 2
ho cercato, ma niente a riguardo.

i file che non apre, sono exe, bat, dll, ocx, file compressi, tranne bat

xkè nn li apre?
aaa
09/11/08 9:23
GrG
Si che li apre, cmq poi per esempio per EXE e DLL devi usare Binary...

allora mo ti spiego...

Tu vuoi scrivere o leggere in un bat?
Facciamo che vuoi scrivere in un bat qualcosa, allora devi fare:
open "C:\tuo.bat" for OUTPUT as #1
print #1, "tuo codice e\o testo x il bat"
close #1

i files si possono aprire in 4 modalità:
-Input (x leggere testo)
-Output (x scrivere testo)
-Binary (x scrivere\leggere byte)
-Random (non l'ho mai utilizzata :P cmq dovrebbe prelevare carattere x carattere)

Per la binary però non si usa input #1, ecc.. o print #1, ec... ma get #1,, ecc...(x leggere) e put #1,,ecc... (x scrivere)

Poi la random non la conosco bene...
aaa
09/11/08 10:34
Ultra Phonic 2
puoi spiegarmi bene la binary, xkè avevo sentito parlare di essa, ma non l'ho mai vista applicata...


cmq grazie:k:
aaa
09/11/08 10:43
tippolo
Postato originariamente da Ultra Phonic 2:

ho cercato, ma niente a riguardo.

i file che non apre, sono exe, bat, dll, ocx, file compressi, tranne bat

xkè nn li apre?

Ciao Phonic,
Per aprire un exe devi usare la funzione Shell
aaa
09/11/08 11:40
GrG
@Tippolo: Lui intendeva non eseguire, ma aprire nel senso di vedere cosa c'è dentro...il testo....

@Ultra phonic 2:
allora facciamo finta che dobbiamo "aprire" un EXE, allora si fa:

dim dati(1 to 99999) as Byte 'Si usano i byte non le string
dim x as integer
open "path_dell'exe.exe" for Binary as #1
'Adesso leggiamo il "codice" dell'exe
do
x = x + 1
Get #1,,dati(x)
loop until eof(1) = true
close #1
aaa
09/11/08 13:47
Ultra Phonic 2
scusa grg, ma non è che abbia capito molto8-|


puoi essere + affermativo?

solo questo, xkè io devo comprendere bene, altrimenti combino cavolate8-)
aaa
09/11/08 15:11
GrG
Ok, te lo commento riga x riga...

dim dati(1 to 99999) as Byte
Dichiaro l'array dati che può avere minimo 1 elemento e massimo 99999 elementi. Dati sono Byte cioè è come se fosse Integer ma il massimo numero che può "contenere" la variabile è 255
cioè se io dico: Dim prova as byte
prova può assumere un valore da 0 a 255.
-------------------------------------------
dim x as integer
Invece le variabili integer possono contenere un valore che va da –32.768 a +32.768.
-------------------------------------------
open "path_dell'exe.exe" for Binary as #1
Apriamo l'exe in binario
-------------------------------------------
do
Iniziamo il ciclo di lettura
-------------------------------------------
x = x + 1
Incrementiamo x
-------------------------------------------
Get #1,,dati(x)
Qui grazie a Get #1 memorizziamo in dati(x) un byte quindi alla fine di tutto il ciclo ogni elemento (quindi: dati(1), dati(2), ecc...) conterrà un byte (quindi un valore da 0 a 255)
-------------------------------------------
loop until eof(1) = true
Questa riga dice: <<Il ciclo non deve terminare finchè non si arriva alla fine del file>>.
-------------------------------------------
close #1
Dopo aver finito richiudiamo l'exe dalla modalità binaria
-------------------------------------------

Adesso nell'array dati ci sn tutti i byte dell'exe. Però i valori sn numerici (da 0 a 255) quindi bisogna poi se si vuole mettere per es. il codice dell'exe su una text trasformare i valori numerici in stringhe. Per far questo si usa la funzione Chr() che converte un numero in un carattere, ogni carattere corrisponde a un numero e i numeri dei caratteri vanno proprio da 0 a 255.
Ad esempio:
msgbox chr(97)
Restituisce il carattere "a"
Quindi poi attraverso dei cicli for ti converti i byte in caratteri e poi li stampi su una text...
aaa