Laden...
B
Borg myCSharp.de - Member
Berlin, Germany Dabei seit 23.08.2006 1.529 Beiträge
Benutzerbeschreibung

Forenbeiträge von Borg Ingesamt 1.529 Beiträge

23.01.2007 - 21:26 Uhr

Wobei die Türkei z.B. auch wieder eine Ausnahme ist - man braucht keinen Pass, obwohl die Türkei weder Teil der EU ist, noch Schengen unterzeichnet hat.

Wie die viele anderen Urlaubsländer auch. Noch dazu, wenn sie EU-Mitglied werden wollen.
Es hängt vom Staat ab, in den man reisen will, was für Dokumente verlangt werden. Und es kommen halt mehr Touristen, wenn sie nur den Ausweis, den sie nach ihren Gesetzen ja haben müssen, zur Einreise benötigen.
Dies ist halt nur nicht vertraglich gesichert wie in der EU und Schweiz.

23.01.2007 - 12:21 Uhr

Das klingt doch nach einem Backtracking-Problem.
Wurde vor kurzem auch in der c't am Beispiel von Sudoku erläutert.

  1. Dr. Michael Hund, Harald Bögeholz (bo)
    Zeigerhüpfen
    Backtracking mit verketteten Datenstrukturen
    Know-how,Backtracking,Dancing Links, DLX, c't-Puzzle, Sudoku, Monte Carlo, Donald E. Knuth
    c't 20/06, Seite 218
23.01.2007 - 12:00 Uhr

Ich vermute eher, dass du den Backslash nicht maskiert hast. Also entweder "\" oder @"".

22.01.2007 - 21:12 Uhr

Wenn bzw. falls ich auf Vista umsteige, werde ich auch mit einer legalen Version den Hack benutzen...

EDIT: Bestraft werden doch aber immer nur die braven Kunden. Jeder Kopierschutz verärgert nur die Leute, die sich dass Spiel/Programm/DVD kaufen und Probleme damit haben. Alle anderen nutzen die Hacks und Cracks und haben meist weniger Probleme.

22.01.2007 - 21:02 Uhr

Prinzipiell sollten doch beide Varianten funktionieren.
Ich vermute eher, dass du den Backslash nicht maskiert hast. Also entweder "\" oder @"".

22.01.2007 - 20:57 Uhr

Dauert aber auch höchstens einige Monate, bis dazu ein Hack im Umlauf ist. Wird genauso laufen, wie die Versuche das Kopieren von XP zu verhindern.
Erst die Liste mit den geklauten Schlüssel für die im Internet kursierende Volume-Licence-Version im SP1, dann die erweiterte Liste im SP2, anschliessend WGA-Prüfung (Windows Genuine Advantage) und als letztes WGA Notification und Systemsperre.
Für alle diese gab es nach kurzer Zeit einen Hack.

Ich bin sowieso der Meinung, dass ein solcher Versuch sinnlos ist. Genauso wie DRM. Wenn ich physischen Zugriff auf einen Rechner habe, ist es einfach unmöglich Manipulationen zu verhindern.

22.01.2007 - 20:53 Uhr

Danke, aber ich denke ich werde bei dem zusätzlichen DIV bleiben. Ist zwar wirklich unnötiger Code, aber damit provoziere ich wenigstens keine (möglicherweise) fehlerhafte Darstellung durch verwirrende (mindestens den IE) CSS...

22.01.2007 - 20:48 Uhr

Mit MouseClick und KeyPressed kannst du das emulieren.

22.01.2007 - 20:47 Uhr

Was hast du denn als SmoothingMode eingestellt?
Prinzipiell muss AntiAliasing ausgeschaltet sein.
Ich konnte der Doku niicht entnehmen, ob AA bei HighQuality aus ist. Zumindest bei None ist es das aber.
Und dann sollten die AA-Artefakte auch weg sein...

22.01.2007 - 20:42 Uhr

Es gibt noch kaum wirklich gute Umsetzungen, vor allem bei den Browsern.

Soweit ich weiß, kann nur der IE6 kein SVG. Wie es mit dem 7er aussieht, kann ich nicht sagen.

22.01.2007 - 11:59 Uhr

Sie können die Daten schon per Funkt austauschen, aber mit maximal 256bps.

Ich bin aber der Meinung, dass gerade dies eigentlich der größte Vorteil der Maschinen ist. Das, was eine weiß, wissen auch sofort die anderen.

22.01.2007 - 11:56 Uhr

coalesce: zusammenwachsen, verschmelzen.

Leider kann ich dir hier keine Lautschrift hinmalen, daher versuche ich mal, diese in deutsch wiederzugeben.
Aussprache: ko-e-less, Betonung auf -e-.

22.01.2007 - 11:50 Uhr

Es geht aber nicht anders. Ein Speicherleck erhältst du nur, wenn du massig Objekte erzeugst (eventuell sogar unmanaged) und nicht wieder frei gibst.
Wieso der Speicherbedarf ansteigt kann ich dir auch nicht sagen. Aber gerade wenn deine Anwendung nichts macht, kannst du dir ziemlich sicher sein, dass das Framework einfach nur auf Verdacht Speicher anfordert. Aber wie gesagt, sobald er benötigt wird, wird er sofort wieder freigegeben.
Und wenn du sagst, dass dein Programm speicherintensiv ist, dann liegt es nicht an den paar MB, die das FW auf Verdacht reserviert.
Ich vermute eher, dass du einige Objekte nicht abräumst (Stichwort IDisposable).

22.01.2007 - 11:38 Uhr

Aber wie kriege ich das hin das er das Kartesisch oder Polar behandelt. Entweder erzeugst du zwei Mengen von an sich identischen Klassen, eine für kartesisch, eine für polar.
Oder, was die bessere Lösung ist: du schreibst ein Interface welches alle benötigten Methoden bereitstellt und implementierst dieses in zwei Klassen, eine für kartesische, die andere für polare Koordinaten. Dieses Interface (bzw. seine Implementierungen) stellen dann dein Koordinatensystem, also deinen Raum dar. Wenn du das Interface geeignet aufbaust, könntest du sogar einfach durch Implementation einer Klasse allen deinen Figuren und Körpern den Umgang mit sphärischer und hyperbolischer Geometrie nahe bringen.
Wenn du jetzt ein neues Objekt im Raum erzeugst, kannst du ihm einfach das zugehörige Koordinatensystem (also eine der [statischen, singleton] Klassen) mitgeben.
Das ist dann wirklich OO: jedes Objekt verwendet das Koordinatensystem, was ihm am meisten zusagt...

22.01.2007 - 11:21 Uhr

Ich bin auch der Meinung, dass eine solche Robotermannschaft in Kürze gegen Menschen gewinnen kann. Und 40 Jahre ist dafür eine durchaus realistische Zeit.
Der Vorteil von Robotern ist ja, dass sie in der Lage sind die komplette Umgebung auf einmal zu erfassen sowie in Echtzeit zu kommunizieren. Während sich die menschlichen über den Platz weg anschreien, dass da eine Lücke ist, haben die Roboter sich dass schon tausendmal zugefunkt und auf den Weg gemacht.
Die Menschen haben dann nur noch den Vorteil der überlegenen Motorik und daraus resultierenden Spielweise. Daher nehme ich an, dass die Menschen mit Ball am Körper überlegen sind, die Maschinen jedoch aufgrund ihrer besseren Koordination über größere Entfernungen.

Auf jeden Fall wird es ein interessantes Spiel.

22.01.2007 - 11:13 Uhr

Wenn es übers Internet geht, solltet ihr euch auch überlegen, ob die ganzen Finanzdaten wirklich direkt auf dem aus dem Internet erreichbaren Server liegen sollen. Ich halte es für sicherer, wenn dieser nur den Gatekeeper für den eigentlichen Finanzserver darstellt, der nicht direkt aus dem Internet erreichbar ist (die beiden haben ein eigenes privates Netz).

Ansonsten hat regen ja alles geschrieben.

22.01.2007 - 11:02 Uhr

Nun mit ein paar Joins sollte das gehen. Dazu haben wir hier aber ein paar DGV-Experten.

ja ich weiss, dass ich dies wohl in eine Tabelle hätte packen können, war jedoch nicht ich dafür zuständig und nun kann mans nicht mehr ändern, weils bereits zu einem grossen Teil implementiert ist

Die ganze Arbeit, die mit den Work-Arounds jetzt und in Zukunft verbunden ist bzw. sein wird, ist wahrscheinlich deutlich teurer, als die Neuimplementation.
Die Behebung eines Fehlers ist umso billiger, je früher sie erfolgt. Auch wenn die im Design die teuersten überhaupt sind...

22.01.2007 - 10:57 Uhr

Oft diskutierte Frage => Forumsuche.

Nichtsdestotrotz: Das Framework belegt immer relativ viel Speicher. Sobald aber mehr Speicher von anderen Programmen angefordert wird, wird der GC angeworfen und der Speicher wieder freigegeben. Daher werden anderen Programmen keine Ressourcen "gestohlen", es sei denn natürlich, du hast so wenig Speicher, dass er komplett mit langlebigen Objekten gefüllt ist. Dafür kann das Framework aber auch nichts.

Das Muster, nach dem sich der Speicherverbrauch erhöht ist ganz einfach: du erzeugst ein neues Objekt, neuer Speicher wird angefordert. Der GC wird aber nur gestartet, wenn - wie oben beschrieben - der Speicher anderweitig benötigt wird, du ihn manuell startest oder das Programm in den Hintergrund geschickt - also minimiert - wird.

Da ich nicht davon ausgehe, dass du nur 64MB Speicher hast (ich glaube Windows 2000 kann man darauf noch laufen lassen - so lange man nichts mit dem System vor hat), ist das Verhalten jedoch in Ordnung.

22.01.2007 - 10:48 Uhr

Oder du benutzt die Forumsuche. So etwas habe ich vor wenigen Tagen erst gelesen.

22.01.2007 - 00:56 Uhr

Ich verstehe dein Problem nicht ganz. Du brauchst doch bloß die Formeln in Code umzusetzen.
Es würde sich aber eine ordentliche Klassenbibliothek anbieten. Das unterscheidet sich dann doch gehörig vom C64 BASIC (das waren noch Zeiten).

Ich würde beispielsweise eine Klasse Punkt implementieren, welche einen Punkt im Raum darstellt.
Die Differenz zweier Punkte ist ein Vektor. Der Abstand die Länge des Vektors.
Das ganze nun kartesisch und polar.
Eine solche mathematische Klassenbibliothek ist eine gute Übung zur (Operator-)Überladung und zum Klassendesign. Erweiterungen in Richtung Figuren und Körper benötigen dann Vererbung und Interfaces.

Wenn du dich mit diesem Thema immer an den links verlinkten openbooks (Ressourcen) orientierst, hast du eine gute Übungsstrecke.

22.01.2007 - 00:47 Uhr

Vielen Dank. Das ist ja wirklich ein tolles Feature vom IE. Vielleicht habe ich ja irgendwo eingestellt, das Bild von hinten darzustellen? Das würde erklären, warum der Hintergrund vorne ist. 😉

Habe durch weiteres probieren jetzt folgendes Konstrukt gefunden, das scheinbar funktioniert:

<div style="float: right; position: relative; width: 320px; height: 240px; z-index: 1;">
   <img src="images/ilona.jpg" alt="xxx" height="240" width="320" />
</div>
21.01.2007 - 22:56 Uhr

Habe das Projekt mal depersonalisiert und hier hochgeladen.

Habe auch die Style-Anweisungen in die CSS-Datei ausgelagert, hat aber nicht geholfen.
Jetzt vermute ich ja, dass der IE mit den übergeordneten Styles in dieser Kombination irgendwie nicht klar kommt.

21.01.2007 - 22:10 Uhr

Ich verstehe nicht ganz, was du willst. Falls deine Klasse erst die Daten ermittelt, die in der PictureBox dargestellt werden sollen, kann sie doch einfach ein Image per Property übergeben und das Form zeigt dieses in einer eigenen PictureBox an.
Das Ableiten von PictureBox bietet sich nur an, wenn du diese erweitern willst.
So wie ich es verstanden habe, geht es dir aber nur um das Bild, nicht um das Control.

EDIT: @herbivore: In Zukunft werde ich wohl nur noch posten, wenn du off bist... 😉

21.01.2007 - 22:06 Uhr

Vl sind wir Österreicher euch überlegen

Dafür altert ihr nach der ART schneller...

21.01.2007 - 22:03 Uhr

Zwar kein eigentliches C#-Problem, aber trotzdem:

In einer HTML-Datei versuche ich mittels

<img style="float: right;" src="images/mypic.jpg" alt="sonstewatt" height="240" width="320" />

ein Bild rechtsbündig anzeigen zu lassen.
Das funktioniert in FF und Opera auch erwartungsgemäß.
Im IE6 wird zwar die Größe des Bildes freigehalten, der Text umfließt es auch ordentlich, wenn ich mit der Maus darüber gehe, wird sogar der ALT-Text und die Grafik-Symbolleiste angezeigt.
Das Bild selbst jedoch nicht. Der Bereich bleibt einfach in der Hintergrundfarbe.
Auch das auf einigen Seiten empfohlene Schachteln in DIV oder DISPLAY:INLINE hilft nicht.

Kennt jemand einen Workaround dafür?

21.01.2007 - 21:56 Uhr

Huch? Bin ich im falschen Film? Das hatte ich doch schon in der 6ten wenn ich mich nicht irre.

In Deutschland findet man Gleichungsumformungen auf dem Lehrplan der 8.Klasse, in anderen Bundesländern eventuell auch schon 7. Vorher macht man nur Termumformungen.

Außerdem wäre sechste Klasse noch dramatischer...

21.01.2007 - 20:01 Uhr

Verstehe ich das jetzt richtig, dass dein Edit die Problemlösung ist?

21.01.2007 - 19:59 Uhr

Weder noch.
Du gibst der Methode als Parameter die Nummer des Bildes (beginnend bei 0) und sie erzeugt daraus den Dateinamen ohne Extension. Probier es einfach mal aus.
Mit dem Wissen, dass % der modulo-Operator ist (bei Unklarheiten dazu Forensuche benutzen) und dem VS-Debugger ist die Funktionsweise leicht zu entschlüsseln.

21.01.2007 - 19:55 Uhr

Vielleicht klappt es ja schon, wenn du den NetworkStream nach dem Senden schließt.

21.01.2007 - 19:47 Uhr
public string CreateName( int ImageNumber )
{
   Stringbuilder current = new StringBuilder();
   while (ImageNumber > 0)
   {
      current = current.Insert( 0, (char)( (int)'a' + (ImageNumber % 26) ) );
      ImageNumber /= 26;
   }
   return current.ToString().PadLeft( 3, 'a' );
}
21.01.2007 - 19:29 Uhr

Dann leg doch alle Maus-Events auf einen Handler und speichere, ob gerade gescrollt wird. Es wird halt für jedes Ereignis extra aufgerufen und nicht kummuliert.

21.01.2007 - 17:28 Uhr

Hättest du ordentlich geguckt, hättest du gesehen, dass die Bilder Namen der Form

http://photos.discokreisikeller.de/albums/2005_05_14_MiniNight/aaa.jpg

tragen. Die Buchstaben werden dabei stellenweise hochgezählt, so dass auf aaz aba folgt. (aaa, aab, aac, ..., aaz, aba, abb, ...)
Die ganzen DSC* sind die Originaldateinamen einer Sony CyberShot Kamera, die beim Hochladen automatisch als Bildtitel gespeichert wurden.

21.01.2007 - 17:22 Uhr

In der Praxis wird eh...

Aber nicht in der mathematischen Praxis. Da ist der Durchmesser das künstliche Konstrukt und der Radius "natürlich".

Siehe Definition: Ein Kreis ist die Menge aller Punkte einer Ebene, die von einem gegebenen Punkt (Mittelpunkt) der Ebene den gleichen Abstand (Radius) haben.

Nur in der Technik rechnet man mit dem Durchmesser.

EDIT: Ansonsten muss ich Puppetmaster recht geben. Gleichungen umstellen ist Stoff der achten Klasse...

21.01.2007 - 17:17 Uhr

Du musst das interface natürlich als public deklarieren.

21.01.2007 - 14:02 Uhr

Das Spiel bezieht seine Eingaben ja per DirectX.
Daher vermute ich mal spontan, dass DirectX die Eingabe direkt vom Treiber abholt und dem entsprechend DirectX-Spiele keine Windows-Nachrichtenschleife aufweisen oder in dieser nicht alle Nachrichten ausgewertet werden.
Wenn es über DirectX keine Möglichkeit gibt einen Tastendruck zu senden, sehe ich nur noch die Möglichkeit, das dem Treiber selbst unterzuschieben.

21.01.2007 - 13:40 Uhr

Ich versteh den sinn deiner Unterstellung, dass ich nicht programmieren könnte, nicht ganz...

Ich wollte dir keinesfalls etwas unterstellen, allerdings hast du dich gerade neu angemeldet und postest dann obige Frage. Wenn du dir die Frage noch mal durchliest, wird dir vielleicht klar werden, warum ich diese Vermutung hatte.

Aber wie schon erwähnt, das Openbook ist immer eine gute Quelle.
Ansonsten verwendest du ja VS und da gibt es den Projekttyp Klassenbibliothek. Dieser kompiliert in eine DLL, die du in neuen Projekten referenzieren kannst. Alternativ kannst du natürlich auch die Dateien mit den Klassen per Hand in jedes neue Projekt einfügen.

21.01.2007 - 13:20 Uhr

Innerhalb der EU besteht Freizügigkeit. Du kannst dich als EU-Bürger also frei in der Union bewegen, ohne jegliche Dokumente vorzeigen zu müssen.
Falls dennoch Dokumente verlangt werden (Terrorgefahr etc., Gründe gibt es immer), reicht der BPA (Bundespersonalausweis) vollkommen aus.
Im Normalfall verlangen aber nur die Fluggesellschaften beim Einchecken die Vorlage des BPA zur Identifikation.
Einen Pass benötigst du nur, wenn du die EU verlässt (mit Ausnahme Schweiz).

PS.: Du solltest solche Sachen nicht umständlich suchen, sondern direkt auf der Website des Auswärtigen Amtes nachschlagen.

EDIT: @herbivore: Langsam finde ich das echt gemein von dir. immer willst du erster sein. Schluchz. 😉

21.01.2007 - 00:25 Uhr

Forensuche! Eine solche Erklärung wurde hier schon mehrfach gegeben.

21.01.2007 - 00:22 Uhr

Wie ich oben geschrieben habe, muss RPC und COM fertig initialisiert sein. Daher wird auf diesem Rechner wohl eine der Komponenten diese Verzögerung verursachen...

21.01.2007 - 00:12 Uhr

Ich hab ne Frage speziell zu der Erstellung einer eigenen Engine...

also sozusagen den Code der in dem Tutorial entwickelt wurde, einfach in ne Funktion packen und die dann in jedem Programm verwenden können. Wie mach ich das jetzt? ich hab da schon en bissle rumprobiert, aber ich kriegs nicht gebacken^^

Wie wäre es, wenn du erst Programmieren und C# lernst und dann eine Engine schreibst?
Die Videos von Microsoft sind ja immer ganz nett, sie verheimlichen jedoch, dass die Programmierer dort Ahnung haben von dem was tun.

20.01.2007 - 12:13 Uhr

Du vermutest die Ursache ganz richtig. Da allerdings das Framework komplett fertig initialisierte RPC und COM voraussetzt, wirst du diese Verzögerung beim Start nicht verhindern können.
Es liegt ja auch eigentlich daran, dass seit Windows XP der Explorer gestartet wird bevor das System fertig hochgefahren ist. Und das merkst du jetzt halt...

19.01.2007 - 16:32 Uhr

Ansonsten bleibt dir nur, alle anderen Bytes per Array.Copy zu kopieren...

19.01.2007 - 13:39 Uhr

ICh dachte das wurde mit "Einführung" von Unicode, die ja seit Windows 2000 Standardmäßig aufgehoben.

Kompatibilität.
Die ganzen von Win3.1 abstammenden Funktionen erwarten nur 8-Bit Chars. Deshalb müssen für diese Codepages (per Default halt Windows-ANSI ISO-8859-1252) angegeben werden.
Erst ab Windows 95 zogen langsam UniCode Varianten (mit gleichen Namen aber aber auf W für Wide endend) ins WinAPI ein.
Windows 2000 war dann das erste System, bei dem jede Funktion mit Zeichenketten auch UniCode konnte.

Da Windows CE aber ein komplett neues System war, brauchte man auf Kompatibilität keine Rücksicht zu nehmen.

19.01.2007 - 13:26 Uhr

Für diesen konkreten Anwendungsfall kann man aber einfach die Zeilen

#define _NET_2_0
#undef _NET_1_1

oder ähnlich an den Anfang der Datei setzen. Die ganze Anpassung besteht dann in Austauschen von #define und #undef.

19.01.2007 - 13:11 Uhr

Es wäre also nicht nur sinnvoll die Lösungen, sondern auch die Aufgabenstellung selbst zu bewerten.

O-Ton Prof: "Ich mache das seit zwanzig Jahren so. Ich habe schon an Projekten mitgearbeitet, da wussten ihre Eltern noch nicht mal, wie sie Sie zu Stande kriegen. Also erzählen Sie mir nicht..."
Leider gibt es einige solcher Exkrementausscheidungsöffnungen an den Unis.
Passiert wohl, wenn man jemanden ständig erzählt, er sei eine Koryphäe

19.01.2007 - 12:57 Uhr

Es gibt, denke ich, zwei Arten der Code-Schönheit.

Als erste, die Art, den Code so direkt zu schreiben wie möglich, d.h. alle gewünschten Funktionen in quasi mathematischer Eleganz und Natürlichkeit durch den kürzest möglichen und damit prägnantesten Code auszudrücken. Dies ist immer erstrebenswert, allerdings auch sehr schwer zu erreichen, und hängt sehr stark von der verwendeten Sprache, den Fähigkeiten (bzw. Hintergrundwissen und Verständnis) des Programmierers, der Problemstellung und vielen anderen Faktoren ab.

Zweitens ist einfach nur das "Aussehen" der Quellcodedatei gemeint. Einrückungen, Blockanfänge, Kommentare, Regions, Aufteilung in Dateien und Namespaces, teils das Klassendesign (verbindet/gehört zu beide/n Arten) uva.

Man kann die beiden, den Code personifizierend, als innere und äußere Schönheit beschreiben. Während jeder Mensch über sehr ähnliche Kriterien für die innere Schönheit verfügt, ist die äußere in großen Teilen Geschmackssache.

Ästhetik ist damit einfach die Konvergenz von innerer und äußerer Schönheit.

19.01.2007 - 12:44 Uhr

Hallo Ilane1982,

im Allgemeinen duzt man sich (bzw. wir hier) immer.

Um deinem Problem weiter nachzugehen, wäre es interessant zu wissen, ob der Fehler auch kommt, wenn du das Programm über die Kommandozeile startest.

EDIT: Häng dich beim Aufruf mal mit dem Debugger an das Programm. Dann müsstest du eigentlich genau an der Stelle landen, an der die Ausnahme ausgelöst wird.

18.01.2007 - 20:34 Uhr

Habe den Reader neu installiert. jetzt ist alles iO. Danke.

18.01.2007 - 20:17 Uhr

Oder in dem Programm. Wahrscheinlich eine Null-Pointer-Referenz. Der Versuch auf die Adresse 0x0 zuzugreifen führt dann zu dieser Exception...

18.01.2007 - 19:58 Uhr

* Die Struktur mit den statischen Methoden und der internen Klasse habe ich gewählt, weil ich einen einfachen Aufruf ohne Erzeugung einer Klasse wollte. Das spricht auch gegen die Parameter-Klasse.
* Die vielen Varianten für Print() gefallen mir auch nicht sehr. Es schien mir aber wichtiger, dass möglichst alle Parameter wahlweise genutzt werden können.

Dann solltest du aber eine sinnvolle Sortierung für deine Parameter anbieten und Enums einführen. So ist es einfach sehr schlecht, wenn du mehrere Bools übergibst, obwohl der Wert logisch gar kein Bool ist. Desweiteren kann der Compiler die Methoden dann nicht unterscheiden.
Wieso nutzt du nicht die ganzen zu PrintDocument gehörenden Klassen? Dann brauchst du diese doch bloß weitergeben...

* Die Save()-Varianten ohne Dateiname haben natürlich wenig Sinn. Sie gibt es vor allem wegen der Vollständigkeit.

Vollständigkeit gebietet über Sinn? Nun gut, es ist deine Klasse.

* Events statt ProgressForm: das hatte ich auch überlegt; aber dann muss der Nutzer mehr einstellen. Da war mir die "schnelle" Lösung wichtiger.

Was muss ich denn da einstellen? Dann sollte wenigstens der Nutzer angeben können, ob er eine ProgressBar wünscht.
Der "Quick'n'Dirty"-Ansatz führt bei Klassen, die andere benutzen sollen, nur zu einer sehr geringen Verbreitung.

* #if: Du hast natürlich recht. Darauf bin ich nicht gekommen, weil ich selbst weitgehend auf NET 2.0 eingestellt bin, aber diese Klasse unbedingt anpassen wollte.

Sei mir nicht böse, aber wenn ich NET 2.0 benutze, würde ich eh nicht auf deine Klasse zurückgreifen. Vor allem nicht um ein Bild zu speichern, da das ganze nur einen Dreizeiler darstellt.