Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Rookiefråga ang klasser/structs och instansiering/initiering variabler

Postades av 2009-10-05 08:54:18 - Per Olofsson, i forum c# (c-sharp), Tråden har 3 Kommentarer och lästs av 1183 personer

Misslyckades med lite Java-programmering (för att hämta aktuellt username) så jag tänkte kompensera detta med lite misslyckad ASP.NET programmering. ;) Ha särskilt i åtanke att jag är nybörjare, så felet kan vara väldigt trivialt.

Tanken är att jag skulle vilja ha två klasser "ADuser" som motsvarar en enskild "Active Directory user" samt "ADusers" som skall vara en klass som delvis innehåller en array med "ADuser".

När jag kör koden så tycker den inte jag instansierat "_ADuser" i klassen "ADusers". Den första klassen "ADuser" fungerar trots spagettiprogrammeringen.. :))

TACKSAM FÖR HJÄLP som Ni säkert förstår.. /Per O.

ADuser:
public string _username;
public string _ort;
public string _namn;
public int _status;
public string _user_kmt;
public string _admin_kmt;
public string _logg;
public bool _found;

ADusers:
public int[] _ID;
public ADuser[] _ADuser;
public bool _found;
public int _no_users;




using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.DirectoryServices;

/// <summary>
/// Summary description for ADusers
/// </summary>
public class ADuser
{
    public string _username;
    public string _ort;
    public string _namn;
    public int _status;
    public string _user_kmt;
    public string _admin_kmt;
    public string _logg;
    public bool _found;

    public ADuser()
    {
    }

    public ADuser(string username)
    {
        //
        // Construct
        //
        _username = "";
        _ort = "";
        _namn = "";
        _user_kmt = "";
        _admin_kmt = "";
        _logg = "";
        _status = -1;
        _found = false;

        //
        //  Get single user
        //
        _found = false;
        if (username == null)
        {
            _logg = "Ingen användare medskickad till rutinen ADuser";
        }

        DirectoryEntry entryRoot = new DirectoryEntry("LDAP://RootDSE");
        string domain = (string)entryRoot.Properties["defaultNamingContext"][0];
        string domainpath = "LDAP://mydomain.local";

        DirectoryEntry searchRoot = new DirectoryEntry(domainpath);
        DirectorySearcher search = new DirectorySearcher(searchRoot);
        search.Filter = "(&(objectClass=user)(objectCategory=person)(samaccountname="+username+"))";

        SearchResult result;

        search.PageSize = 10;
        SearchResultCollection resultCol = search.FindAll();

        for (int counter = 0; counter < resultCol.Count; counter++)
        {
            result = resultCol[counter];
            if (result != null & counter < 2)
            {

                _username = result.Properties["samaccountname"][0].ToString();
                _namn = result.Properties["displayname"][0].ToString();
                _ort = result.Properties["l"][0].ToString();
                _found = true;
            }
            else
            {
                _found = false;
                _logg = "Hittade ej " + username + ".";
            }

        }
    }
}

public class ADusers
{
    public int[] _ID;
    public ADuser[] _ADuser;
    public bool _found;
    public int _no_users;

	public ADusers()
	{
		//
        // Constructor
        //
        _no_users = 0;
	}

    public ADusers(string Stype, string Par)
    {
        //
        // Major setup for AD-connections
        //
        // Parameters:  Stype="ort" --> Hitta ADusers som finns på denna orten
        //              ..fler kommer läggas till..
        //
        //              Par=värden som används vid ovan angivna funktion
        //
        ADuser[] _ADuser = new ADuser[];
        DirectoryEntry entryRoot = new DirectoryEntry("LDAP://RootDSE");
        string domain = (string)entryRoot.Properties["defaultNamingContext"][0];
        string domainpath = "LDAP://mydomain.local";

        DirectoryEntry searchRoot = new DirectoryEntry(domainpath);
        DirectorySearcher search = new DirectorySearcher(searchRoot);

        if ((Stype == "ort") & (Par != null))
        {
            _found = false;
            search.Filter = "(&(objectClass=user)(objectCategory=person)(l="+Par+"))";
            SearchResult result;
            search.PageSize = 1000;
            SearchResultCollection resultCol = search.FindAll();
            for (int counter = 0; counter < resultCol.Count; counter++)
            {
                result = resultCol[counter];
                if (result != null)
                {
*ERROR* ==>  _ADuser[counter]._username = result.Properties["samaccountname"][0].ToString();
                    _ADuser[counter]._namn = result.Properties["displayname"][0].ToString();
                    _ADuser[counter]._ort = result.Properties["l"][0].ToString();
                    _no_users = counter;
                    _found = true;
                }
            }

         }

    }
}





(Visual webb 2008 express)


Svara

Sv: Rookiefråga ang klasser/structs och instansiering/initiering variabler

Postades av 2009-10-05 12:56:04 - Oskar Johansson

Tips till nästa gång: Se till att skicka med felmeddelanden, det underlättar felsökning enormt mycket.

I vilket fall som helst..

I public ADusers():
följande rad:
ADuser[] _ADuser = new ADuser[];
skapar en _lokal_ variabel. Inga problem med det, men det innebär att variabeln _ADuser i _klassen_ fortfarande kommer vara tom när konstruktorn har körts färdigt.

Ditt problem är dock.. Du skapar en ny, _tom_ array. Det är en array, det är bara det att den är just tom. Den har längden noll. När du sedan försöker använda din array så försöker du komma åt ett index som inte finns.

Jag föreslår att du tittar på klassen List<> (i namespacet System.Collections.Generic); om du skapar en lokal List<ADuser> så kan du helt enkelt anropa metoden Add() på den listan för att stoppa in nya objekt. Objektet skapar du i förväg, sätter alla egenskaper etc, sedan stoppar du in det. I slutet av konstruktorn sätter du klassens _ADusers = listan.ToArray();


Svara

Sv:Rookiefråga ang klasser/structs och instansiering/initiering variabler

Postades av 2009-10-05 13:37:18 - Per Olofsson

Stort tack för att Du tog Dig tid att analysera & svara, Oskar! :)

:))

Skall kolla på "List".

Återkommer om jag löste det.. :)



/Per

_____________________________

BTW: Felmeddelandet:

System.NullReferenceException was unhandled by user code
Message="Objektreferensen har inte angetts till en instans av ett objekt."
Source="App_Code.us_fjg1-"
StackTrace:
vid ADusers..ctor(String Stype, String Par) i c:\Users\test.ABC\Documents\Visual Studio 2008\WebSites\Register\App_Code\ADusers.cs:rad 126
vid ADtest.Page_Load(Object sender, EventArgs e) i c:\Users\test.ABC\Documents\Visual Studio 2008\WebSites\Register\ADtest.aspx.cs:rad 26
vid System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
vid System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
vid System.Web.UI.Control.OnLoad(EventArgs e)
vid System.Web.UI.Control.LoadRecursive()
vid System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


Svara

Sv: Rookiefråga ang klasser/structs och instansiering/initiering variabler

Postades av 2009-10-05 15:16:46 - Jonas Sjöblom

Det kan den absolut, du kan också skapa en list med din struct.. t.ex.

<code>
public struct Hamburgare
{
string brodTyp;
Boolean ost;
List<string> ingredienser;
}

public function SkapaHamburgare()
{
List<string> ingredienser1 = new List<string>();
ingredienser1.add("gurka");
ingredienser1.add("tomat");

Hamburgare hamburgare1 = new Hamburgare() { brodTyp = "glutenfri", ost = true, ingredienser = ingredienser1 }

List<Hamburgare> hamburgarLista = new List<Hamburgare>();
hamburgarLista.add(hamburgare1);
}
</code>

Undvik "vanliga" arrayer.. dom är bara krångliga i c#


Svara

Nyligen

  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak
  • 16:14 Vem anlitar man egentligen när tak
  • 16:13 Vem anlitar man egentligen när tak
  • 11:52 Noen erfaring med uttak hos Mostbe
  • 11:51 Noen erfaring med uttak hos Mostbe

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 635
27 958
271 741
572
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies