Laden...

Forenbeiträge von Kabelsalat Ingesamt 369 Beiträge

14.06.2008 - 01:11 Uhr

Naja, die üblichen verdächtigen: CodePlex, Code Project, Novell Forge, Google Code, ...

... ups, SourceForge vergessen 🙂

09.06.2008 - 11:41 Uhr

Das Programm ist auf jeden Fall OS (GPL). Du könntest die relevanten Komponenten nach .Net / C# portieren.

07.06.2008 - 11:07 Uhr

Was ist das für ein Router?

Zufällig eine Fritz!Box? Wenn ja, dann häng sie mit an den internen ISDN-Bus der TK-Anlage. Du kannst dann jFritz (mit Klingeling) übers Netzwerk nutzen.

28.11.2007 - 22:37 Uhr

http://msdn2.microsoft.com/de-de/library/system.double.parse(VS.80).aspx

Erläuterungen zum erlaubten Zahlenformat bei Nichtangabe von IFormatProvider / NumberStyles:

http://msdn2.microsoft.com/de-de/library/fd84bdyt(VS.80).aspx

06.11.2007 - 10:21 Uhr

Das hat wahrscheinlich auch eher weniger mit C# zu tun. Er meint wahrscheinlich Citrix WinFrame. Mitlerweile nennt sich das Produkt jedoch Citrix Presentation Server.

31.10.2007 - 16:25 Uhr

Mit C++/CLI (der mit VS2005 eingeführte Nachfolger von managed C++) kannst du sog. mixed-mode assemblies erstellen, in denen unmanaged und managed Code vereint ist. Um die "Details im Hintergrund" kümmert sich der Compiler.

Siehe auch:

  1. http://www.codeproject.com/managedcpp/cppcliintro01.asp
  2. MSDN Library
23.10.2007 - 19:19 Uhr

Original von herbivore
Die Frage ist eher, wo ist die BuildArgumentOutOfRangeException-Methode definiert. Ich vermute in dem "(...)"-Teil.

Richtig: Es handelt sich um eine private Helfer-Methode der selben Klasse.

22.10.2007 - 21:00 Uhr

Hier ein Beispiel für einen ExceptionBuilder:


using System;
using System.Diagnostics.CodeAnalysis;
using System.Reflection;
using System.Security;
using System.Security.Permissions;
using EpiSource.Common.Resources;

namespace EpiSource.Common.ExceptionBuilders
{
	/// <summary>
	/// Builds common <seealso cref="ArgumentOutOfRangeException" />s with consistent exception messages.
	/// </summary>
	public static class ArgumentOutOfRangeExceptionBuilder
	{	
		
		// (...)

		#region BuildIndexOutOfRangeException

		/// <summary>
		/// (...)
		/// </summary>
		public static ArgumentOutOfRangeException BuildIndexOutOfRangeException()
		{
			return BuildIndexOutOfRangeException(null, null, null);
		}

		/// <summary>
		/// (...)
		/// </summary>
		public static ArgumentOutOfRangeException BuildIndexOutOfRangeException(string parameterName)
		{
			return BuildIndexOutOfRangeException(parameterName, null, null);
		}

		/// <summary>
		/// (...)
		/// </summary>
		public static ArgumentOutOfRangeException BuildIndexOutOfRangeException(object actualValue)
		{
			return BuildIndexOutOfRangeException(null, actualValue, null);
		}

		/// <summary>
		/// (...)
		/// </summary>
		public static ArgumentOutOfRangeException BuildIndexOutOfRangeException(Exception innerException)
		{
			return BuildIndexOutOfRangeException(null, null, innerException);
		}

		/// <summary>
		/// (...)
		/// </summary>
		public static ArgumentOutOfRangeException BuildIndexOutOfRangeException(string parameterName, object actualValue)
		{
			return BuildIndexOutOfRangeException(parameterName, actualValue, null);
		}

		/// <summary>
		/// (...)
		/// </summary>
		public static ArgumentOutOfRangeException BuildIndexOutOfRangeException(string parameterName, object actualValue, Exception innerException)
		{
			return BuildArgumentOutOfRangeException(CommonExceptionMessages.ArgumentOutOfRange_IndexOutOfRange, parameterName, actualValue, innerException);
		}


		#endregion

		// (...)
	}
}

22.10.2007 - 19:43 Uhr

Ich verwende statische ExceptionBuilder-Klassen. Es gibt sowohl globale, als auch lokale ExceptionBuilder. Ein globaler ExceptionBuilder ist in meinem Fall immer im Namespace EpiSource.Common.ExceptionBuilders definiert. Ein lokaler ExceptionBuilder ist eine private Unterklasse des Typs, der die generierten Exceptions benötigt. Die notwendigen Strings sind in Ressourcendateien gespeichert. Die für globale ExceptionBuilder in der Datei CommonExceptionMessages.resx, die für lokale ExceptionBuilder gesammelt in der Ressource ExceptionMessages.resx.

14.10.2007 - 14:13 Uhr

Im Bsp sind Schlüssel und Wert identisch. Die Verwendung eines Dictionary anstelle einer gewöhnlichen Liste ermöglicht jedoch das auffinden von enthaltenen objekten mit einer operation der Größenordnung O(1).

11.10.2007 - 15:44 Uhr

M.E. handelt es sich um eine Zeitspanne von 0s und keine Datumsangabe. Folgende Suchergebnisse könnten dir weiterhelfen: http://www.google.de/search?hl=de&q=xsd%3Aduration+PnYnMnDTnHnMnS&btnG=Suche&meta=

/edit: Speziell womöglich dieser Link.

11.10.2007 - 12:39 Uhr

Allerdings zeigt dir Reflector nie den tatsächlichen Quellcode. Die Rückumwandlung ist immer verlustbehaftet. Es fehlen selbstverständlich jegliche Kommentare und außerdem ist Reflector nicht immer in der Lage jedes Sprachkonstrukt korrekt rückzuwandeln. Das beste Beispiel sind compilergenerierte Iteratoren (C#: yield return). Bei denen liefert Reflector zwar logischen IL-Code, aber den C#-Code würde niemand so schreiben. Der Iterator wie er im tatsächlichen Quellcode steht ist nur noch schwer zu erahnen.

04.10.2007 - 22:29 Uhr

Immer noch nicht die Beste Performance, aber deutlich besser als dein Code:


string[] tokens = inputString.Split(' ');

// Hashset wäre besser geeignet, Dictionary geht auch
IDictionary words = new Dictionary<string, string>(tokens.Length);

// Achtung: O(n)
foreach (string token in tokens)
{
  if (!words.ContainsKey(token))
    words.Add(token, token);
}

// words enthält nun jedes Wort genau einmal
// ein Array lässt sich daraus folgendermaßen erstellen; Achtung: O(n)

string[] wordsArray = new string[words.Count];
words.Values.CopyTo(wordsArray, 0);

// so erstellst du wieder einen string; Annahme, dass ein durschnittliches Wort (einschließlich dem nachfolgenden Leerzeichen) aus sieben Zeichen besteht. Durch schätzen der Länge des fertigen Strings lässt sich die Performance erhöhen. Über die Verwendung eines genaueren Durchschnittswerts sollte nachgedacht werden.

StringBuilder keywordsBuilder = new StringBuilder(inputString.Length - 7 * (tokens.Length - words.Count));

// Achtung O(n)
foreach (string keyword in words.Values)
{
  keywordsBuilder.Append(keyword);
  keywordsBuilder.Append(" ");
}

// letztes Leerzeichen entfernen
keywordsBuilder.Remove(keywordBuilder.Length - 1, 1);

04.10.2007 - 22:15 Uhr

Nicht unmöglich, aber mit ordentlich Aufwand verbunden. Tipps sind hier im Forum höchstwahrscheinlich unerwünscht.

04.10.2007 - 22:11 Uhr

Hier ein erster Link: Button down halten

Die Suche nach "button checkbox" liefert noch deutlich mehr Treffer.

30.09.2007 - 10:59 Uhr

Visual Studio kann das nicht. Es gibt jedoch Übersetzungstools, die das unterstützen. Kostenlose Tools, die invariante Sprache und Übersetzung gleichzeitig anzeigen, kenne ich bloß zwei. Sehr gut gefallen hat mir GlobalResource. Das Entfernen von Resourcestrings ist jedoch nicht möglich, da durch einen Fehler sonst alle Daten verloren gehen 🙂 Leider gibt es keinen Sourcecode und die Anwendung wird nicht mehr weiter entwickelt. Schließlich gibt es auch noch eine webbasierte Anwendung für Portale etc., Esperantus.

Selbstverständlich gibt es auch kommerzielle Tools, die Satellite-Assemblies auch nachträglich erstellen können (kein Sourcecode mehr benötigt). Ein solches Tool ist Globalizer.Net.

/edit: Mehrere Ressourcendateien werden verwendet, um das erstellen (auch nachträglich) von Sprachpaketen zu erstellen.

/edit2: Noch ein Nachtrag. Ich bin gerade über ResEx gestolpert, noch ein Tool, das das Übersetzen von Resx-Dateien erleichtern soll. Getestet habe ich es noch nicht. Auch sollte man wohl noch Alchemy Catalyst erwähnen.

30.09.2007 - 01:26 Uhr

So schwer dürfte das ganze nicht zu realisieren sein. Zum einen gibt es für vBulletin ein entsprechendes Addin (deutsche Version). Da nicht unmittelbar in vBulletin integriert, wahrscheinlich jedoch eine nicht besonders elegante Lösung. Da es sich hier um ein .Net Forum handelt, bietet sich eigentlich so oder so eher Community Server an. Dieses System unterstützt Tags von vornherein (siehe auch).

Die größeren Probleme ergäben sich wohl eher in Anbetracht des Aufwands der Umstellung sowie der Lizenzkosten.

28.09.2007 - 22:51 Uhr

Ich selbst habe noch nie länger vor einem MacBook gesessen. Eine ehemalige Klassenkameradin hatte jedoch eines. Ansich ein tolles Gerät, leider nur mit Hochglanz-Spiegeldisplay erhältlich. Diese bieten zwar theoretisch eine höhere Farbbrillanz, aber was nutzt einem das, wenn man bloß das eigene Spiegelbild sieht? Von diesem Problem sind jedoch die meisten Consumerprodukte betroffen - die meisten Kunden scheinen sich auch nicht daran zu stören. Für mich ist es ein KO-Kritierium, deshalb hoffe ich auch, dass der Zwangsdienst ausreicht, um mir vor Studienbeginn ein MacBook Pro mit mattem Display zu leisten (bei diesem Produkt hat man die Wahl).

Was Parallels angeht, möchte ich noch eine Alternative nennen: VMWare Fusion. Das Produkt ist voll kompatibel zu der bekannten Virtualisierungslösung VMWare Workstation, die es für Windows und Linux gibt. Ich selber nutze diese unter Windows (Version 5, neuerdings 6) und hatte bisher noch nie Grund Unzufrieden zu sein.

Vielleicht hast du auch schon von Bootcamp gehört. Damit lässt sich Windows auch nativ auf dem MacBook betreiben. Gerade in Kombination mit Fusion / Prallels sehr nützlich: Man kann das fest installierte Windows direkt booten um volle Direct3D Unterstützung zu haben, aber auch von MacOS darauf zu greifen, ohne neustarten zu müssen (entsprechende Konfiguration der Hardwareprofile vorausgesetzt, Fusion unterstützt angeblich die automatische Einrichtung).

27.09.2007 - 00:41 Uhr

Wenn du die XML-Datei partout händisch erzeugen willst, findest du hier ein Beispiel zum erzeugen des Headers.

/Nachtrag:

Die Dokumentation der DataSet-Klasse ist sehr gut und umfasst Beispiele. Auch den Abschnitt "Siehe auch" beachten.

26.09.2007 - 15:14 Uhr

Hast du AddIns von Drittanbietern installiert? Sind irgendwelche Makros aktiv?

26.09.2007 - 14:46 Uhr

Hier beschreibt jemand, wie er Opensync für die Verwendung mit dem N73 konfiguriert werden muss.

Opensync ist ein quelloffenes Synchronisationstool für Linux. Der Quellcode sollte dir daher die notwendigen Informationen vermitteln.

25.09.2007 - 22:44 Uhr

Du kannst direkt auf Winamp zugreifen. Ich bin mir ziemlich sicher, dass Informationen zum gerade laufenden Lied verfügbar sind. Nähere Informationen findest du vermutlich im Winamp SDK.

25.09.2007 - 21:01 Uhr

Dieser Artikel könnte dir weiterhelfen. Selber habe ich mich leider noch nicht einmal mit WPF beschäftigt.

25.09.2007 - 17:04 Uhr

Ich eben gerade nicht. Sonst hätte ich die "Deutsche Freie Software Lizenz" auch 1:1 übernehmen können.

25.09.2007 - 15:35 Uhr

Gemäß deutschem Urheberrecht kann der / die Urheber Nutzungsrechte vergeben / gewähren. Dabei müsste doch eigentlich auch derartiges ausreichend sein:

Das Recht diese Software zu verwenden, kopieren, veröffentlichen und modifizieren wird mit folgenden Einschränkungen kostenlos gewährt:

  1. Alle Vermerke auf den / die Urheber in Quell- und Binärcode müssen erhalten bleiben.
  2. Ein für den Empfänger wahrnehmbarer Hinweis auf den / die Urheber muss vorhanden sein.

Auf diese Software findet deutsches Recht Anwendung. Haftung und Gewährleistung bleiben auf vorsätzliches Handeln beschränkt.

/Ergänzung:

Die BSD Lizenz verlangt nicht, dass die Software unter der selben Lizenz weitervertrieben werden muss. Auch muss der Quellcode nicht verfügbar gemacht werden.

25.09.2007 - 14:32 Uhr

Du hast zwei Möglichkeiten:

  1. Du exportierst Funktionen oder COM-Klassen, die du mittels P/Invoke bzw. COM-Interop in deiner .Net (C#) Anwendung verwendest.

  2. Du verwendest C++/CLI. Damit kannst du mixed mode assemblies erstellen, die du auch unter .Net verfügbar machen kannst. Leider lädt die MSDN-Webpage bei mir gerade sehr langsam, du findest jedoch näheres zu dem Thema, wenn du im Index der offline Hilfe nach cl.exe suchst und dann "Common Language Runtime (Option)" auswählst.

Ergänzung: C++/CLI ist nicht Managed C++ wie es mit .Net 1 eingeführt wurde. C++/CLI gibt es erst seit .Net 2.

24.09.2007 - 19:10 Uhr

Bitmap kann nicht animiert werden. Es wird einfach nur das erste Frame der Animation geladen. Du musst dir wohl etwas anderes überlegen.

24.09.2007 - 18:26 Uhr

Zum Beispiel so:


if (datenStruktur is AddressStuktur)
{
  AddressStruktur addressStruktur = (AddressStruktur)datenStruktur;
  string anschrift = addressStruktur.Anschrift;
}
else if (datenStruktur is SpeisenStruktur)
{ ... }

24.09.2007 - 18:12 Uhr

So meinte ich das auch nicht. Folgendermaßen klappt's:


ValueType myStruct = null;
Datenauswerten(new byte[5], out myStruct);

Wenn ich seine Frage korrekt verstanden habe, ist das auch die gesuchte Lösung, da er ja nicht Weiß welche Struktur zurückgegeben wird:


ValueType datenStruktur = null;

Datenauswerten(data, out datenStruktur);
//datenStruktur = Datenauswerten(data);

if (datenStruktur is addressStruktur)
{ ... }
else if (datenStruktur is speisenStruktur)
{ ... }

24.09.2007 - 17:44 Uhr

object geht natürlich. Wenn er wirklich nur Strukturen verwendet, funktioniert ValueType jedoch genauso: Structs (C# Programming Guide)

Außerdem sollte bei Verwendung von ValueType kein unnötiges Boxing notwendig erforderlich werden (100% sicher bin ich mir jedoch nicht).

24.09.2007 - 17:28 Uhr

Jede Struktur (C# Schlüsselwort struct) ist ein Wertetyp. Als solcher ist er implizit von System.ValueType abgeleitet.

Du könntest also schreiben:


void Datenauswerten(Byte[] Datenstrom, out ValueType valueType) {...}

geschickter wäre aber wohl:


ValueType Datenauswerten(Byte[] Datenstrom) {...}
24.09.2007 - 16:28 Uhr

Ja, du hast recht. Ich sollte die Antwort auf meine Anfrage bei den Betreibern des Projektes abwarten.

24.09.2007 - 16:20 Uhr

Haben denn Lizenzen überhaupt die notwendige Schöpfungshöhe um urheberechtlichen Schutz zu genießen?

24.09.2007 - 16:09 Uhr

Hallo,

Im privaten Umfeld entwickle ich als Hobby kleinere Anwendungen. Bisher habe ich nur selten etwas veröffentlicht und in den wenigen Fällen der Lizenz keine besondere Beachtung geschenkt. Ein einziges Projekt habe ich unter BSD-Lizenz gestellt.

Nun möchte ich diesem rechtlichen Thema jedoch ein wenig mehr Beachtung schenken. Wichtig ist mir, dass die Lizenz die Ideen der BSD-Lizenz berücksichtigt. Gleichzeitig möchte ich deutsches Recht beachten und nicht einfach eine, für das amerikanische Recht geschaffene, Lizenz übernehmen. Das einzige derartige Projekt, das ich finden konnte, ist die "Deutsche freie Software Lizenz". Diese lehnt sich jedoch an die GPL an, die ich nicht verwenden möchte. Daher habe ich den Lizenztext meinen Ansprüchen entsprechend angepasst. Nun stellt sich mir die Frage, ob ich das überhaupt gedurft hätte, oder ob ich damit die Rechte des Verfassers der Lizenz verletze? Falls nein würde ich mich über eure Einschätzung meines Lizenztextes freuen.

Hier ist der erste Entwurf zu finden: ([EDIT von herbivore]Link entfernt[/EDIT]

Danke

Kabelsalat

PS: Wer zufällig auch im 3D-Center Forum unterwegs ist, findet dort das selbe Thema. Es gleich hier zu posten wäre jedoch die bessere Option gewesen...

23.09.2007 - 22:21 Uhr

Original von Letitia L.
Gab es da mal nicht irgendwas, wo man eine Zahl übergeben konnte, und
wenn die NICHT "0" war, gab die Funktion "true" zurück? 🤔
...

Du meinst Convert.ToBoolean(int value). Für jeden Integerwert außer 0 liefert die Funktion true.

23.09.2007 - 18:58 Uhr

-> :rtfm:

Wenn der String nicht Boolean.TrueString ("True") oder Boolean.FalseString ("False") entspricht, wird eine Ausnahme ausgelöst. Die Großschreibung wird ignoriert.

23.09.2007 - 11:05 Uhr

Hallo,

wisst ihr, wie man mit dem cref-Attribut der XML Dokumentationskommentare eine Methodengruppe referenzieren kann? Wenn ich schreibe <see cref="Klasse.Methode" /> und es existieren mehrere Überladungen, wählt der Compiler automatisch die erste Überladung und gibt eine Warnung aus.

Bin für jeden Tipp dankbar

Kabelsalat

21.09.2007 - 15:02 Uhr

Paint.Net ist ein quelloffenes Grafikprogramm, das auf .Net aufbaut. Am ehesten wirst du in dessen Quellcode einen Lösungsansatz finden. Du vereinfachst dir die Suche sicherlich erheblich, in dem du zunächst versuchst den gewünschten Effekt mit Paint.Net zu realisieren. Damit solltest du die Suche nach dem relevanten Code-Teil erheblich vereinfachen.

Paint.Net-Lizenz beachten!

21.09.2007 - 11:55 Uhr

Neben Wix fallen mir eigentlich nur noch InnoSetup und NSIS (Nullsoft Scriptable Installer) ein. Beide bauen allerdings nicht auf der Windows Installer Technologie auf. Gerade zu InnoSetup soll es auch viele gute IDEs geben...

20.09.2007 - 21:44 Uhr

Vielleicht ist ja PostgreSQL (http://www.postgresql.org/) etwas für dich. Es gibt auch einen .Net Connector: http://npgsql.projects.postgresql.org/

20.09.2007 - 14:41 Uhr

Wie sieht es mit den Details der SecurityException aus? InnerException?

18.09.2007 - 23:02 Uhr

Verzeiht mir mein Missverständnis.

Zu Delphi: Du solltest einen Bogen um BDS 2005 (Borland Developer Studio 2005) machen. Die Hilfe ist schlicht grausig. Zumindest solltest du noch zusätzlich Delphi 7 wegen der Hilfe installieren. Delphi 2007 for Win32 soll wieder OK sein, getestet habe ich es allerdings nicht. Die Turbo IDEs kenne ich nicht.

18.09.2007 - 22:31 Uhr

Du kannst .Net Komponenten auch für COM verfügbar machen. Vielleicht hilft dir das bei deinem Problem weiter.

Ansonsten wäre Delphi zu empfehlen. Du erstellst native Windows-Anwendungen und kannst gleichzeitig noch auf eine elegante Sprache zurückgreifen.

PS: C# als weichgespültes C(++) bezeichnen, halte ich für ungerechtfertigt.

18.09.2007 - 15:47 Uhr

Ich finde Piet interessant. Einen Blick wert ist auch LOLCODE:

"HAI WORLD" (Hello world):


HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE

17.09.2007 - 22:12 Uhr

Was ist ein großer Hype: Threading oder Transactional Memory?

17.09.2007 - 18:51 Uhr

Beim Threadsynchronisieren muss man immer darauf achten keine Deadlocks zu erzeugen. Diese können sehr ärgerlich sein, da sie gerade auf Maschinen mit mehr als einem (virtuellen) Prozessor zu schwer reproduzierbaren Fehlern führen können. Aus diesem Grund entwarf ich einige Klassen, die in der Lage sind Deadlocks zu erkennen und darauf zu reagieren (siehe auch Auflösen einer Deadlocksituation). Das Projekt war schon zu 90% fertig, nun habe ich es allerdings aufgegeben, da ich auf einen wesentlich intuitiveren Ansatz gestoßen bin, den ich nicht vorenthalten möchte:

Auf Codeplex.com gibt ein Projekt des Dotnetpro-Autors Ralf Westphal, das Threadsynchronisierung mittels Transaktionen (wie bei Datenbanken) ermöglicht. Das Projekt findet ihr hier. Sehr zu empfehlen ist auch der zugehörige Dotnetpro-Artikel.