2010-12-13 6 views
0

Je crée un petit outil qui nécessite quelques calculs. J'utilise la hashtable pour stocker les valeurs que j'ai besoin de calculer. Cet outil extrait en continu des données sur un intervalle de temps spécifique (30 secondes) à partir de la page Web et ajoute ces données dans la table de hachage. Maintenant, le problème est que j'ai besoin de stocker les données d'extraction précédentes et quand une nouvelle extraction se produit, je dois déduire les données précédentes à partir de nouvelles données.Stockage et calcul des données dans Hashtable

est le processus Ici, je suis actuellement:

Dim MyTable as New Hashtable 

MyTable.Add("Data1","200") 
MyTable.Add("Data2","100") 

MyTable.Add("Data3", MyTable.Item("Data1") - MyTable.Item("Data2")) 

'Here I need to redefine the value of Data2 as same as Data1 
MyTable.Add(MyTable.Item("Data1")) 

Le premier terme, il montre le résultat de Data3 = 100 qui est currect. Mais à la deuxième exécution j'ai besoin de redéfinir la valeur de Data2 = Data1. J'ai donc besoin d'un résultat de Data3 = 0 lors de la deuxième exécution. Ce n'est peut-être pas la bonne façon de faire ce genre d'opération. J'ai aussi essayé d'utiliser listbox, listview et même textfile pour stocker le Data2 et le rappeler en deuxième exécution. Mais ne pouvait pas le rendre possible.

Ceci est la dernière phase de mon outil et je suis coincé avec. Donc, j'espère vraiment que quelqu'un viendra en avant et m'aidera à cet égard.

Merci

Répondre

1

Mec, je ne cependant je vais donner pas bien compris ce que vous demandez, un coup de feu. Tout d'abord, je ne crois pas que vous devez utiliser un HASTABLE à moins que vous fassiez une recherche dans une liste via les touches. Il semble que vous souhaitiez simplement conserver le résultat callulé précédent pendant la période d'exécution de l'application (ou sa durée de vie). Regardez dans la fabrication de vos vairables Global.

'This variable is outside the scope of the function. 
Private previousResult As Integer 

Public Function ComputeData(valueOne as Integer, ValueTwo as Integer) as Integer 

previousResult = valueOne - valueTwo 

Return previousResult 

End Function 

Chaque fois que ComputeData est appelée, le nouveau résultat calculé est stocké dans la variable précédenteResult. Notez qu'il s'agit d'un stockage valide pour la durée de vie de l'application.

+0

Salut, merci beaucoup pour votre réponse. Le projet sur lequel je travaille consiste à télécharger des données boursières à partir d'une table html (http://bit.ly/g2ksYk) et à les sauvegarder sous forme de fichier csv toutes les 30 secondes. Ici, j'utilise la hashtable pour stocker les colonnes séparément. Le volume que je reçois de la table html est le volume cumulatif et j'ai besoin de trouver le dernier volume (pour chaque ligne). Pour ce faire, je dois déduire le volume actuel du volume obtenu lors de la dernière capture. Pouvez-vous me suggérer comment je peux faire cela? Merci – Nasim

+0

1. Conservez vos valeurs actuelles dans les variables, puis effectuez le calcul comme ci-dessus. 2. Utilisez une datatable et effectuez une sélection en mémoire http://msdn.microsoft.com/en-us/library/system.data.datatable.compute.aspx 3. Regardez dans LINQ et enfin, stockez simplement les valeurs dans le DB et effectuer des requêtes. Les données historiques au fil du temps peuvent être utiles. –

Questions connexes