Hallo,
habe eine Klasse die z.B. so ausschaut:
using System;
using System.Collections.Generic;
using System.Text;
namespace domination
{
class dbwork
{
string datei = Application.StartupPath + "\\domains.mdb";
}
}
Wie kann ich auf das Objekt datei zugreifen? Das Programm kennt den String nicht. Obwol die Klasse dem Projekt zugeordnet ist.
Er sagt mir immer ein Fehler bei Application... das erkennt er nicht sobald diese Anweisung in der Klasse ist. In der Hautform geht es.
hi,ich glaube,du solltest dir mal das galileo-open-book durchlesen! da es hier ganz klar daran scheitert,dass du nicht weißt,dass man zuerst eine objekt(instanz) einer klasse erstellen muss, bevor man auf die Instanz-Member der Klasse zugreifen kann.
abermal abgesehen davon, muss unter References auch die System.Windows.Forms Reference gesetzt sein und du solltest using System.Windows.Forms irgendwo am Anfang der Datei haben, da er sonst Application.StartupPath nicht finden wird, natürlich kannst du anstatt dem using auch System.Windows.Forms.Application.StartupPath schreiben!!
um ein Objekt von deiner Klasse zu erstellen schreibst du außerhalb dieser Klasse zb in der Main-Methode():
dbwork myobj = new dbwork();
und dann kannst du mittels:
myobj.datei
auf den Wert von datei zugreifen!
lg rizi
Wenn schon, dann in etwa so:
using System;
using System.Collections.Generic;
using System.Text;
namespace domination
{
public class DbWork
{
// member
private string datei = Application.StartupPath + "\\domains.mdb";
// properties
public string DatenbankPfad
{
get {return this.datei;}
}
}
}
// Aufruf:
DbWork dbwork = new DbWork();
string meinedatei = dbwork.DatenbankPfad;
Generell solltest Du aber überlegen, solche Einstellungen in die dafür vorgesehene app.settings - Datei abzulegen.
Hier ist eine gute Einführung in C#, die auch das Thema Felder, Klassen, Properties usw. behandelt.
Mit freundlichen Grüßen
Walter Grimm
Hallo.
Erstmal ist das eine sehr grundlegende Frage und es scheint so als wäre bei dir das Grundwissen zum Thema OOP (objektorientierte Programmierung) nicht vorhanden. (Sorry falls ich mich irre) Ich kann an dieser Stellen nur folgende Seiten empfehlen http://www.galileocomputing.de/openbook/csharp/
http://www.galileocomputing.de/openbook/oo/
- Wie kann ich auf das Objekt datei zugreifen? Das Programm kennt den String nicht. Obwol die Klasse dem Projekt zugeordnet ist.
Hast du eine Instanz der Klasse erstellt???
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace domination
{
class DeineAnwendung
{
dbwork name = new dbwork();
}
}
Es sieht so aus als würde der Konstruktor fehlen.
using System;
using System.Collections.Generic;
using System.Text;
namespace domination
{
class dbwork
{
string datei = Application.StartupPath + "\\domains.mdb";
// default Konstruktor
public dbwork()
{
}
}
}
Eine Möglichkeit wäre es den string auf public zu setzen:
using System;
using System.Collections.Generic;
using System.Text;
namespace domination
{
class dbwork
{
public string datei = Application.StartupPath + "\\domains.mdb";
}
}
oder über die "get" und "set"-Direktive zu arbeiten:
using System;
using System.Collections.Generic;
using System.Text;
namespace domination
{
class dbwork
{
string datei = Application.StartupPath + "\\domains.mdb";
public string Datei
{
get{return datei;} // öffentlicher Zugriff lesen
set{datei = value;} // öffentlicher Zugriff schreiben
}
}
}
dann kannst du über so darauf zu greifen:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace domination
{
class DeineAnwendung
{
dbwork name = new dbwork();
Console.WriteLine(name.Datei); // gibt den string "Datei" auf der Konsole aus
}
}
- Er sagt mir immer ein Fehler bei Application... das erkennt er nicht sobald diese Anweisung in der Klasse ist. In der Hautform geht es.
Besser immer eine genauere Beschreibung bzw. die Exception oder Fehlermeldung beifügen.
Falls ich das jetzt nicht falsch verstanden habe, dann empfehle ich dir die Grundlagen anzueignen, sollten dabei Probleme auftreten, ist hier jeder gerne bereit zu helfen, wie du ja siehst. 😉
Mfg
SGT_BOB
*************************
Ich bin root, ich darf das... 😜
root>_
*************************
Hallo,
ja da habt ihr absolut recht. Mir fehlen halt noch die Grundlagen. Bin seit 3 oder 4 Tagen dabei C# zu lernen. Vielen Dank für die vielen Infos.
Gruss
UnoDosTres