Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - assegnazione ad un array
Forum - Visual Basic 6 - assegnazione ad un array

Avatar
muteblaster (Member)
Pro


Messaggi: 87
Iscritto: 16/07/2009

Segnala al moderatore
Postato alle 23:30
Mercoledì, 29/12/2010
salve ragazzi:
ho una domanda che puo' sembrare banale, ma vorrei vedere se esiste unaltra soluzione rispetto alla mia....
ho un array di byte per fare la assegnazione devo per forza usare un ciclo for oppure esiste un altro metodo magari basato su qualche api che non conosco?

PM
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 15:00
Giovedì, 30/12/2010
penso dipenda da ciò che vuoi fare, ma generalmente ci vuole sempre un ciclo

PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
0
Down
V
Segnala al moderatore
Postato alle 16:55
Venerdì, 31/12/2010
Se trovi il modo di accedere al DMI (non so come si faccia in vb6) poichè l'array è una serie di allocazionivdi memoria CONTIGUE potresti sparare un valore su tutte le locazioni.
Questo è 1000 volte più veloce di un for che scorre l'intero array

Ma questo vale solo se devi assegnare lo stesso valore ad ogni locazione dell'array ad esempio un array tutto di "0".

In C++ essendo molto più a basso livello esiste l'istruzione memset che si occupa di accedere al DMI.

In VB6 non so se sia possibile prova a fare una ricerca....


PM
Avatar
muteblaster (Member)
Pro


Messaggi: 87
Iscritto: 16/07/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 8:47
Sabato, 01/01/2011
ho implementato un programmino per cifrare i file , ed ho avuto un notevole implemento di velocita' caricando , con l'istruzione redim, il file in porzioni su array di byte....
pero' per cifrare un array di byte devo eseguire un ciclo for per ogni singolo byte, se magari esiste qualcosa di piu' veloce che mi permetta di prendere un array di byte criptarlo e metterlo in un altro array di byte.......

girando su internet ho trovato l'uso delle api FillMemory  ma non riesco a fare una assegnazione ......
praticamente vorrei riuscire a a cifrare un blocco di byte senza dover fare una assegnazione con il ciclo for.......


Ultima modifica effettuata da muteblaster il 01/01/2011 alle 8:49
PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
0
Down
V
Segnala al moderatore
Postato alle 16:48
Sabato, 01/01/2011
Se devi copiare un array in un altro (che però deve essere dello stesso tipo es INTERO) puoi usare la funzione che in C si chiama memcpy, ma è presente anhe nelle API di windows sotto il nome di CopyMemory.

Sebbene io non abbia mai usato CopyMemory credo sia più o meno la stessa cosa di memcpy.

memcopy funziona così:
DEVI PASSARGLI
-Locazione di memoria da dove iniziare la copia
-Numero di byte da copiare
-Locazione di memoria dove incollare i byte copiati.

E' 1000 volte più veloce di un for perchè non usa istruzioni del processore ma usa il DMI: una parte del processore che si occupa solo di fare questa operazione.

Fai una ricerca su google "CopyMemory vb" e vedrai che trovi quello cerchi :D

Ultima modifica effettuata da il 01/01/2011 alle 16:49
PM
Avatar
muteblaster (Member)
Pro


Messaggi: 87
Iscritto: 16/07/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 22:31
Martedì, 04/01/2011
sono riuscito a trovare su internet delle spiegazioni riguardanti questa api....sulla base di esse ho ricreato un esempio e' circa 100 volte piu' veloce......
il problema pero' mi si sposta.....infatti volevo man mano che assegnavo il nuovo aray eseguire la cifratura/decifratura......ma se richiamo una funzione all'interno dell'api vb mi crasha......

  

PM
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 22:57
Mercoledì, 05/01/2011
Testo quotato

Postato originariamente da muteblaster:ma se richiamo una funzione all'interno dell'api vb mi crasha......

  



Qua mi sa che c'è poco da fare, mi sa che per vb è troppo...

PM
Avatar
muteblaster (Member)
Pro


Messaggi: 87
Iscritto: 16/07/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 7:55
Giovedì, 06/01/2011
5 mb/s credo sia il massimo che si possa fare in vb........
avevo cercato l'utilizzo dell' ASM code in vb ma e' molto complesso.....se qulcuno conoscwe qulache sito dove spieghino l'utilizzo della dll asm



PM
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 12:07
Giovedì, 06/01/2011
purtroppo il vb6 è limitato... forse per quello che devi fare ti conviene farti un programma d'appoggio in C e richiamarlo da vb

PM