Autor Beitrag
benstar
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 02.03.10 21:44 
Hallo,

ich habe hier mal eine abgeleitete Klasse geposted.
Ich muss auf der Ebene von Ice.Application auf das Array intreceived aus der ClockDisp_ zugreifen.

Kann mir bitte jemand helfen wie ich da ran komme? Alle Versuche von mir sind soweit gescheitert.
Alle Wege sind mir recht, hauptsache ich kann den Wert verwenden...
Vielen Dank für alle Tips
Ben

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
 public class App : Ice.Application 
 { 
 //hier brauche ich die Werte von intreceived 
 
 public class ClockI : ClockDisp_ 
 { 
 public override void tick(string date, Ice.Current current) 
 { 
 System.Console.Out.WriteLine(date); 
 string[] stringreceived = date.Split(','); 
 int[] intreceived = new int[stringreceived.Length]; 
 for (int ii = 0; ii<= stringreceived.Length - 2; ii++) 
 { 
 intreceived[ii] = int.Parse(stringreceived[ii]); 
 // Dieses Array muss übergeben werden 

 } 
 System.Console.WriteLine(intreceived); 
 } 
 }




Moderiert von user profile iconChristian S.: ">" von Zeilenanfängen im Quelltext entfernt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 02.03.10 22:33 
intreceived ist eine Methodenvariable die ist nur gültig innerhalb der Methode und damit von außerhalb unerreichbar.

Entweder du machst daraus eine Klassenvariable von ClockI oder, da Tick in einer Clock Klasse sich nach einem regelmäßig auftretenden Event anhört, werfe in Tick wiederum einen Event mit dem Wert von intreceived in den EventArgs. An diesen kannst du dich dann von außen registrieren und bekommst regelmäßig denn aktuellen Wert von intreceived;


Crosspost
benstar Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 05.03.10 21:56 
Hi, also ich hab das mal mit den events probiert, aber ich komme auch nicht an den event in der anderen klasse dran.

kann mir jemand sagen wie ich auf den event moveit zugreifen kann.
oder kann ich irgendwie sonst auf myevnetargs Message zugreifen?


ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
 public class MyEventArgs : EventArgs
    {
        private string m_Message = "";
        public string spub ="";
        public MyEventArgs(string Message)
        { 
        
        }
              
       public string Message
       {
                      get { return m_Message; }
       }
                
    }
    public delegate void Movemyarray(object sender, MyEventArgs ee);

    public class Subscriber
    {

       // public event Movemyarray moveit;
        protected string[] args;
        protected App app = null;
        public FormNew myForm = null;
        public Subscriber(string[] a)
        { 
            setArgs(a);
            
        }
                
               
        public int getvalues()
        {
            int i;
            i=1;
            return i;
        }

        public void setArgs(string[] a)
        {
            args = a;
        }

        public void setFormHandle(FormNew form)
        {
            myForm = form;
        }

        public void shutdown()
        {
            app.subscriberStop();
            
        }
       
        
        public class App : Ice.Application
        {
            
                    
            public class ClockI : ClockDisp_
            {
                
                public event Movemyarray moveit;
               
                //public event EventHandler<EventArgs> MyNewEvent;                           
                public override void tick(string date, Ice.Current current)
                {
                    
                    System.Console.Out.WriteLine(date);
                   
                    moveit(thisnew MyEventArgs(date));
                    
                    //string[] stringreceived = date.Split(',');
                    //int[] intreceived = new int[stringreceived.Length];
                    //for (int ii = 0; ii <= stringreceived.Length - 2; ii++)
                    //{
                    //     intreceived[ii] = int.Parse(stringreceived[ii]);
                    //    if(MyNewEvent !=null )
                    //    {
                    //    moveit(this, new MyEventArgs(""));
                        
                    //    }
                    //    // Dieses Array muss übergeben werden
                    //}
                    
                    //System.Console.WriteLine(intreceived);
                    
                    // Daten in das Form bringen
                    //myForm.controlsys.sensor.evaluateData(intreceived);
                   

                }
norman2306
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 222
Erhaltene Danke: 16

Win XP, Win 7 64-Bit
C# 4.0 (VS2010)
BeitragVerfasst: Fr 05.03.10 23:33 
Mach doch einfach dein intreceived global:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
 public class App : Ice.Application 
 { 
 //hier brauche ich die Werte von intreceived 
 
 //deklariere hier dein Array, falls du keine Instanz hast, auf die du zugreifen kannst
 public static int[] intreceived = null;


 public class ClockI : ClockDisp_ 
 {  
 //deklariere hier dein Array, falls du eine Instanz hast, auf die du zugreifen kannst
 public int[] intreceived = null;
 
 public override void tick(string date, Ice.Current current) 
 { 
      System.Console.Out.WriteLine(date); 
      string[] stringreceived = date.Split(','); 
      intreceived = new int[stringreceived.Length]; 

      for (int ii = 0; ii<= stringreceived.Length - 2; ii++) 
      { 
           intreceived[ii] = int.Parse(stringreceived[ii]); 
           // Dieses Array muss übergeben werden 
      } 
      System.Console.WriteLine(intreceived); 
 } 
 }