Newsgroup: it.comp.lang.visual-basic
Titolo: Indirizzo delle Variabili

possibile che non esistono le funzioni varptr, peek e poke in VB ???
Ho il seguente problema:
ho una stringa che contiene un certo numero di campi separati da un
separatore:
es:
MyString = " cane:gatto:volpe:ecc...ecc..."
se voglio creare un array di stringhe e riempirlo con i nomi contenuti
in MyString l'unico modo che ho e' quello di ricercare il ":"  conla
funzione Mid$
ma e' possibile che non si deve poter prelevare l'indirizzo di
MyString in modo tale di rilevare il ":" con un bel poke ?
Finche' le parole sono 4, il Mid$ puo' andare anche bene, ma nel
momento in cui la stringa e' troppo lunga, e si deve richiamare
recursivamente, il problema diventa consistente. Avete qualche
suggerimento a tal proposito ?
Pasquale Patti

 wrote in message
367970e3...@news.interbusiness.it...

Primo: Grazie a Dio, le varie funzioni POKE, PEEK ecc sono state epurate dal
linguaggio BASIC !!!!
Secondo: prova ad usare un UDT, o meglio una Collection, o meglio ancora una
classe e vedrai che le cose andranno molto meglio.
Terzo: Se proprio vuoi accedere alla variabile tramite la Via di Windows (e
del C) usa AddressOf() che restituisce un puntatore alla variabile che gli
si passa.
Zeross ^__^


per cercare i ":" o qualsiasi altro carattere puoi usare la funzione Instr
iPosSep = instr(sMiaStringa, ":")    la prima volta
iPosSep = instr(iPosSep + 1, sMiaStringa, ":")    fino a fine stringa
e 'loopare' finche' iPosSep e' diverso da zero
--
=========================================
XXgio...@newsoft.it
per rispondere togliere le doppie XX
ICQ UIN : 14495862
=========================================

si passa.
Che sarebbe un bel sistema per fare un GPF.
VB non ha puntatori, e AddressOf restituisce l'indirizzo di una funzione,
non di una variabile.
Probabilmente ti riferivi a VarPtr, StrPtr e ObjPtr, che restituiscono gli
indirizzi rispettivamente di una variabile numerica, stringa e oggetto (non
sono documentate nell'help ma si possono usare senza problemi perché è stata
garantita la compatibilità con future versioni di VB).
Saluti,
Domenico

...


>Domenico
Scusa, e non essendoci ne peek ne poke come faccio a leggere e
modificare il contenuto della zona di memoria in questione ?

si passa.
Non e' che saresti cosi' gentile da farmi un'esempio pratico...
Grazie
Pasquale Patti

...

Ho risposto nella post successiva: con RTLMoveMemory (altrimenti nota come
CopyMemory). Credo che sul sito comune ce ne siano degli esempi, altrimenti
ditemelo che lo preparo io. In pratica la funzione prende un numero di byte
specificato a partire dall'indirizzo fonte e lo copia all'indirizzo target.
Sfruttando i vari byref e byval si ottiene una variabile con lo stesso
contenuto di quella da leggere. L'operazione inversa invece scrive
sull'indirizzo fonte.
Saluti,
Domenico

garantita la compatibilità con future versioni di VB).
Giusto... nella fretta mi è scappato un po' di testo che avevo in testa
^_^;;
Era mia intenzione dire "usa AddressOf(), o la famiglia *Ptr".
Grazie per avermi corretto, in questo periodo dormo poco e si vede !!!
^_^;;;
Zeross

Se usi VB6 puoi usare la funzione Split
Vedi esempio
Option Explicit
Private Sub Command1_Click()
Dim asData() As String
Dim sText As String
sText = "1:ciao:come:stai?:io:bene"
asData() = Split(sText, ":")
End Sub
Ciao
Corrado