Laden...
B
bitstream
myCSharp.de - Member
1
Themen
189
Beiträge
Letzte Aktivität
vor 19 Jahren
Dabei seit
28.07.2004
Beruf
Softwareentwickler
Herkunft
Hannover
Interessen
Kino, DVD, Computer
Erstellt vor 19 Jahren

Die Elemente einer Hashtable haben immer einen Schlüssel, den du entweder bei Add() als ersten Parmeter oder an den Indexer als Index übergibst. Im Beispielcode ist das immer der Wert der in strId drinsteht. Mit _htAlleObjekte[strId] greifst du also immer auf das Element zu, welches durch den Schlüssel strId identifiziert wird.

Der Schlüssel ist vom Typ System.Object, kann also beliebig sein. Der Schlüssel ist keine bestimmte Property deines Objekts, da die Hashtable die Logik deiner Objekte bzw. deren Klassen nicht kennt. Es ist also deine freie Entscheidung, woher dieser Schlüssel kommt und wo du diesen speicherst. Der Einfachheit halber bietet es sich logischerweise an, diesen in einem Instanzfeld des Objekts zu speichern und als Property ohne Setter zur Verfügung zu stellen. Es obliegt dann aber immer noch dir selbst, der Hashtable zu sagen, welcher Schlüsselwert zu verwenden ist, da die Hashtable diesen Umstand nicht kennen kann.

Erstellt vor 19 Jahren

Original von RIDI2oo5
@bitstream: dein code könnte aber auch noch optimiert werden. etwa so:

Das würde ich nicht als Optimierung ansehen. Und besser finde ich es auch nicht, da es (zumindest für meinen Geschmack) es schlechter lesbar ist. Kurz gesagt, es war Absicht, das aktuelle Relation-Objekt in einer separaten Variable zu halten.

Xgene schrieb ausserdem: "oder wäre vielleicht eine hashtable eine bessere wahl?". Das wäre wirklich zu überlegen, eine Collection einzusetzen, bei der du den Relation-Namen als Schlüssel verwendest. Dann brauchst du gar keine Schleife mehr...

Erstellt vor 19 Jahren

Ich würde folgendes vorschlagen, das auch das (bei einer grossen Anzahl von Einträgen) unperformante foreach() durch for() ersetzt.

public void DeleteRelation(string relationName)
{
	for (int i = 0; i < this.relations_.Count; i++)
	{
		Relation r = (Relation) this.relations_[i];
		if (r.RelationName == relationName)
		{
		    this.relations_.RemoveAt(i);
		    break;
		}
	}
}
Erstellt vor 19 Jahren

Du kannst für die verschiedenen Ansichten auf der rechten Seite UserForms erstellen, die du bei einem Buttonklick gegeneinander austauschst. Damit hast du den gewünschten "Effekt", und es spricht auch nichts gegen so ein Vorhaben.

Erstellt vor 19 Jahren

Original von RIDI2oo5

  1. was meint ihr, wenn ihr von der 'mangelnden sicherheit des IE' redet? in welche richtung? ist dies auch für einen 'standard-user' relevant?

Was mir spontan einfällt: ActiveX, VBScript, das sogenannte Sicherheitszonenmodell, die vielen Bugs, die feste Verdrahtung von Browser und Betriebssystem und nicht zuletzt die häufigeren Attacken wegen seiner grossen Verbreitung.

Erstellt vor 19 Jahren

Original von SimonKnight6600
Bei manchen Seiten gibt es Probleme, ich hatte sogar schon mal ne Firmenseite(!) auf der Stand:

Sie nutzen einen Browser mit der Gecko Engine. Diese Browser werden nicht unterstützt.

Dagegen hilft die "User Agent Switcher"-Erweiterung. 😉 (Vorausgesetzt die Anzeige ist danach noch zu gebrauchen...)

Erstellt vor 19 Jahren

Ich arbeite schon aus Prinzip und aus Sicherheitsgründen ausschliesslich mit dem Firefox. Darüber hinaus hat er einige nette Features, hinzu kommen viele praktische Extensions und eine deutlich bessere CSS-Unterstützung. Dass Firefox langsam sein soll, kann ich keineswegs bestätigen. Einzig bei komplexen Tabellenkonstrukten (sehr gross und/oder mehrfach verschachtelt) gibt's hier und da Probleme, aber sowas tut man sich auch nicht freiwillig an. Ich sehe also keinen Grund, warum ich mir den IE antun sollte. Selbst vor Firefox habe ich eine Alternative genutzt, damals Opera.

Erstellt vor 19 Jahren

Original von MSuthe
Dabei habe ich festgestellt, dass beim ersten Auslösen der Exception diese eine beachtliche Laufzeit benötigt. Bei einem erneuten Auslösen nicht mehr.

Das ist zwar ärgerlich aber normal und wohl auch nicht zu ändern. Das passiert aber nur im Debug-Modus in der IDE. Wenn du die EXE separat startest, ist das Problem verschwunden. So, who cares? Btw, bei mir dauert das Catching nur ca. 2-3 Sekunden.

Erstellt vor 19 Jahren

Im Framework gibt es leider keine Möglichkeit hierzu. Du kannst dir aber bei The Code Project ein fertiges Control für die Eingabe von IPv4-Adressen heraussuchen.

Erstellt vor 19 Jahren

Original von Quest
Hmm, das ganze geht noch weiter, wenn ich "192.169.020.010" Parse krieg ich "192.169.16.8" raus - irgendwie verstümmelt der jedes mal bei führenden Nullen...

Vorausgesetzt die Teile mit führenden Nullen werden als Oktalzahl gewertet, wäre das ja auch korrekt: 010 oct = 8 dez. Merkwürdig wird es eigentlich nur, wenn bei Voranstellen einer 0 eine ungültige Oktalzahl wie 019 notiert wird. Da würde ich einen Fehler erwarten.

In dem Link von bitsream gehts ja um genau dasselbe...

Den habe ich mir selber nochmal angeschaut. Dort geht es zwar um das Compact Framework, aber wenigstens habe ich überhaupt etwas dazu gefunden... 😉