Darkleo’s Blog
Ein Schatz, der seinen Besitzer überallhin begleitet.

Ein kleiner UND, ODER und NICHT Parser

February 12th, 2010 by darkleo
 
public class Parser
{
 Dictionary<string,> status;
 public Parser(Dictionary<string,> status)
 {
  this.status = new Dictionary<string,>(status.Count * 2);
  foreach (var s in status)
  {
   this.status.Add(s.Key.Trim(), s.Value);
   this.status.Add("!" + s.Key.Trim(), s.Value ? false : true);
  }
}
 
public bool Parse(string input)
{
 String[] or = new String[] { "||" };
 String[] and = new String[] { "&amp;&amp;" };
 string[] ors = input.Split(or, StringSplitOptions.RemoveEmptyEntries);
 for (int io = 0; io &lt; ors.Length; io++)
 {
  string[] ands = ors[io].Split(and, StringSplitOptions.RemoveEmptyEntries);
  for (int ia = 0; ia &lt; ands.Length; ia++)
  {
    if (this.status[ands[ia].Trim()] == false)
      break;
    if (ia == ands.Length-1) //last
      return true;
   }
 }
return false;
}
 
public static void Test()
{
Dictionary<string,> status = new Dictionary<string,>();
status.Add("JA", true);
status.Add("NEIN", false);
status.Add("OK", true);
 
Parser p = new Parser(status);
bool result = p.Parse("JA &amp;&amp; OK &amp;&amp; !NEIN || NEIN");
result = p.Parse("NEIN || JA &amp;&amp; OK &amp;&amp; !NEIN");
result = p.Parse("NEIN");
result = p.Parse("JA");
result = p.Parse("!JA &amp;&amp; NEIN");
}
}
</string,></string,></string,></string,></string,>

Der letzte Baustein einer UND-Verknüpfung ist auch TRUE somit ist der Gesammte Ausdruck der Einfachen Abfrage TRUE. Das ist der ganze Trick, der Quelltext kann vereinfacht werden, wird aber nicht mehr so verständlich.
Viel Spass und ein schönes Wochenende.

Posted in .NET, C# | No Comments »

.NET User Group Dortmund Treffen am 04.11. ab 18:00 Uhr - Redesign von Software

November 3rd, 2009 by darkleo

NET User Group Dortmund Treffen am 04.11. ab 18:00 Uhr - Redesign von SoftwareDie Dodnedder, die .NET-Community der Metropolregion Dortmund, treffen sich erneut. Es gibt natürlich eine Menge kompetenter Fachgespräche. ;-)

[Thema]
Redesign von Software

Neue Technologien wie WPF und Silverlight bieten immense neue Möglichkeiten für die Gestaltung von User-Interfaces.
Diese neuen Möglichkeiten im Sinne der Benutzer und Usability einzusetzen, ruft einen neuen Beteiligten auf den Plan: Den Designer. Daraus resultiert wiederum komplexer Abstimmungs- und Sensibilisierungsbedarf, der durch zum Teil gegensätzliche Positionen von Entwicklern, Designern und Entscheidern erschwert wird.

Daniel Greitens, Geschäftsführer der Kommunikationsagentur maximago und MVP für Expression, macht den Handlungsbedarf deutlich, liefert wissenschaftliche Usability-Grundlagen und zeigt eine auf Praxis und Erfahrung basierende Herangehensweise zum Redesign von Software.

[Kosten]
Es wird Wert auf ein unkompliziertes Miteinander gelegt, deshalb gibt es keine formale Mitgliedschaft, die Teilnahme an Treffen ist kostenlos.

Wir freuen uns.
Team Do.NET

Xing Anmeldung: https://www.xing.com/events/net-user-group-dortmund-treffen-04-11-09-redesign-software-daniel-greitens-420044
Weitere Infos:
Fragen zu diesem und anderen Arbeitskreisen nimmt Herr Paul Mizel gerne entgegen.
Webseite: https://www.do-dotnet.de
Xing Gruppe mit Forum: https://www.xing.com/net/do-dotnet

oder sonst formlose Anmeldung per E-Mail an pmizel@do-dotnet.de
oder Handy: 01799609422

Posted in .NET, C#, User Group | No Comments »

string.Format(”{0,X}”,X)

August 6th, 2009 by darkleo

Ich habe ziemlich viel Zeit damit verbracht, einen String mit Leerzeichen zu belegen,

string.Format("{0:D5}",223);  // 000223

doch ich wollte [ ][ ][ ]223 abbilden, die Lösung ist ziemlich Einfach, wenn man es kennt.

string.Format("{0,5}",223);  // [ ][ ][ ]223

was auch funktioniert

string.Format("{0,-5}",223);  // 223[ ][ ][ ]

Weitere Formatierungen: http://alexonasp.net/samples/stringformatting/

Posted in .NET, C# | No Comments »

01.04 ab 18:00 ASP.NET MVC bei der .NET User Group Dortmund

March 18th, 2009 by darkleo

.NET User Goup Dortmund (Do.NET)Die Dodnedder, die .NET-Community der Metropolregion Dortmund, treffen sich erneut.
Es geht um das Thema ASP.NET MVC Framework, es gibt einige Demos zu sehen. Und natürlich eine Menge kompetenter Fachgespräche. ;-)

Wann:
Am 01.04.2009 18:00-20:00

WO:
Brockhaus AG
Pierbusch 17
44356 Lünen

GOOGLE: http://linkpin.de/7du6n1

Wie:
Anmeldung XING-Terminlink

Kosten:
Es wird Wert auf ein unkompliziertes Miteinander gelegt, deshalb gibt es keine formale Mitgliedschaft, die Teilnahme an Treffen ist kostenlos.

Wir freuen uns.
--------------------------------------------------------
Weitere Infos: http://www.do-dotnet.de
Wegbeschreibung: http://www.do-dotnet.de/front_content.php?idcat=4&idart=54

Posted in .NET, ASP.NET, C#, Community, User Group | No Comments »

Generic Config Collection Section

February 3rd, 2009 by darkleo

Alle Collection Items müssen einen Schlüssel beinhalten und dazu erstellen wir ein Interface
public interface IKeyElement
{object Key { get;}}

Dieses Interface wird in der Generischen Klasse verwendet.

public class GenericElementCollection<T> : ConfigurationElementCollection where T : ConfigurationElement, IKeyElement, new()
{
public GenericElementCollection(){ }
protected override ConfigurationElement CreateNewElement()
{
return new T();}public T this[int index]
{
get{return (T)BaseGet(index);}
set
{
    if (BaseGet(index) != null)
     {BaseRemoveAt(index);
}
   BaseAdd(index,
value);
}
}

new public T this[string Name]
{
get{return (T)BaseGet(Name);}}
public int IndexOf(T element)
{
return BaseIndexOf(element);}
public void Add(T element)
{BaseAdd(element);}
protected override void BaseAdd(ConfigurationElement element)
{BaseAdd(element,
false);}
public void Remove(T element)
{
if (BaseIndexOf(element) >= 0){BaseRemove((element as IKeyElement).Key);}}
public void RemoveAt(int index)
{BaseRemoveAt(index);}
public void Remove(string key)
{BaseRemove(key);}
public void Clear()
{BaseClear();}

public
override ConfigurationElementCollectionType CollectionType
{
get{return ConfigurationElementCollectionType.AddRemoveClearMapAlternate;}}

protected
override object GetElementKey(ConfigurationElement element)
{return (element as IKeyElement).Key;}

}

Beispiel:
public class MySection : ConfigurationSection
{
 [
ConfigurationProperty("gruppen")]
 [
ConfigurationCollection(typeof(GenericElementCollection<GruppenElement>), AddItemName = "gruppe")]
 public GenericElementCollection<GruppenElement> GruppenCollection
 {
  get { return this["gruppen"] as GenericElementCollection<GruppenElement>; }
 }
}Ein Klassen Element:public class GruppenElement : ConfigurationElement, IKeyElement
{
[ConfigurationProperty("name", DefaultValue = "", IsRequired = true)]
public String Name
{
get{return (String)this["name"];}}
[ConfigurationProperty("startUrl", DefaultValue = "", IsRequired = false)]
public String StartUrl
{
get{ return (String)this["startUrl"]; }
public object Key
{
get { return Name; }}

}

Configuration
<section name="SectionNameAusDerSectionDefinition" type="Configuration.MySection"
allowLocation="true" allowDefinition="Everywhere" />
<SectionNameAusDerSectionDefinition>
<gruppen>
 <gruppe name="name1" startUrl=www.darkleo.com>
 <gruppe name="name2" startUrl=www.darkleo.com/blog>
<gruppen>
</SectionNameAusDerSectionDefinition>

Posted in .NET, ASP.NET, C#, Generics, Klasse | No Comments »

Speed für die Anwendung durch das vorladen der Assemblys

December 14th, 2008 by darkleo

Hab da was Interessantes gefunden, wird die Anwendung mal zu langsam Aufgerufen, hilft folgender Codeausschnitt.

Thread jitter = new Thread(() =>
{
  foreach (var type in Assembly.Load("MyHavyAssembly, Version=1.8.2008.8," +
           " Culture=neutral, PublicKeyToken=8744b20f8da049e3").GetTypes())
  {
    foreach (var method in type.GetMethods(BindingFlags.DeclaredOnly |
                        BindingFlags.NonPublic |
                        BindingFlags.Public | BindingFlags.Instance |
                        BindingFlags.Static))
    {
      System.Runtime.CompilerServices.RuntimeHelpers.PrepareMethod(method.MethodHandle);
    }
  }
});
jitter.Priority = ThreadPriority.Lowest;
jitter.Start();

http://www.codeproject.com/KB/dotnet/pre_JIT.aspx

Posted in .NET, C# | No Comments »

Auf den GAC zugreifen ohne Exporer/Windows Einschränkungen

October 31st, 2008 by darkleo

http://darkleo.com/darkleo/download/dir2drive.htm

Laufwerks Buchstaben auswählen: z.b. A (Assembly): Floppy hat fast keiner mehr :-) 
"c:\windows\assembly" als Pfad eintragen, und Updaten.

Nutzlich, wenn jemand mal die Assemblys und Versionen davon haben möchte ;-)

Damit habt Ihr Zugriff auf den GAC und könnt euch auch die Einzelenen Versionen einer Assembyl ansehehen.
Änderungen des GACs auf eigene Gefahr.

Posted in .NET, Tools | No Comments »

NRW08 in Wuppertal am Fr. 12.09.2008

July 15th, 2008 by darkleo

Wieder findet die NRW0x Reihe statt, das größte regionale Community-Event für Software-Entwickler und IT-Professionals veranstaltet von der JustCommunity e.V..

NRW08 in "die boerse" Wuppertal am Fr. 12.09.2008
Auf 4 Tracks verteilt werden 24 interessante Themen vorgestellt.
Wir lernen immer wieder was Neues und das ist auch gut so, vielleicht trifft man sich dort ;-)

Weitere Infos:  http://www.nrw08.de/

Posted in .NET, Allgemein, Community, Fun | No Comments »

Binding als Klasse und als Kurzschreibweise

July 10th, 2008 by darkleo

Wir haben die Möglichkeit auf Zweiweisen das Binding zu beschreiben:

Explizit Innerhalb des Contents des Buttons:
<
Button Name="button" Content="OK">

 
<Button.Background>

   
<Binding ElementName="control" Path="Background" />

 
</Button.Background>

</Button>

In kürzerer Schreibweise sieht es so aus

In Kurzform in den Attributen der Klasse Button:
<
Button Name="button" Content="OK"
Background="{Binding ElementName=control, Path=Background}" />
 

Das Ergebnis der beiden ist Equvivalent.

Posted in .NET, WPF, XAML | No Comments »

.NET User Group Dortmund “Do.NET” 11.06 ab 18:00

June 3rd, 2008 by darkleo

Die Dodnedder, die .NET-Community der Metropolregion Dortmund, treffen sich erneut am 11.06. ab 18:00 Uhr. Es geht um das Thema .NET Framework(WCF), es gibt einige neue Demos zu sehen und auch etwas zu gewinnen. Und natürlich eine Menge kompetenter Fachgespräche.

Das Thema ist der produktive Einsatz der Windows Communication Foundation. Planen Sie WCF produktiv einzusetzen? Sind Sie vielleicht schon bei der Umsetzung und haben sich „halb-tot konfiguriert"? Daniel Fisher und Michael Willers geben wertvolle Tipps und Tricks aus 2 Jahren Ihrer praktischer Erfahrung mit der Technologie in Projekten und plaudern über die Interna der universellen Kommunikationsinfrastruktur der Windows-Plattform.

Die Sprecher sind Daniel Fisher und Michael Willers, diese haben Europaweit Vorträge auf Konferenzen zu .NET Themen gehalten und sind die Gründer des Unternehmens devcoach®.

Kostenlose Anmeldung: XING Termin
Weitere Infos: http://www.do-dotnet.de

Posted in User Group | No Comments »

« Previous Entries