Oppure

Loading
30/04/20 12:45
fosforo
Ciao
Domanda probabilmente banale.

Ho creato una classe
public void MyXML()

La classe fa parsing di un file XML.
I ChildNodes che mi interessano li metto in un string array.
string[,] _XmlCache = new string[xmlDoc.DocumentElement.ChildNodes.Count + 1, 3];

Non riesco a far vedere l'array alla classe Form1.

Grazie





aaa
30/04/20 16:55
nessuno
Ma Form1 come interagisce con l'altra classe?

E perché deve "vedere" l'array? I dati in genere sono privati in una classe e resi disponibili all'esterno tramite apposite proprietà/metodi.

Se non dai maggiori informazioni si deve interpellare la "sfera di cristallo" ... ma è in riparazione ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
30/04/20 18:55
fosforo
Grazie nessuno

Nella Form1 istanzio la classe
MyXMLXMLP = new MyXML();

Da Form1 pensavo di poter accedere all'array:
string miastringa= XmlCache [1,0]
ma non funziona.

Magari faccio un errore ma posto la classe MyXML.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Windows.Forms;

namespace cs_FolderSync
{
class XMLparsing
{
public Array MyXML()
{
string Mypath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Mypath + @".xml";);
XmlNodeList xmlnode;
string[,] _XmlCache = new string[xmlDoc.DocumentElement.ChildNodes.Count + 1, 3];
int i;
//string str;
xmlnode = xmlDoc.GetElementsByTagName("event";); //name XML element
//InnerText(0)=InnerText(1) start time=InnerText(2) clip_id=InnerText(3)
// cycle for ChildNodes into array
for (i = 0; i <= xmlnode.Count - 1; i++)
{
xmlnode[i].ChildNodes.Item(0).InnerText.Trim();
_XmlCache[i, 0] = xmlnode[i].ChildNodes.Item(0).InnerText.Trim();
_XmlCache[i, 1] = xmlnode[i].ChildNodes.Item(1).InnerText.Trim();
_XmlCache[i, 2] = xmlnode[i].ChildNodes.Item(2).InnerText.Trim();
}
return _XmlCache;
}

}
}

Grazie anticipatamente
aaa
30/04/20 19:32
nessuno
Ma scusa la classe si chiama

class XMLparsing

quindi che dici?

Semmai dovresti scrivere

XMLparsing MyXMLXMLP = new XMLparsing();

Array arr = MyXMLXMLP.MyXML();
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
01/05/20 7:36
fosforo
Si è vero. Scusami
Sono solo test e faccio e rifaccio e alcune volte cambio nomi.
Ma il succo non cambia.

Il problema è che non riesco a esporre l'Array _XmlCache alle altre classi.
aaa
01/05/20 7:48
Ultimo
Postato originariamente da fosforo:

Si è vero. Scusami
Sono solo test e faccio e rifaccio e alcune volte cambio nomi.
Ma il succo non cambia.

Il problema è che non riesco a esporre l'Array _XmlCache alle altre classi.


Devi studiare come si creano le Classi (Oggetti) nel OOP

string[,] _XmlCache = new string[xmlDoc.DocumentElement.ChildNodes.Count + 1, 3];

Devi dichiarare le proprietà di string[,] _XmlCache come Public



public  string[,] _XmlCache
{
get { return  _XmlCache; }
set {  _XmlCache = value; }
}
 


html.it/pag/15443/classi-metodi-e-proprieta-in-c/
Ultima modifica effettuata da Ultimo 01/05/20 7:58
If ok Then GOTO Avanza else GOTO Inizia

01/05/20 10:45
fosforo
Infatti.
Piano piano ci stavo arrivando.
Avevo capito che dovevo usare il Getter and Setter che ancora adesso capisco poco.

In rete trovo mille cose ma molto incasinate.
Hai da darmi un sito dove spiega molto semplicemente cos'è e come utilizzarli?


Grazie 1000
aaa
01/05/20 11:35
Carlo
I consigli dati sono per scrivere un programma OOP, come si deve.
Capire e studiare è d'obbligo, i consigli di nessuno e Ultimo, se li metti in pratica, mantengono le variabili contenute nella Classe localizzate, evitando che altri parti del programma le modifichino, magari per errore.

C'è anche un metodo più diretto, che fa storcere un po' il naso a chi fa della programmazione OOP un sacro gral, ma siccome non è vietato, perseguibile.

Ti allego un esempio che fa nulla, solo per vedere come passare variabili e routine pubbliche tra le classi.
Ultima modifica effettuata da Carlo 01/05/20 11:49
in programmazione tutto è permesso