tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
10
ZUGRIFFE
670
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Babatune Babatune ist offline Mitglied
    Registriert seit
    Mar 2011
    Beiträge
    23
    Hallo,

    wie kann ich denn testen ob eine Variable deklariert wurde?

    Also wenn ich habe

    Code :
    1
    2
    3
    4
    5
    
    string meinString;
     
    if (test == null) {
    ...
    }
    funktioniert das nicht sondern ich bekomme vom Compiler Ärger...

    Weiß jemand Rat?

    Viele Grüße,
    Babatune
     

  2. #2
    TimTaylorX TimTaylorX ist offline Rookie
    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...

  3. #3
    Avatar von Muepe32
    Muepe32 Muepe32 ist offline Mitglied Brokat
    Registriert seit
    Mar 2011
    Beiträge
    354
    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!

  4. #4
    Babatune Babatune ist offline Mitglied
    Registriert seit
    Mar 2011
    Beiträge
    23
    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
     

  5. #5
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von Babatune Beitrag anzeigen
    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?
    Nein, eine solche Prüfung macht in C# keinen Sinn. Du bekommst einen Compilerfehler wenn du versuchst eine Variable zu verwenden die nicht deklariert ist.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  6. #6
    Babatune Babatune ist offline Mitglied
    Registriert seit
    Mar 2011
    Beiträge
    23
    Schade, dann muss ich das wohl anders machen :P

    Danke für die Antworten
     

  7. #7
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Zitat Zitat von Babatune Beitrag anzeigen
    Ich hab mir nämlich eine c# bilbliothek geschrieben auf die ich in vba zugreife.
    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

  8. #8
    Avatar von Muepe32
    Muepe32 Muepe32 ist offline Mitglied Brokat
    Registriert seit
    Mar 2011
    Beiträge
    354
    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!

  9. #9
    Babatune Babatune ist offline Mitglied
    Registriert seit
    Mar 2011
    Beiträge
    23
    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,
    Babatune
    Geändert von Babatune (14.04.11 um 09:52 Uhr)
     

  10. #10
    Avatar von Muepe32
    Muepe32 Muepe32 ist offline Mitglied Brokat
    Registriert seit
    Mar 2011
    Beiträge
    354
    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!

  11. #11
    Babatune Babatune ist offline Mitglied
    Registriert seit
    Mar 2011
    Beiträge
    23
    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

  1. Abfrage ob eine Variable deklariert ist
    Von Templorials im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 24.07.08, 23:36
  2. Variable nicht deklariert?
    Von Desastermaster im Forum .NET Web und Kommunikation
    Antworten: 4
    Letzter Beitrag: 02.02.07, 09:34
  3. Antworten: 2
    Letzter Beitrag: 17.07.06, 13:20
  4. Variable doppelt deklariert
    Von Bicko im Forum ASP
    Antworten: 7
    Letzter Beitrag: 29.08.05, 08:50
  5. Antworten: 2
    Letzter Beitrag: 16.04.05, 18:47

Stichworte