ERLEDIGT
JA
JA
ANTWORTEN
10
10
ZUGRIFFE
670
670
EMPFEHLEN
-
Hallo,
wie kann ich denn testen ob eine Variable deklariert wurde?
Also wenn ich habe
funktioniert das nicht sondern ich bekomme vom Compiler Ärger...Code :1 2 3 4 5
string meinString; if (test == null) { ... }
Weiß jemand Rat?
Viele Grüße,
Babatune
-
06.04.11 17:26 #2
- Registriert seit
- Apr 2007
- Beiträge
- 5
Ich bin jetzt mehr bei VB zu Hause, aber in deinem Beispiel hast du Test doch gar nicht deklariert. Willst du prüfen ob eine Variable deklariert wurde oder ob sie einen Inhalt hat?
Wer morgens zerknittert aufsteht,
hat den ganzen Tag über Entfaltungsmöglichkeiten...
-
Ob eine Variable deklariert ist im aktuell sichtbaren Bereich (Scope) sagt dir der Compiler. Die Prüfung, die du machst bezweckt die Abfrage ob es sich bei test um eine Nullreferenz handelt.
Viele Tutorials und Artikel zur Programmierung unter Windows mit C++ und C#. Tägliche Updates und Antworten auf eure Fragen:
Win32Easy - Blog
Es würde mich freuen, wenn ihr einen Kommentar postet!
-
Also zu testen ob die Variable deklariert wurd geht nicht?
Ich hab mir nämlich eine c# bilbliothek geschrieben auf die ich in vba zugreife.
Jetzt kann es vorkommen dass manche Variablen nicht deklariert werden. (Also nicht dass einfach kein Wert eingetragen wurde sondern dass sie gar nicht erst vorkommen.
Eine Prüfung ob dies der Fall ist kann ich in C# dann nicht machen?
Viele Grüße,
Babatune
-
13.04.11 09:25 #5
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Schade, dann muss ich das wohl anders machen :P
Danke für die Antworten
-
Aus einer Bibliothek (und eigentlich auch sonst in einer Klasse) sollten überhaupt keine Variablen nach außen zugänglich sein. Dafür gibt es in .NET die Properties, die man auch konsequent einsetzen sollte, um Datenstrukturen nach außen zu präsentieren.
Dann hat man die Möglichkeit mittels Reflection (
) abzufragen, welche Properties von einer Klasse überhaupt bereitgestellt werden.
Gruß
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
Hast du denn mal ein Codebeispiel das veranschaulicht, was du machen möchtest? Denn wie gesagt, ob eine Variable verwendest, die nirgendwo deklariert wurde dann erhälst du ja einen Compilerfehler bereits zu Kompilierzeit, die Prüfung geschieht also automatisch.
Viele Tutorials und Artikel zur Programmierung unter Windows mit C++ und C#. Tägliche Updates und Antworten auf eure Fragen:
Win32Easy - Blog
Es würde mich freuen, wenn ihr einen Kommentar postet!
-
Hallo,
das schaut bei mir in etwa so aus:
ich habe in C# eine Klasse:
Code :1 2 3 4 5 6 7 8 9 10 11 12
public class xmlBearbeitung{ public string mystring1, mystring2,.... ; public void writeXML(){ //hier wird in ein xml file mit XMLDocument geschrieben, das schaut dann am Ende bei der Eintragung dann so aus: mynode.Attributes["meinAttribut"].InnerText = mystring1; mynode.Attributes["meinAttribut2"].InnerText = mystring1; } }
dann hab ich noch eine Wrapperklasse
Code :1 2 3 4 5 6 7 8 9 10 11 12
public class xmlBearbeitung{ private mynamespace.xmlBearbeitung xml = new mynamespace.xmlBearbeitung(); public mynamespace.xmlBearbeitung xmlDaten{ get { return xml; } set { xml = value; } } public void writeXML() { this.xml.writeXML(); } }
In Access hab ich dann in VB
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Public Sub Aufruf() Dim x As New meinnamespaceVB6.xmlBearbeitung 'und so befüll ich die Werte: Set rs = CurrentDb.OpenRecordset(sqlstring) Do While Not rs.EOF x.xmlDaten.meinString1 = rs!WertString1 x.xlmDaten.meinString2 = rs!WertString2 ... 'und wenn alle Werte eingelesen sind: x.writeXML End Sub
Da das sehr viele Werte sind wollt ich das nicht direkt an die Methode übergeben.
Mein Ziel war nun eigentlich, dass falls ein Wert so nicht übergeben wird, dass bei der XML Bearbeitung der Eintrag erhalten bleibt der in meinem zu bearbeitenden XML steht.
Viele Grüße,
BabatuneGeändert von Babatune (14.04.11 um 09:52 Uhr)
-
Du könntest dazu ja auch ein Dictionary verwenden:
Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
public class XmlBearbeitung { private Dictionary<string, string> mStrings = new Dictionary<string, string>(); public void AddString(string attribute, string content) { if(mStrings.ContainsKey(attribute)) throw new ArgumentException("Attribute already has a text!"); // kann auch was anderes passieren hier mStrings.Add(attribute, content); } public void WriteXml() { foreach(var entry in mStrings) { myNode.Attributes[entry.Key].InnerText = entry.Value; } } };
Und dann in VBA:
Code vb:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Public Sub Aufruf() Dim x As New meinnamespaceVB6.xmlBearbeitung 'und so befüll ich die Werte: Set rs = CurrentDb.OpenRecordset(sqlstring) Do While Not rs.EOF x.xmlDaten.AddString("myAttribute1", rs!WertString1) x.xlmDaten.AddString("myAttribute2", rs!WertString2) ... 'und wenn alle Werte eingelesen sind: x.writeXML End Sub
Viele Tutorials und Artikel zur Programmierung unter Windows mit C++ und C#. Tägliche Updates und Antworten auf eure Fragen:
Win32Easy - Blog
Es würde mich freuen, wenn ihr einen Kommentar postet!
-
Hallo Muepe32,
an sich sehr interssante Idee.
Da ich aber sehr viele verschiedene Knoten ansprechen muss die auch zum Teil gleichlautende Attribute besitzen, ist dieser Ansatz leider eher nichts für mich.
Ich hab es jetzt einfach so gemacht, dass ich die betroffenen Variablen in C# einfach leer deklariert habe, also
public string meinstring1= "";
public string meinstring2="";
und dazu dann
public bool meinbool = false;
und falls eine Gruppe an Werten benutzt wird überschreib ich meinbool mit true und darüber frag ich das dann ob die Wertgruppe in die XML kommt.
So tuts das jetzt dann auch
Ähnliche Themen
-
Abfrage ob eine Variable deklariert ist
Von Templorials im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 24.07.08, 23:36 -
Variable nicht deklariert?
Von Desastermaster im Forum .NET Web und KommunikationAntworten: 4Letzter Beitrag: 02.02.07, 09:34 -
System Null Reference Exception: Der Objektverweis wurde nicht auf eine Objektinstanz
Von magnificent im Forum .NET CaféAntworten: 2Letzter Beitrag: 17.07.06, 13:20 -
Variable doppelt deklariert
Von Bicko im Forum ASPAntworten: 7Letzter Beitrag: 29.08.05, 08:50 -
chr() ergibt Fehlermeldung (Der Name "chr" wurde nicht deklariert)
Von Claas M im Forum .NET ArchivAntworten: 2Letzter Beitrag: 16.04.05, 18:47





Zitieren

Login





