Newsgroup: it.comp.lang.visual-basic
Titolo: approfondire conoscenza variabili

vorrei approfondire la conoscenza del modo in cui VB, ed in generale i vari 
linguaggi di programmazione, gestiscono le varibili a livello di ram...
ad esempio:
-come test ho dichiarato in un mini-programmino una variabile pubblica (che 
quindi dovrebbe durare quanto l' applicazione) come stringa, assegnandole un 
valore tipo "XXAABBYY"
-con un editor di ram, a programma in funzione,  sono andato a leggere TUTTA 
la ram del mio PC, supponendo che una stringa venisse salvata nella ram byte 
per byte... nisba, in tutta la ram nulla di simile a XXAABBYY....
più in generale vorrei approfondire:
-dove vengono salvate le variabili nella ram? dove capita o in locazioni 
precise?
-cosa impedisce ad un programma lanciato successivamente di sovrascrivere 
zone di ram occupate da altre variabili?
-è possibile sapere a priori, con una api o qualcosa di simile, dove un 
certo programma salva le priopre variabili?
-E' POSSIBILE DA UN PROGRAMMA VB SAPERE LE LOCAZIONI IN CUI UN ALTRO 
PROGRAMMA HA SALVATO LE SUE VARIABILI?
ecc ecc ecc
qualcuno sa indicare un testo o qualche link? con google ho trovato le 
solite quattro parole, ma nulla di approfondente...
ty

 certo programma salva le priopre variabili?
La funzione varptr restituisce un long, credo che abbia a che fare con 
l'indirizzo fisico della variabile.
Altrimenti puoi usare le api dedicate alla memoria, che ora sinceramente non 
ricordo.
Emiliano. 

Emiliano ha scritto: 

Con vb credo sia difficile che capitii di scrivere in una locazione di memoriia gia occupata.. ma con altri linguaggi Es C, C++ nei quali è possibile usare "veramente" i puntatori credo  potrebbe capitare.. infatti si deve stare abbastanza attenti a giocherellare cn i puntatori.. 
-- 
Prendi in mano le redini del TUO destino e nessun ostacolo riuscirà a rallentare la tua corsa!

 PROGRAMMA HA SALVATO LE SUE VARIABILI?
No, non credo proprio.
Come dicevo ogni app ha la sua zona e non può sforarla, anche perchè il SO 
rimappa gli indirizzi e non puoi avere una visione completa di tutta la ram, 
ma solo di quella della tua app, a meno che il prog. non lavori davvero a 
basso livello, ma qui io mi fermo.
Ciao
-- 
Free .Net Reporting tool:
http://www.neodatatype.net
http://sourceforge.net/projects/myneoreport

 PROGRAMMA HA SALVATO LE SUE VARIABILI?
Direi di no, infatti il SO non offre nessun supporto per quel che riguarda
la gestione delle variabili, lui si occupa solo di fornire la RAM, per cui
API ad hoc non ce ne troverai.
In realtà, attribuendosi i privilegi di debug, teoricamente, è possibile
andare a leggere/modificare anche aree di ram assegnate ad altri processi
(questa è la base della tecnica hacker dell'iniezione di codice :-) In ogni
caso, anche riuscendo a leggere la RAM assegnata ad altri processi,
l'interpretazione della stessa non è per niente facile nè veloce.
Se ho intuito bene, quello che stai pensando di fare, è semplicemente far
comunicare tra loro due programmi giusto?
In quel caso ci sono metodi molto più semplici...


si, lo so.... no, la mia intenzione č un altra, molto + arzigogolata...
premesso che di VB non ci vivo, ma mi ci tengo la vecchia mente in
allenamento, sperimentando (anche le cose + strane), vorrei riuscire ad
arrivare a questo risultato: capire quando il singolo match di un gioco
multiplayer on-line su directX termina, anche se in quel momento sto 
navigando...
inizialmente pensavo di controllare tutti i pacchetti che arrivano da
internet (vedi mio post precedente) cercando di intercettare un pacchetto di
fine gara... ma in effetti l' impresa č assolutamente ardua e on line non si
trova codice a riguardo
allora mi dico: se riesco a trovare la locazione ram riservata alla
variabile in cui viene memorizzato dal gioco il tempo di gara rimanente....
ma anche questa mi sembra una cosa non fattibile.... cavolo, non mi dň per
vinto, devo pensarne un  altra... vae victis!  :-))

 navigando...
Forse potresti limitarti a monitorare la/le porta/e usata dal gioco.
Quando la porta viene chiusa fai quello che devi fare...

Hai scelto il linguaggio sbagliato per addentrarti in questo campo ;-)


magari succedesse cosě...
ma la porta non viene chiusa... il gioco, come tutti gli FPS multiplayer, č 
una serie ininterrotta di matches... appena ne finisce uno, giusto il tempo 
di visualizzare i punteggi e ne inizia un altro... la connessione č sempre 
attiva

 attiva
Non mi intendo molto di multiplayer, però immagino che, tra una partita e
l'altra, ci sia la possibilità che delle porte vengano aperte/chiuse. Magari
rimane attiva una connessione TCP e vengono aperte/chiuse delle porte UDP
(sto creando). Monitorando le porte associate al processo in questione (il
gioco) potresti far scattare il trigger ogni volta che una porta viene
aperta/chiusa (in Xp questo è facile, su Win2k meno).