Laden...

Hilfe bei Objektverweiss

Erstellt von Kleiner Progger vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.182 Views
K
Kleiner Progger Themenstarter:in
4 Beiträge seit 2007
vor 16 Jahren
Hilfe bei Objektverweiss

Morgen,

ich habe da mal ein Problem und auf der suche nach der lösung bin ich hier auf das Forum gestossen. Ja ich habe mir auch die Benutzeregeln durchgelsen und ich weiss auch das diese Forum kein anfänger forum ist aber ich Poste dennnoch mein problem.


public class Form1 : System.Windows.Forms.Form
{
  string Pfad;

       public static void Main(string[] args) 
       {
        Pfad = args[11];
        Application.Run(new Form1());
        }


         private void btn_Save_Click(object sender, System.EventArgs e)
          {
           ......
           if (IO.writeDataToDisk(al_SQLData, Pfad + NameLine + ".sql") == false)
           ......
           }	 
}

Jetzt bekomme ich immer die meldung. Ein Objektverweis ist für das nicht statische Feld, Methode oder Eigenschaft von "Save.Form1.Pfad" erforderlich.

Naja da ich grade erst mit dem programmieren angefangen habe sagt mir das net viel. Wo liegt der fehler oder was heisst das ?

MFG

Kleiner Progger

183 Beiträge seit 2004
vor 16 Jahren

Hallo Kleiner Progger,

und willkommen hier im Forum.

Der obligatorische Hinweis: [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen)

Ein Objektverweis ist für das nicht statische Feld, Methode oder Eigenschaft von "Save.Form1.Pfad" erforderlich. Sagt eigentlich alles aus!

Du kannst nicht aus einer statischen Methode auf eine Membervaiable eines Objektes zugreifen.

Grüße
él toro

So einfach wie möglich, aber nicht einfacher. [Albert Einstein]

take a look at
* baer-torsten.de
* codinghints

K
Kleiner Progger Themenstarter:in
4 Beiträge seit 2007
vor 16 Jahren

Du kannst nicht aus einer statischen Methode auf eine Membervaiable eines Objektes zugreifen.

Aber kann man das net umgehn denn ich brauch den wert aus args[11] ?! omg nicht beachten lese grade den link

Denn das komische ist wenn ich mit dem Debugger bis zum haltepunkt laufe ist Pfad = H:\ und oh wunder args[11] = H:\

naja danach springt er zum string Pfad. Da ist dann Pfad = null.
Aber die daten werden trotzdem in H:\ gespeichert !

S
8.746 Beiträge seit 2005
vor 16 Jahren

naja danach springt er zum string Pfad

Zeig uns doch nochmal deinen "aktuellen" Code, wir können schließlich nicht hellsehen...

L
770 Beiträge seit 2006
vor 16 Jahren

Pfad = args[11];
Application.Run(new Form1());

Da liegt dein Problem.. Du legt "PFad" den wert von args[11] zu.. soweit so gut.. Nachher rufst du die Anwendung auf, u.a. mit "new Form1()", also machst du ein neues Objekt. hierbei wird wohl auch Pfad neu definiert, und nachdem du "string Pfad;" hast, ist bzw. bleibt dieser null.

lg

lg Lion

K
Kleiner Progger Themenstarter:in
4 Beiträge seit 2007
vor 16 Jahren

aber wie kann ich es schaffen das Pfad nicht neu definiert wird X(

habe das mal so veruscht aber das geht irgentwie auch net X(


public class Form1 : System.Windows.Forms.Form
{

string Test;

  public static void Main(string[] args) 
  {
   Form1 nc = new Form1();
   nc.Pfad = args[11];
   Application.Run(new Form1()); <-- hier müsste dann Form1 nc geladen werden
  }

   private void btn_Save_Click(object sender, System.EventArgs e)
  {
   ....
  if (IO.writeDataToDisk(al_SQLData, Pfad + NameLine + ".sql") == false)
   ....
  }
}

so bekomme ich es hinn das in Form nc Pfad.nc = args[11] ist aber wie gesagt muss man bei Application.Run das ändern nur Form1 nc nimmt der net an

S
8.746 Beiträge seit 2005
vor 16 Jahren

Application.Run(new Form1()); <-- hier müsste dann Form1 nc geladen werden

Wenn du nc "laden" willst, warum übergibst du es dann nicht und machst stattdessen eine völlig neues (new!) Form auf? Da kannst du in nc speichern was du willst, du verwendest es doch gar nicht...

K
Kleiner Progger Themenstarter:in
4 Beiträge seit 2007
vor 16 Jahren

Wenn du nc "laden" willst, warum übergibst du es dann nicht und machst stattdessen eine völlig neues (new!) Form auf?

Genau da ist ja mein problem. Ich weiss ja net wie ich das machen soll.
Wenn ichs wüsste würde ichs ja machen 😉

S
8.746 Beiträge seit 2005
vor 16 Jahren
Application.Run(nc); 
L
770 Beiträge seit 2006
vor 16 Jahren

Sorry.. schreib doch das "doofe" Objekt hin was du verwenden willst, dass ist ja nun wirklich nicht schwer 🙂 (ansonsten => 🛈 )

lg

lg Lion