Zum Inhalt springen

lbm1305

Mitglieder
  • Gesamte Inhalte

    373
  • Benutzer seit

  • Letzter Besuch

Beiträge von lbm1305

  1. Für Einsteiger gibt es solche kleinen Aufgaben wie:

    a) Berechnen einer Quersumme

    B) Prüfzahlenberechnung

    c) FizzBuzz

    etc.

    Bei FizzBuzz gibt es mehrere Möglichkeiten.

    bspw.

    - erstelle zahlen von 1 bis 100

    - durchlaufe jede Zahl, dabei sind folgende regeln zu beachten.

    * wenn zahl durch 3 teilbar ist => ausgabe "fizz"

    * wenn zahl durch 5 teilbar ist => ausgabe "buzz"

    * wenn zahl durch 3 und 5 teilbar => ausgabe "fizzbuzz"

    * trifft keine regel zu => ausgabe der zahl

    ausgabe auf der konsole, ggf. auch andere ausgabeform

  2. Eventuell so?

    
            public static readonly DependencyProperty RectangleCountProperty =
    
                DependencyProperty.Register(
    
                    "RectangleCount",
    
                    typeof(int),
    
                    typeof(UserControl1),
    
                    new PropertyMetadata(OnDependencyPropertyChanged));
    
    .
    
    .
    
    .
    
            private static void OnDependencyPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    
            {
    
                var sender = (UserControl1)d;
    
    
                 Calculate();
    
    
                sender.InvalidateVisual();
    
    
                //var oldValue = e.OldValue;
    
                //var newValue = e.NewValue;
    
            }
    
    

  3. Ich gehe davon aus, dass die Verzeichnisse in der einzlesenden txt-Datei Zeilenweise aufgeführt sind.

    ReadLine von StreamReader liest "zeilenweise". D.h. in Variable Zeile steht immer ein Pfad zu einem Verzeichnis.

    Innerhalb des while - Statements müsstest Du jetzt die Aktion auf das Directory ausführen. Was auch funktioniert...Du speichert alles Pfade in einer Enumeration vom Typ string (IEnumerable<string>) und führst dann auf jedes Item der Enumeration deine Aktionen aus.

    
    using (StreamReader sr = new StreamReader(datei))
    
    {
    
    string zeile;
    
    
    while ((zeile = sr.ReadLine()) != null)
    
    {
    
         if(Directory.Exists(zeile) {
    
             var files = Directory.GetFiles(zeile);
    
    
             foreach(var file in files) {
    
                  // MacheEtwasMit(file);
    
    
                 // Die Methode kann bspw. die Datei mit den Bildnamen öffnen und den Pfade 
    
                 // Dateinamen vergleichen bzw. suchen.
    
             }
    
         }
    
    }
    
    }
    
    

    Noch ein paar Hilfen:

    http://msdn.microsoft.com/de-de/library/db5x7c0d.aspx

    http://msdn.microsoft.com/de-de/library/4cyf24ss.aspx

    http://msdn.microsoft.com/de-de/library/07wt70x2.aspx

  4. Alles Links von Goulasz verweisen auf die MSDN. Dort gibt es genug Beispiele zu den entsprechenden Klassen. Auch wie man Dateien öffnet und ausliest findest Du da bzw. auch per Suchmaschine. Wie sieht den Dein bisheriger Code aus?

    Ansonsten kann ich Dir anbieten, das Programm zu schreiben, wenn die finanziellen Angelegenheiten geklärt sind.

  5. Code funktioniert bei mir so.

    
        [ServiceContract]
    
        public interface IDemoService
    
        {
    
            [OperationContract]
    
            string GetMessage();
    
        }
    
    
    
        public class DemoService : IDemoService
    
        {
    
            public string GetMessage()
    
            {
    
                return "Hallo Welt";
    
            }
    
        }
    
    
    
      <system.serviceModel>
    
    
        <behaviors>
    
          <serviceBehaviors>
    
            <behavior name="DemoServiceBehavior">
    
              <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" policyVersion="Policy12"/>
    
              <serviceDebug includeExceptionDetailInFaults="true"/>
    
            </behavior>
    
          </serviceBehaviors>
    
        </behaviors>
    
    
        <services>
    
          <service name="WcfServiceDemo.DemoService" behaviorConfiguration="DemoServiceBehavior">
    
            <endpoint address="" binding="basicHttpBinding" contract="WcfServiceDemo.Contracts.IDemoService" />
    
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    
          </service>
    
        </services>
    
    
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    
    
      </system.serviceModel>
    
    
    

    Die Projektstruktur

    post-44539-14430449655203_thumb.jpg

  6. Ein Custom Event ist nicht anderes als ein selbstgeschriebener Event. Der (Custom)Event muss dort gefeuert werden, wo der bspw. CheckChangedEvent behandelt wird (Handler Methode, wie bspw. beim ButtonClick). Im Grunde genommen verkettest Du die Events.

    In C#

    
    public delegate void MyEventDelegate(object sender, EventArgs e);
    
    
        public partial class Form2 : Form
    
        {
    
            public event MyEventDelegate CustomEvent;
    
    
            public Form2()
    
            {
    
                InitializeComponent();
    
            }
    
    
            private void button1_Click(object sender, EventArgs e)
    
            {
    
                if (CustomEvent != null)
    
                {
    
                    CustomEvent(this, EventArgs.Empty);
    
                }
    
            }
    
        }
    
    
    Wie die Syntax in C++ ist, musst Du wissen ;-) Auszug aus Form1
    
            private void button1_Click(object sender, EventArgs e)
    
            {
    
                var form2 = new Form2();
    
                form2.CustomEvent += CustomEventHandler;
    
    
                form2.ShowDialog();
    
    
                form2.CustomEvent -= CustomEventHandler;
    
            }
    
    
            private void CustomEventHandler(object sender, EventArgs e)
    
            {
    
                Debug.WriteLine("Event, der in Form2 gefeuert wurde.");
    
            }
    
    

    EDIT: Stichworte sind hier DELEGATE und EVENTS

  7. Für C#

    - Form2 enthält einen CustomEvent, der ausgelöst wird, wenn Form2 den CheckChangedEvent feuert.

    - Form2 erhält eine Callback Methode, die beim Instanzieren der Form2 in Form1 mit übergeben wird.

    - EventAggregator bzw. ein ServiceBus. Denke aber, das dies ein wenig übertrieben wäre :-)

  8. In die Zukunft sehen kann keine Programmier / Skiptsprache. Selbst PHP nicht.

    Vor dir haben genug Leute ähnliche Probleme gehabt und haben diese auch gelöst. Warum solltest Du also das Rad neu erfinden müssen? Ich möchte mal behaupten, dass dein Entwurt einfach bescheiden ist.

    Wenn man durch eine Collection iteriert, dann fragt man das gerade aktuelle Objekte ab und führe dann ggf. Operationen durch. Was man machen kann: Man holt sich nur valide Objekte in die Collection und arbeitet diese dann ab.

    Hier muss aber auch eine Prüfung stattfinden, welche Ordner valide sind und welche nicht. Und dafür gibt es genug Lösungen.

  9. Bspw. eine Extension-Methode schreiben, die die Exception abfängt und statt dessen einen Boolean-Wert zurück gibt.

    
        public static class DirectoryInfoExtensions
    
        {
    
            public static bool IsAuthorized(this DirectoryInfo self)
    
            {
    
                try
    
                {
    
                    var directorySecurity = self.GetAccessControl();
    
    
                    return true;
    
    
                }
    
                catch (UnauthorizedAccessException ex)
    
                {
    
                    return false;
    
                }
    
            }
    
        }
    
    
    Benutzung:
    
                var directoryInfo = new DirectoryInfo(root);
    
                var directories = directoryInfo.GetDirectories();
    
    
                foreach (var directory in directories)
    
                {
    
                    if (!directory.IsAuthorized())
    
                    {
    
                        Console.WriteLine(directory.FullName);
    
                    }
    
                }
    
    

  10. dein beschriebener Fall würde sich z.B. am Besten dann anbieten, wenn man den Event-Handler nur vorrübergehend braucht, später dann aber nicht mehr. Im Fall von popeye1977 wäre das dann der Fall, dass man zu Begin den Handler setzt und die ganze Zeit darauf zurückgreift.

    Nicht benötigte Events sollten deregistriert werden, was oft vergessen wird. Und das wird in dem Beispiel des TE nicht durchgeführt.

    Wie bereits geschrieben geht es hier nicht um das Kritisieren, sondern nur um ein mögliches "Best Practice" ;-)

  11. Ist das die eigentliche Vorgehensweise bei der Implementierung von Events bei VB.NET?

    Ich dachte immer, Events werden mit AddHandler registriert.

    bspw.

    
        Sub Main()
    
    
            Dim foo As Foo = New Foo()
    
            'Dim foo As New Foo()
    
    
            AddHandler foo.FooEvent, AddressOf FooEventHandler
    
    
            foo.DoSomething()
    
    
            RemoveHandler foo.FooEvent, AddressOf FooEventHandler
    
    
            Console.ReadKey()
    
    
        End Sub
    
    
        Private Sub FooEventHandler(ByVal sender As Object, ByVal e As DispoGrenzeEventArgs)
    
    
            Console.WriteLine("FooEvent: {0}", e.Value)
    
    
        End Sub
    
    
    
    Public Class Foo
    
    
        Public Event FooEvent As EventHandler(Of DispoGrenzeEventArgs)
    
    
        Public Sub DoSomething()
    
    
            RaiseEvent FooEvent(Me, New DispoGrenzeEventArgs(True))
    
    
        End Sub
    
    
    End Class
    
    

  12. Schau mein letztes Posting an:

    Die Klassen findest Du unter: System.DirectoryServices.AccountManagement;

    zusätzlich stehen dir dann folgenden Eigenschaften zur Verfügung:

    
    var userPrincipal = UserPrincipal.FindByIdentity(principalContext, windowsIdentity.Name);
    
    
    Console.WriteLine("Vorname: {0}", userPrincipal.GivenName);
    
    Console.WriteLine("Nachname: {0}", userPrincipal.Surname);
    
    Console.WriteLine("E-Mail: {0}", userPrincipal.EmailAddress);
    
    Console.WriteLine("Telefon: {0}", userPrincipal.VoiceTelephoneNumber);
    
    
    // und noch mehr ;-)
    
    

    Im Beispiel davor kannst Du entweder den Namen angeben oder bspw. die Windows Identity angeben.

    Code läuft unter Windows 7 x64 mit .NET 4

    Das Auslesen des Users ist im Gegensatz zu Deinem Beispiel nur 2 Zeilen lang.

  13. Geht die Beschreibung des Zieles genauer?

    Ansonsten geht das hier vielleicht:

    
    var windowsIdentity = WindowsIdentity.GetCurrent();
    
    
    var principalContext = new PrincipalContext(ContextType.Domain, pfad_zum_ldap-server, name_container);
    
    
    var userPrincipal = UserPrincipal.FindByIdentity(principalContext, windowsIdentity.Name);
    
    //var userPrincipal = UserPrincipal.FindByIdentity(principalContext, "max.mustermann");
    
    

  14. Hier zwei Möglichkeiten, die funktionieren sollten.

    
        Sub Main()
    
    
            Dim i As UInt32 = 1
    
            Dim auoResetEvent As AutoResetEvent = New AutoResetEvent(False)
    
    
            While (True)
    
    
                'Dim task As Task = task.Factory.StartNew(AddressOf DoSomething)
    
                'task.Wait()
    
    
                ' oder
    
    
                ThreadPool.QueueUserWorkItem(AddressOf DoSomething, auoResetEvent)
    
                auoResetEvent.WaitOne()
    
    
                Console.WriteLine("Es läuft...{0}", i)
    
    
                i += 1
    
    
            End While
    
        End Sub
    
    
        ' ThreadPool
    
        Sub DoSomething(ByVal stateInfo As Object)
    
    
            Console.WriteLine(Thread.CurrentThread.ManagedThreadId)
    
    
            Thread.Sleep(100)
    
    
            CType(stateInfo, AutoResetEvent).Set()
    
    
        End Sub
    
    
        ' Task
    
        Sub DoSomething()
    
    
            Console.WriteLine(Thread.CurrentThread.ManagedThreadId)
    
    
            Thread.Sleep(100)
    
    
        End Sub
    
    

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...