Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Snowwolf3000
Thema: Aspektorientierte Programmierung
Am im Forum: Rund um die Programmierung

So will garnicht erst behaupten, dass ich das mit diesen Dependency Inversion wirklich verstanden hab. Also erzähl ich mal kurz so wie ich denke das es ist und ihr sagt mir ob ich recht habe (eigentlich wollt ich ja über AOP reden aber egal):

Also ich erstell von einen Objekt verwendete Objekte nicht mehr direkt, sondern überlass den IoC-Object diese Arbeit. In Spring ist das nur eine XML-Datei.
Vorteil ist wenn ich nur gegen Interfaces programmiere (sonst funktioniert es doch nicht???), kann ich relativ leicht ein Objekt austauschen. Das gibt es ja schließlich in der XML nur einmal. Weiteren Vorteil seh ich jetzt nicht. Gibt es noch mehr?

Hab ich das jetzt richtig verstanden und falls ja verwendet ihr das auch produktiv?

Thema: Leerzeichen einfügen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Sry.
War nicht ein Leerzeichen, sondern ein leeres Zeichen. Kommt davon wenn man nie verwendet.

Thema: Leerzeichen einfügen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Also wenn du das schöner findest

+ string.Empty + 

Thema: Aspektorientierte Programmierung
Am im Forum: Rund um die Programmierung

@norman_timo
Bisher hatten alle Implementierungen einen * Operator. Brauchst also nicht alle Funktionen angeben.

@svenso
Also was ich der Einfachheit unterschlagen hab: Zumindest in der Implementierung die ich mir angeschaut habe, musste man der Zielklasse (hier: TestObject) auch noch die verwendeten Aspekte mit angeben.
Dadurch deine bedenken bezüglich Kapselung/Wartbarkeit beseitigt?

Ach ja und was ist eigentlich Spring.net?

Thema: Aspektorientierte Programmierung
Am im Forum: Rund um die Programmierung

Hallo,
wollt mal fragen ob ihr schon Erfahrungen mit aspektorientierter Programmierung habt, obs jemand schon einsetzt (dann wahrscheinlich eher in Java als C#) usw.

Für alle die mit den Begriff noch nichts anfangen können: http://wwwse.fhs-hagenberg.ac.at/se/berufspraktika/2002/se99047/contents/german/aop.html oder unter Google gibt es jede Menge zu "AOP".

Versuchs aber mal kurz mit Hilfe eines Beispiels kurz zu erläutern:
In den heutigen Programmen gibt es einige Aspekte die sich den eigentlichen Gedanken der objektorientierten Progammierung wiedersetzen. Ziel ist ja möglichst alles in kleine, unabhängige Stücke zu zerlegen. Allerdings gibt es einige Aspekte bei denen das nicht vernünftig geht wie bei Logging, Validierung, Fehlerbehandlung usw. Man hat das praktisch in jeder Klasse (bzw. Methode) und das absolut redundant. Mithilfe der aspektorientierten Programmierung kann man das nun von den eigentlichen Code trennen.
Konkret sieht das folgendermaßen aus (idealisiert dargestellt):

Erstmal ohne AOP:


	public class TestObject
	{
		...
		public int MathFkt1(int a, int b)
		{
                      log.write("Starte MathFkt1");
                      return a+b;		
		}

		public int MathFkt2(int a, int b)
		{
                      log.write("Starte MathFkt2");
                      return a*b;		
		}
	}

Und so mit AOP:


	public class TestObject
	{
		...
		public int MathFkt1(int a, int b)
		{
                      return a+b;		
		}

		public int MathFkt2(int a, int b)
		{
                      return a*b;		
		}
	}

	public class LogAOP: Aspect
	{
        ...
		[IncludeMethods("TestObject", "MathFkt1")] //Zielfunktion
        [IncludeMethods("TestObject", "MathFkt2")] //Zielfunktion
		[Advice(AdviceTypes.Before)] //führe das aus bevor die Funktion aufgerufen wird			
        public void logFkt()
		{
			 log.write("Starte " + FktName);			
		}
    }
Die LogAOP Klasse merkt wenn die Funktion MathFkt1 oder 2 aufgerufen wird. In diesen Fall wird dann zuerst logFkt aufgerufen und erst dann die konkrete Funktion.

Das Ergebnis ist letzlich das Gleiche. Der Code ist aber kürzer(zumindest in der eigentlichen Klasse) und die Log-Funkton leicher wartbar, weil sie nur einmal vorkommt.

Hoffe das war jetzt halbwegs verständlich. Falls nicht fragt einfach nach. Könnt jetzt natürlich auch noch ein paar Links zu konkrekten Implementierungen posten, meine bisherige Erfahrungen damit usw. Allerdings hab ich jetzt schon viel mehr geschrieben als ich eigentlich wollte und ich bin mir nicht sicher ob das für euch intressant ist.

Gruß,
Snowwolf

Thema: Wo finde ich die Architect Tools in VS 2005 Team Suite?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Danke! Genau das meinte ich.
Eigentlich kann MS es ja garnicht offentsichtlicher in ihren Porgramm unterbringen, aber irgendwie hab ich es doch geschafft das zu übersehen.

Thema: Wo finde ich die Architect Tools in VS 2005 Team Suite?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,
mal ganz naiv gefragt wo finde ich eigentlich diese Sachen wie Serverarchitekturplanung, Webserviceplanung usw. in neuen VS.

Gruß,
Snowwolf

Thema: Winamp
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Also habs jetzt nur direkt von der Shell aus getestet, aber da reicht es wenn man denn Dateinamen in Anführungszeichen setzt und er hält es für eine Datei.

Müsste dann wohl so im Code aussehen:


p.StartInfo.Arguments = "/add "+ "\"" + file + "\"";

Thema: Was haltet ihr vom neuen Papst
Am im Forum: Smalltalk

@Programmierhans


using System.Globalization.Christianity.pope;

using System.xml.god; //was hab ihr gedacht ist die einzig wahre Sprache um mit Gott zu reden???

Also eigentlich ist es doch egal wer gewählt wurde. Die Kandidaten sind alle in einen Alter wo sich die Normalsterblichen schon längst in Rente befinden. Das dann fast nur noch Personen mit einer relaitv konservativen Einstellung vorherrschen ist eigentlich logisch.

Ansonsten ... konservativ ist ja wieder In. Also passt er doch eigentlich ganz gut.

Thema: IIS neu installiert - keine konfiguration mehr zu finden.
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Dann war also nur die Verknüpfung schrott. Leg die halt einfach neu an.
Der Pfad ist" %SystemRoot%\system32\inetsrv\iis.msc"

Thema: IIS neu installiert - keine konfiguration mehr zu finden.
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Was passiert wenn du bei Start->"ausführen..."->"inetmgr" eingibst?

Thema: monthCalendar auslesen
Am im Forum: GUI: Windows-Forms

DateChanged Ereignis abfagen:

private void monthCalendar1_DateChanged(object sender, System.Windows.Forms.DateRangeEventArgs e)
		{
			Console.WriteLine(e.Start.ToString()); //erster von Nutzer markierter Tag
			Console.WriteLine(e.End.ToString()); //letzter von User markierter Tag
		}

Thema: Verschlüsslung von Daten
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Du könntest mal einen Block auf die Enterprise Library von MS werfen. Sind ein paar Module die man frei in sein Programm integrieren kann
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp

Unter anderen gibt es da auch einen Configuration Application Block mit den man auch Daten verschlüsselt abspeichern kann.

Gruß,
Snowwolf

Thema: Der richtige Umgang mit Daten
Am im Forum: Rund um die Programmierung

Der Ansatz über XQuery wäre sicherlich auch intressant, aber wenns eh nicht richtig implementiert ist brauch ich mir ja darum keine Gedanken machen.

Also das Dokument von MS hab ich jetzt mal durchgelesen und auf das Programm hab ich mir auch angeschaut. Danke dafür. Ist relativ hilfreich sowas mal umgesetzt zu sehen. Gib es dazu eigentlich auch irgendwelche UML Diagramme?

Ich denke ich werd die XML mit einen DataSet einlesen(gekapselt in einen Objekt der Data Access Logic) und dann an eine Geschäftsentität weiterleiten. An dieses Objekt kann man dann wiederrum abfragen stellen. Ich kann die Abfragen nicht in DAL legen, weil die XML relativ groß ist, auf einen Netzlaufwerk liegt und alle Objekte der DAL ja statuslos bleiben sollen. Also werd ichs in der Geschäftsentitätsobjekt zwischenspeichern.

Gruß,
Snowwolf

Thema: Office 2003 Menü
Am im Forum: GUI: Windows-Forms

Hi,
http://www.codeproject.com/cs/menu/MhOffice2003Menus.asp

Habs aber selber nicht getestet. Kannst ja mal bescheid geben ob man das Teil gebrauchen kann.

Gruß,
Snowwolf

Thema: Der richtige Umgang mit Daten
Am im Forum: Rund um die Programmierung

Danke golohaas!

Das ist sehr ... erschlagend.
Werds mir aber auf jedenfall mal genauer anschauen.

Thema: Der richtige Umgang mit Daten
Am im Forum: Rund um die Programmierung

Hallo,

also in meiner Anwendung soll ich ein paar Termine (Ersteller, Zeitraum, Betreff usw.) in Form einer XML-Datei einlesen. Auf diese sollen dann auch Abfragen möglich sein. Allerdings nur von geringer Komplexität, also z.B. auf den Zeitraum, Ersteller usw.
Jetzt hab ich mich gefragt wie man sowas Strukturmäßig am besten aufbaut.

Das der Zugriff auf die XML-Datei in die Datenschicht kommt, ist sogar mir noch klar.
Allerdings frag ich mich dann hier schon ob das besser mit ADO.net wäre (wegen den Abfragen) oder ich einfach die XML Datei durchlaufe.

Vorallem aber (und deshalb hab ichs auch hier reingestellt) bin ich mir absolut nicht sicher wie ich Daten intern repräsentieren soll. Also wie ich die Daten an die Geschäftsschicht liefere. Könnte ja für jeden Termine eine eigene Entität erstellen, ein DataSet mit den benötigten Terminen oder sogar ein typisiertes DataSet.

Würde also mal gern hören wie ihr sowas aufbauen würdet, welche Vorteile/Nachteile es gibt usw.

Gruß,
Snowwolf

Thema: Delphi und Oracle
Am im Forum: Smalltalk


Da hab ich noch garnicht dran gedacht.

Also kann dir jetzt nur mal die üblichen verdächtigen Nennen:
http://www.delphipraxis.net/
http://www.dsdt.info
http://www.swissdelphicenter.ch/de/index.php

Die sollten dir aber dort besser weiterhelfen können als wir hier.

Gruß,
Snowwolf

Thema: DataAdapter, allgemeine Frage zur Funktionsweise und Problem
Am im Forum: Datentechnologien

Sry, was gefragt hast du ja auch noch. Werd mal versuchen da auch drauf einzugehen, auch wenn ich mir echt ein bisschen schwer tue zu verstehen was du willst.

>Gebe ich einem DataAdapter immer ein SQL-Command mit Parametern, die dann >sofort auch spezifieziere ( also welche Typ, welche Tabelle etc...), aber niemals selber >mit Werten belege?
Is mir nicht so ganz klar was du wissen willst. Also die Vorgehensweise ist immer gleich. ins SQL-kommando einen platzhalter reinschreiben und anschleißend den genauer definieren was da hin soll. Direkt reinschreiben geht dann erst mit ADO.net 2.0

>Der DataAdapter erkennt doch beim Aufruf der Update Methode doch von alleine, >welche Einträge sich geändert haben, und nur die werden dann geändert.
>Setzt er dann von sich aus die Werte in die Parameter-Platzhalter im SQL Command?
Wenn ichs richtig verstanden hab, ist die Antwort ja

Thema: DataAdapter, allgemeine Frage zur Funktionsweise und Problem
Am im Forum: Datentechnologien

Also was mir aufgefallen ist:

Also für Access geht schon mal das mit den Fragezeichen nicht. Das muss ein Kommando im Stil von @bezeichner sein. Fragezeichen klappt nur bei allen anderen DB-Typen. Frag MS warum. *schulterzuck*

Die letzte Zeile im ersten Block:


insProjekte.Parameters.Add("[BV_Name]", OdbcType.Text, 50);
insProjekte.Parameters.Add("[BV_Nr]", OdbcType.Text, 50);

müsste doch


updProjekte.Parameters.Add("[BV_Name]", OdbcType.Text, 50);
updProjekte.Parameters.Add("[BV_Nr]", OdbcType.Text, 50);
sein

Außerdem musst du doch den DataAdapter das Kommando zuweisen.


projekteAdapter.InsertCommand = insProjekte;

Hoffe das passt soweit was ich hier, normalerweise schlag ich ADO.net auch immer in meiner Referenz nach nur die hab ich momentan nicht da.

P.s Deine Bezeichnung für Objekte usw. ist echt grausam

Thema: .hex File übertragen in C#???
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich glaub so ganz klar ist mir noch nicht was du willst. Zum einlesen der hex-Datei würde ich mich aber mal mit StreamReader & co beschäftigen.
Also sowas in der Richtung:


//using sorgt dafür, dass Datei freigegeben wird wenn sie nicht mehr benötigt wird
using (StreamReader read = new StreamReader(FilePath)) 
{								
	int CurByte = read.BaseStream.ReadByte(); 						
	while (CurByte != -1) //solange Dateiende noch nicht erreicht
	{			
		CurByte = read.BaseStream.ReadByte(); //Byte der Datei einlesen			
	} 
}

Gruß,
Snowwolf

Thema: "globale" Objekte
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Also wenn du Form2 über x schließt müsstest du halt die Anwendung beenden oder Form1 wieder zeigen (und das halt in Closed von Form2 reinschreiben). Was du halt da machen willst.

Allerdings muss ich den Anderen schon recht geben: Singletons sind wirklich keine optimale Lösung dafür.

Thema: "globale" Objekte
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

@thoemy
Kann deinen Fehler nicht so recht nachvollziehen. Was ist den "Playingfield" überhaupt?
Auf jedendefall wird bei einen Singleton eigentlich die Instanz nicht verworfen. Ist ja der Sinn bei der Sache. Nur beim ersten Aufruf wird das Objekt erstellt und danach wird eine Instanz darauf behalten.

Hier einfach mal ein Prog was das macht was du willst.
http://mitglied.lycos.de/xyz001100/FormsMitSingleTon.zip

Also bei mir geht es soweit, ob das jetzt die beste Lösung ... keine Ahnung
Und damit kommen wir zu herbivore:

@herbivore
Was spricht den gegen eine Lösung über Singletons?

Thema: "globale" Objekte
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Also hab das jetzt nur mal kurz überflogen, aber die Lösung deines Problems sieht so aus: Du machst aus den beiden Forms Singletons.

Singletons sind Instanzen einer Klasse die es in deinen Programm nur genau einmal gibt. Also von einer klasse Form1 gibt es auch nur genau ein Objekt Form1. Zugriff auf diese Objekte erfolgt über die Klassennamen und die statische Mehtode instance. Exisitiert die Instanz noch nicht, wird sie erstellt.

Hier der Code wie deine Form1 zu ändern ist, damit daraus ein Singleton wird:


	public class Form1 : System.Windows.Forms.Form
	{
		/// <summary>
		/// Erforderliche Designervariable.
		/// </summary>
		private System.ComponentModel.Container components = null;

		 private static Form1 instance;

		protected Form1()
		{
			//
			// Erforderlich für die Windows Form-Designerunterstützung
			//
			InitializeComponent();
			//
			// TODO: Fügen Sie den Konstruktorcode nach dem Aufruf von InitializeComponent hinzu
			//
		}

		// Methoden
		public static Form1 Instance()
		{
			// Uses "Lazy initialization"
			if( instance == null )
				instance = new Form1();

			return instance;
		}
//... Rest kann so bleiben

Entsprechend verfährt du mit Form2.

Außerdem musst du in Form1 noch den Aufruf anpassen.


		[STAThread]
		static void Main() 
		{
			Application.Run(Form1.Instance());
		}

Zugreifen kannst du nun auf die Objekte mit Form1.instance() und Form2.insance();

Also z.B. von deiner Form2 zurück auf Form1 mit


private void Form2versteckenUndForm1zeigen()
{		
		Form1.Instance().Show();
		Hide(); //form2 verstecken
}

Hoffe das passt so weit. Hab das jetzt größenteils aus dem Kopf gemacht. Ein relativ kurzer Link zu Singletons (nicht das du mir zu viel liest ) , ist der hier:
http://www.dofactory.com/Patterns/PatternSingleton.aspx#_self1

Gruß,
Snowwolf

Thema: Routenplaner und Stadtpläne
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Würde dir auch eher davon abraten selber versuchen eine Streckenplanung zu programmieren. Das ist doch durchaus ein wenig kompliziert

Wenn ich dich aber schon nicht abhalten kann. Könntest auch mal einen Block auf MapPoint von MS werfen. Kenns jetzt aber echt nur von Namen, keine Ahnung inwieweit dir das weiter helfen könnte. Hier einfach mal der Link: http://msdn.microsoft.com/mappoint/

Thema: Probleme beim Zugriff auf einen Exchangeserver
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Was hab ich gegen WebDAV? Also dazu muss ich mal kurz erklären was ich machen soll:
Meine Aufgabe ist es einen Gruppenkalender zu erstellen (oder zu reparieren). Man soll damit also die Outlook Termine von mehreren Leuten gleichzeitig sehen, um Termine vernünftig koordinieren zu können.
Dazu gibt es auch schon ein Programm. Problem bei diesen ist eben das es einige Fehler aufweist. Das Teil ist in Java geschrieben, besteht nur aus WebDAV-Anweisungen die mindestens über 10 Zeilen gehen und <ironie> spitzenmäßig kommentiert sind</ironie>. Das es zu den Source keine Doku gibt versteht sich ja von selbst. Ach ja die Oberfläche ist mit QT, also c++ geschrieben.
Daher war jetzt mein erster Eindruck von WebDAV mal eher weniger positiv. Hat aber nichts zu bedeuten. Steh halt vor der Frage was ich mit den Teil mache.

Thema: Probleme beim Zugriff auf einen Exchangeserver
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich denke ich hab gerade das gefunden was du meinst: MSDAIPP

cn.Provider = "msdaipp.dso"

http://support.microsoft.com/default.aspx?scid=kb;en-us;281899
Hörst sich von der Beschreibung ganz genauso an, wie das was du gemeint hast.
Würde es ja gerne gleich testen, aber ich hab daheim keinen Exchange stehen.

Allerdings eine Sache verwirrt mich doch etwas:
IMPORTANT: MSDAIPP is not supported for use with Collaboration Data Objects for
Exchange 2000 Server (CDOEX).

Also wenn ichs richtig verstanden hab benutzte ich damit garnicht CDOEX, sondern WEbDAV zur Kommunikation. Ich meine ist mir solange egal, wie ich nicht diese grausamen WebDAV-Befehle benutzen muss.

Thema: Probleme beim Zugriff auf einen Exchangeserver
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,
also ich hatte eigentlich vor ein paar Daten direkt vom Exchange abzufragen. Ich bekomm aber die Verbindung zum Server irgendwie überhaupt nicht auf die Reihe. Zugreifen wollte ich eigentlich über CDO. Also hab ich mich mal an einen Beispiel von MSDN versucht, der mir irgenwelche Felder auflisten soll (http://support.microsoft.com/default.aspx?scid=kb;en-us;310203). Soweit komm ich allerdings garnicht. Immer wenn ich die Verbindung aufbauen will, bekomm ich das hier:


{"Der Provider kann nicht gefunden werden.  Möglicherweise ist er nicht richtig installiert worden." }

Und hier der dazugehörige Quellcode:


using System;

namespace Samples
{
	class Class1
	{
		static void Main(string[] args)
		{
			try
			{
				ADODB.Connection oCn = new ADODB.Connection();
				ADODB.Record oRc= new ADODB.Record();

				ADODB.Fields oFields;
				ADODB.Field oField;

				// TODO: Replace with your folder URL
				string sFdUrl = "http://MeinExchangeServer/exchange/MeinBenutzerName/Inbox";


				oCn.Provider = "exoledb.datasource";
				oCn.Open(sFdUrl, "MeinBenutzerName", "Passwort", -1); //ab hier geht es schief

				if(oCn.State == 1)
				{
					Console.WriteLine("Good Connection");
				}
				else
				{
					Console.WriteLine("Bad Connection");
				}

				oRc.Open(sFdUrl, oCn,
					ADODB.ConnectModeEnum.adModeReadWrite,
					ADODB.RecordCreateOptionsEnum.adFailIfNotExists,
					ADODB.RecordOpenOptionsEnum.adOpenSource,
					"", "");


				oFields = oRc.Fields;

				for(int i = 0; i < oFields.Count; i++)
				{
					oField = oFields[i];
					Console.WriteLine("{0} : {1}", oField.Name, oField.Value);
				}

				oRc.Close();
				oCn.Close();

				oCn = null;
				oRc = null;
				oFields = null;
				oField = null;
			}
			catch (Exception e)
			{
				Console.WriteLine("{0} Exception caught.", e);
			}
		}
	}


Kann mir jemand sagen was damit gemeint ist, das der Provider nicht richtig installiert ist?

Gruß,
Snowwolf

Thema: Steuerelement einem TabControl zur Laufzeit hinzufügen
Am im Forum: GUI: Windows-Forms

newTextbox.Dock = DockStyle.Fill;

Thema: Steuerelement einem TabControl zur Laufzeit hinzufügen
Am im Forum: GUI: Windows-Forms


private void menuDateiNeu_Click(object sender, EventArgs e)
        {
                string title = "Unbenannt " + (tabControlFrmMain.TabPages.Count + 1);
				TabPage newTab = new TabPage(title);
				tabControlFrmMain.TabPages.Add(newTab);

				RichTextBox newTextbox = new RichTextBox();
				newTab.Controls.Add(newTextbox);
}


Gruß,
Snowwolf