Laden...

Forenbeiträge von VizOne Ingesamt 1.373 Beiträge

27.11.2006 - 11:45 Uhr

Hallo,

Lass das "Controls." mal weg. Eine Suche nach "FindControl" hätte dich hierhin gebracht. (An dieser Stelle empfehle ich das MSDN Suchplugin für FF2, IE7)

Viele Grüße,
Andre

27.11.2006 - 11:40 Uhr

Hallo,

Ich wüsste zwar nicht, dass es sowas bereits fertig in der .NET Bibliothek gibt, aber das lässt sich ja mit System.Math.Random leicht nachbauen.

Grüße,
Andre

24.11.2006 - 22:50 Uhr

Hi,

Du kannst (musst) sowohl den Namen der Projekt-Datei selbst ändern als auch den Ordner des Projekts. Folgendes Szenario: Dein Projekt heißt "Standart", die Projektdatei Standart.csproj im Ordner Standart. Da jeder weiß, dass es "Standard" heißt und nicht "Standart", willst du es also entsprechend umbenennen. Ich würde es so machen (mach dir vorher ein Backup):

  1. Im Visual Studio/C# Projektmappenexplorer Rechtsklick auf das umzubenennende Projekt ("Standart")->Umbenennen->Name korrigieren. Damit ist die Projekt_datei_ umbenannt.
  2. Dann entfernst du das Projekt aus der Projektmappe. Rechtsklick auf das Projekt "Standard" -> Entfernen, bestätigen.
  3. Im normalen Windows Explorer änderst du den Namen des Projekt_ordners_ Standart wie gewünscht nach Standard.
  4. Zurück im Studio gehst du über Datei->Hinzufügen->Bestehendes Projekt und suchst die umbenannte Projektdatei (Schritt 1, Standard.csproj) im umbenannten Ordner Standard(Schritt 3).

Eventuell musst du die Projektmappe selbst auch umbenennen, das geht ähnlich:

  1. In VC# Rechtsklick auf "Projektmappe 'Standart' (1 Projekt)", umbennen, ändern. Das ändert Standart.sln zu Standard.sln.
  2. Die Solution schließen: Datei->Projektmappe schließen
  3. Im Explorer den Projektmappenordner (falls du beim Speichern des Projekts einen eigenen Projektmappenordner anlegen hast lassen) umbennen.
  4. Zurück im VS über Datei->Projekt öffnen die umbenannte Standard.sln im Projektmappenordner öffnen.
  5. Wahrscheinlich ist in der Liste "Zuletzt geöffnete Projekte" auf der Startseite auch noch die alte Solution aufgelistet. Einfach draufklicken, VS versucht sie zu öffnen. Da die Datei unauffindbar ist, bietet dir VS an, den Eintrag zu löschen.

Fertig.

Ich muss mich seit kurzem bedingt durchs Studium mit c# beschäftigen.

Du Glücklicher 😉

Grüße,
Andre

24.11.2006 - 19:45 Uhr
24.11.2006 - 18:49 Uhr

Hallo,

Versuch mal dieses Monster:


string fileNameOnly = Path.GetFileName( filename );
long fileLength = new FileInfo( filename ).Length;
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AddHeader( "Content-Length", fileLength.ToString() );
Response.AddHeader( "Content-Disposition", "attachment; filename=" + fileNameOnly );
Response.TransmitFile( filename );


Grüße,
Andre

24.11.2006 - 18:35 Uhr

Laut http://www.dvbviewer.com/forum/index.php?showtopic=9117 sollen deine Digi Vox Mini Sticks mit DVBViewer laufen, weshalb sie ja eigentlich BDA Treiber haben müssten. Schau mal auf der CD nach. Oder laufen sie nur nicht mit dem Beispiel-Programm?

Viele Grüße,
Andre

24.11.2006 - 16:59 Uhr

Hi,

Am Ende des Threads kannst du mittels Invoke den gewünschten Code im UI-Thread ausführen lassen. Siehe den Link, den ich gepostet habe.

Grüße,
Andre

24.11.2006 - 16:33 Uhr

Hallo,

Schau mal in das Forum von digitalfernsehen.de ( http://forum.digitalfernsehen.de/forum/ ), da wissen die über sowas immer spitz Bescheid. Vielleicht gibt es da auch DVB-T Senderlisten für Österreich, fang am besten in diesem Thread an. Andererseits sollte doch bei deinem DVB-T Gerät auch eine Software zum Anschauen dabeigewesen sein, mit der du bei dir nach Sendern suchen kannst.

Vielleicht etwas Offtopic: wenn du ein gutes Programm suchst zum Anschauen und Aufnehmen, schau dir mal DVBViewer an. Kostet nicht viel (15€ IIRC) und ist (vor allem mit dem Videorecorder Plugin) einfach nur zu empfehlen. Ich habe meinen Code sogar bereits zugeschickt bekommen, als das Geld noch nicht mal überwiesen war. Achte aber darauf, dass deine Karte/dein Stick unterstützt wird.

Viele Grüße,
Andre

24.11.2006 - 15:56 Uhr

Ja, ist noch Serializable.

Attribute anschauen geht z.B. mit .NET Reflector

Grüße,
Andre

P.S.: Oder natürlich einfach in der Dokumentation

24.11.2006 - 13:53 Uhr

Hallo,

Ja, du kannst hineinschreiben, was und soviel du willst (solange die Gegenstelle es annimmt und versteht). Das Zerlegen in die verschiedenen Pakete etc. übernehmen die diversen Protokolle, etwa TCP, IP usw.

Grüße,
Andre

24.11.2006 - 13:51 Uhr

Hi,

Das ganze ist eine sehr einfache OpenSearch-XML-Datei, die Spezifikation findest du hier. Dazu ein wenig JavaScript Code, der die Installation veranlasst.

Viele Grüße,
Andre

24.11.2006 - 13:13 Uhr

Hallo,

Ohne nähere Angaben tippe ich auf ein Problem, dass du mit einem zusätzlichen Thread lösen könntest, siehe [FAQ] Controls von Thread aktualisieren lassen (Invoke-/TreeView-Beispiel)

Viele Grüße,
Andre

24.11.2006 - 13:09 Uhr

Hallo,

Ich hatte gerade etwas Langeweile, da habe ich ein Suchplugin für die MSDN Bibliothek gebastelt. Lauffähig sollte es mit allen OpenSearch-kompatiblen Browsers sein, also etwa Firefox 2, Internet Explorer 7.

Hier gehts zur Installationsseite

Viele Grüße,
Andre

23.11.2006 - 22:41 Uhr

Hallo,

Dein Stichwort dürfte wohl DiectShow + BDA sein (vorausgesetzt, deine Karte hat einen BDA Treiber). DirectShow.NET hat sogar ein funktionierendes(!) Beispiel dafür. Ich habe eine Terratec Cinergy 1400 DVB-T, damit geht es (wenn man die BDA Treiber installiert).

Viele Grüße,
Andre

23.11.2006 - 22:22 Uhr

Hallo,

Ich finde es sehr inkonsequent, dass man bei Interfaces keinen Zugriffsmodifizierer für Methoden und Properties angeben muss (eben weil es nur einen - public - möglichen gibt). Logischer erschiene mir, auf public zu bestehen und alle anderen Modifizierer zu verbieten. Denn in anderen Kontexten bedeutet das Weglassen des Modifizierers implizit "private". Tatsache ist aber nun mal, dass sämtliche definierbaren Member eines Interfaces immer automatisch public sind, wie tom-essen schon sagt.

Viele Grüße,
Andre

23.11.2006 - 21:53 Uhr

Seit einigen Tagen sind die 32 bit Releaseversionen von Windows Vista und Office 2007 für MSDN- und Technet-Abonnenten zum Download verfügbar. Seit gestern ist zudem auch die Deutsche Version von Vista erhältlich. Die zur Verfügung stehenden CD Keys erlauben die Installation Vistas in der Home Basic, Home Premium, Business oder Ultimate Version.

An Geschäftskunden werden Vista und Office 2007 Ende diesen Monats vertrieben werden. Privatanwender müssen sich noch bis Ende Januar nächsten Jahres gedulden.

Quelle:
heise.de
MSDN Home Page

23.11.2006 - 21:33 Uhr

Zu dem Zeitpunkt, wenn Page_Load aufgerufen wurde, wurde die aspx-Seite bereits geparst, d.h. es ist ziemlich sinnlos, zu diesem Zeitpunt noch aspx-Code zu generieren, noch sinnloser allerdings, ihn an den Client-Browser zu schicken 😉

Nein, in ASP.NET geht das schöner. Weg vom rumgescripte, hin zur objektorientierten Webentwicklung: füge an der Stelle im ASPX-Code, wo das Menü erscheinen soll ein asp:PlaceHolder ein. In deinem Code erstellst du dann per gewünschtem Link ein HyperLink-Objekt, setzt die gewünschten Eigenschaften und fügst es dem PlaceHolder als Child-Element hinzu (placeholder.Controls.Add()).

Hilfreich ist auch eine google Suche nach "asp.net add controls dynamically". Beispiele gibt es z.B. hier, hier oder hier

Viele Grüße,
Andre

Nachtrag:

Label name durch i erhöhen...?
Linkbutton dynamisch erzeugen
dynamische Erstellung von Buttons und Textfeldern

usw.

23.11.2006 - 10:48 Uhr

Hallo,

Ich kann mich den Kritikpunkten von Borg anschließen. Als Entwickler interessieren mich natürlich vor allem auch Interna und das Klassen-Design des Programmes. Und da hat Borg schon Recht - das ist nicht das Wahre. Mein erster Eindruck war: ah, eine UDP_Library.dll, anscheinend hat er das System in sinnvolle Komponenten unterteilt. Allerdings täuschte der erste Eindruck, da in besagter Bibliothek von allem ein bisschen war: ein bisschen Logik, ein bisschen User-Interface. Dafür war die Sende-Logik in UDP_Console.exe. Alles in allem eine wenig nachzuvollziehende Einteilung. Am besten, du setzt dich noch mal an den Zeichenblock (lies: ein UML-Tool o.ä.) und designste das ganze noch mal neu. Die Logik zum Senden und empfangen der Nachrichten sollte vollkommen isoliert vom User-Interface sein.

Deine Idee ist gar nicht so schlecht, da kann man was draus machen. Immer weiter machen 🙂

Viele Grüße,
Andre

23.11.2006 - 00:04 Uhr

Hallo,

Ich mache mir normalerweise für Projekte ein Item-Template. Wenn man dann eine neue Klasse erstellen will, kann man den Inhalt der Datei ganz genau bestimmen, beispielsweise einen bestimmten Copyright-Text etc.

Wie das geht:
Im Anhang dieses Posts findest du eine Zip-Datei mit drei Dateien:

  1. MyTemplate.vstemplate - Darin wird das template beschrieben. Name, Beschreibung etc. Sollte eigentlich selbsterklärend sein.
  2. ClassTemplate.cs - Das ist die Vorlage für die zu generierende Datei. Es gibt verschiedene Variablen die bei der Generierung durch passende Werte ersetzt werden, z.B. $itemname$ oder $rootnamespace$.
  3. __TemplateIcon.ico - Das Icon das in Visual Studio verwendet werden soll. Kann auch gern ein anderes mit anderem Namen sein, nur muss der Dateiname dann in der vstemplate-Datei richtig gesetzt sein (<Icon>)

So, die Dateien editierst du nach deinem Gusto und packst sie dann erneut in eine Zip-Datei (achtung: die Dateien müssen im Wurzelverzeichnis der Zip-Datei liegen, sonst kommt VS damit nicht zurecht). Die Zip-Datei schiebst du jetzt nach
Eigene Dateien\Visual Studio 2005\Templates\ItemTemplates\Visual C#. Du kannst auch noch tiefere Verzeichnisse anlegen, dann wird im Item-Dialog die Struktur entsprechend abgebildet. Jetzt sollte Visual C# das neue Item-Template erkennen und du hast schön einheitliche Dateien.

Viele Grüße,
Andre

22.11.2006 - 19:10 Uhr

Original von Bonvie
Hallo an alle,
hoffentlich könnt Ihr mir weiterhelfen. Ich möchte für meinen SQL string einen Dateinamen verwenden und habe dort leider auch manchmal das Hochkomma drinn.

Warum nicht einfach Parameter (je nach verwendetem DBMS z.B. SqlParameter) verwenden? Die kümmern sich da automatisch drum.

Viele Grüße,
Andre

22.11.2006 - 18:31 Uhr

Hallo,

Mit Unit-Testing hättest du den Fehler wahrscheinlich schon früher gefunden. Leider ist die "Big-Bang"-Integrationstechnik, wie du sie betrieben hast, heute noch oft vorzufinden. Die Folgen erlebst du nun am eigenen Leibe.

Was du machen kannst: Debuggen, Callstack überprüfen, versuchen, das Problem einzukreisen (Code auskommentieren) usw.

Viele Grüße,
Andre

22.11.2006 - 10:30 Uhr

Hallo,

Hier noch ein paar Alternativen:

  1. Marshal.StructureToPtr + Marshal.Copy
    Ist zwar ein bisschen blöd, dass man da vom verwalteten Heap zum nativen und wieder zurück kopiert, aber die generierten Daten dürften kompakter sein als via Serialisierung. Andererseits kann man das Marshalling-Verhalten ganz gut steuern, sodass man auch mit nicht-.NET Gegenstellen kommunizieren kann. Wenn deine Struktur sehr einfach ist und die Marshalling-Attribute entsprechend gesetzt sind, hat diese Methode zudem den Vorteil, dass kein neuer Speicher pro "Verpackungsvorgang" angelegt werden muss: du musst lediglich einmal einen nicht-verwalteten Block anlegen (Marshal.AllocHGlobal) und ein Ziel-Array für Copy, beide Bereiche kannst du dann wiederverwenden. Ein weiterer Nachteil ist, dass diese Methode etwas unsicherer ist als z.B. Serialisierung, da die Gegenstelle keinen "Beweis" hat, was du ihr schickst. Zudem hantierst du mit nativem Speicher, den du selbst wieder freigeben musst.

  2. Bei extrem simplen Strukturen, die nur "blittable"-Member haben, kannst du die Struktur auch einfach in einem unsafe-Block mit Marshal.Copy kopieren:


using System;
using System.Runtime.InteropServices;

struct SimpleStruct 
{
	public int X;
	public int Y;
	public double Foo;
}

class MyClass
{
	static void Main()
	{
		SimpleStruct s;
		s.X = 12;
		s.Y = 13;
		s.Foo = 123.456;
		
		byte[] buffer;
		
		unsafe {
			buffer = new byte[sizeof(SimpleStruct)];

			// structure->byte[]
			Marshal.Copy(new IntPtr(&s), buffer, 0, sizeof(SimpleStruct));
			
			// byte[]->structure
			SimpleStruct s2 = new SimpleStruct();
			Marshal.Copy(buffer, 0, new IntPtr(&s2), sizeof(SimpleStruct));
			Console.WriteLine(s2.X);
			Console.WriteLine(s2.Y);
			Console.WriteLine(s2.Foo);			
		}
	}	
}

Viel Kontrolle - aber auch mehr Aufwand - hast du mit dem von herbivore angesprochenen BitConverter. Allerdings erzeugen die GetBytes Methoden jedes Mal ein neues Array, was den GC mehr beschäftigt. Das Problem mit der Unsicherheit ist vergleichbar mit der Marshal-Methode.

Serialisierung dürfte die einfachste und sicherste Methode sein, hat aber einen gewissen overhead. Für Intranetanwendungen ist das sicherlich kein Problem. Bei Internetanwendungen kann das schon eher wichtig werden (falls viele Daten verschickt werden müssen). Dann wären oben genannte Alternativen eine Möglichkeit, Bandbreite zu sparen.

Grüße,
Andre

22.11.2006 - 08:38 Uhr

Hallo,

Ich habe mich zwar nicht im Detail mit deiner Implementierung beschäftigt, aber ich möchte darauf hinweisen, dass es sehr gute bestehende Techniken gibt, effizient nicht sichtbare Teile beim zeichnen auszuschließen.

Dieses Konzept wird im Snippet "Gezieltes OwnerDrawing" - schnelles Zeichnen bewegter Objekte von ErfinderDesRades umgesetzt.

Als weiteres Beispiel so etwas umzusetzen sein hier Quadtrees genannt.

Viele Grüße,
Andre

21.11.2006 - 17:38 Uhr

Original von hdsf

  1. Bewirkt der Kompilerparameter /out: nur das bloße Unbennen des Dateinamens wie F2 im Windows-Explorer oder steckt mehr dahinter?

Ja, auch in den Metadaten wird der Assemblyname verändert. Assemblyname und Dateiname müssen sich nicht entsprechen. Benennst du ein Assembly via "F2" um, ändert sich der Assemblyname nicht.

  1. Stimmt die folgende Behauptung, dass C# nicht zwischen Funktionen mit oder ohne Rückgabemethoden unterscheide (Frischalowski)? Wenn dies zuträfe, gäbe es doch kein void?!

Rückgabemethoden? Auf jeden Fall gibt es void-Methoden in C#

  1. Ich deklariere die Main()-Funktion mit "static void Main()". Ist sie nun per default public oder private ?

Ohne expliziten Access Modifier ist die Methode private.

  1. Windows-Forms: Gibt es eine Quelle mit Angabe von Standardmaßen und -konventionen wie z.B. Größe und Schrift für Ok-Buttons, Durchmesser der Titelleiste, Größe von einzeiligen Dialogboxen, Abstand zwischen zwei Buttons ecetera? Oder sollte man sich das per Screenshot selbst arrangieren?

Wenn du mit dem Designer von Visual C#/Studio arbeitest, bietet er dir Standardmaße an, die ich allerdings nicht auswendig kenne.

  1. Können per Ngen.exe kompilierte (primitive Konsolen-)Programme ( = im Maschinencode) auch ohne .NET lauffähig sein? Ja / Nein reicht.

Nein.

  1. Probleme mit Steuerzeichen in der Konsole:
  • \f:statt Seitenvorschub [was ist das?] weibliches Zeichen
  • \v: statt vertikaler Tabulator männliches Zeichen
  • \e statt Escapezeichen [was ist das?], Meldung nicht erkannter Escapesequenz
    ms-help://MS.VSExpressCC.v80/MS.NETFramework.v20.de/dv_fxfund/html/f49cc9cc-db7d-4058-8b8a-422bc08b29b0.htm

Was willst du damit sagen?

  1. Rechnet sich mit bestimmten Datentypen schneller als mit andere (z.B. UInt32 schneller als UInt16 oder Byte?)

Generell dürften die maschinenspezifische Wortbreite (z.B. 32bit auf 32bit Maschinen) am vorteilhaftesten sein. In der Praxis kommen viele Faktoren ins Spiel: Runtime, Alignment, Prozessor etc. Am Ende hilft nur: Messen.

  1. Sind Multiplikationen generell schneller als Divisionen (z.B. statt 1 / 4 sollte mam lieber 1 * 0.25 rechnen usw.)?

Hängt vom Prozessor ab.

  1. Gibt es ein char- / string- Datentyp mit 8 Bits (256 Zeichen)?

In .NET sind Strings Unicode, chars entsprechend 16 bit.

  1. Wo liegt der Sinn von Datentyp char, wenn es sich mit strings genauso gut realisieren lässt?

Ein char ist ein einzelnes Zeichen. Ein String ist eine Zeichenkette.

  1. Deklaration: Ist damit die Definition, Zuweisung oder Initialsierung gemeint? Deklaration
  1. Read() \ ReadLine(): Beides bewirkt (entgegen des Namens), dass die Einfügemarke eine Zeile tiefer rutscht, was ich aber nicht immer will! MSDN-Hilfe ist mir zu abgehoben bis jetzt.

Besser, du freundest dich mit ihr an.

  1. Es sind scheinbar keine mehrfache Formatierung möglich àla:
    Console.Write("{0:N:3,F:5}", 100); // Fehlermeldung:((

Du kannst aber "{0}" öfters im Formatierungsstring verwenden.

  1. Normales Logische, inklusive Oder entspricht | |. Wie sieht das exklusive Oder aus ?

^

  1. Warum geht das nicht:

byte variable;
if(0 < variable < 255) //Fehlermeldung

Weil "0 < variable" einen boolschen Ausdruck ergibt. Der Operator "bool < int" ist aber nicht definiert.

  1. switch-Konstrukt: Kann man als Cases statt Konstanten auch Bereiche angegeben? Sind auch mehrere Konstanten für ein Case möglich (z.B. Strings)?

Strings gehen. Mehrere Konstanten nur so:


switch(x) {
  case 0:
  case 1:
  case 2:
     // mach was
     break;
}

  1. Wie ignoriert man die Groß- Kleinschreibung von Strings (d.h. "Ja" == "jA" = "JA" == "ja")

z.B. über diese Überladung der Methode Equals:


public bool Equals (
	string value,
	StringComparison comparisonType
)

Viele Grüße,
Andre

20.11.2006 - 12:14 Uhr

Hallo,

Das würde ich unterschreiben. Ein "gutes" Beispiel eines solchen Missbrauchs ist mMn der !-operator der Streams in der C++ STL.

Grüße,
Andre

20.11.2006 - 11:17 Uhr

Hallo,

Du kannst einen Operator definieren für den impliziten Cast nach bool:


class MyClass {
	//...
	public static implicit operator bool(MyClass mc) {
		return /* was immer benötigt wird */
	}
}

Viele Grüße,
Andre

17.11.2006 - 17:11 Uhr

Verschoben nach Buchempfehlungen

Schönes Wochenende,
Andre

17.11.2006 - 09:52 Uhr

Hallo,

Schau mal nach string.Split

Viele Grüße,
Andre

17.11.2006 - 09:50 Uhr

Hallo,

Der getter gibt die Referenz auf das List<Byte>-Objekt zurück. Mit diesem Objekt darfst du dann machen, was du willst, zum Beispiel es über seinen Indexer verändern. Dass du keinen setter anbietest schützt dich nur davor, dass jemand das gesamte Objekt austauscht. Es macht das List<Byte>-Objekte nicht "konstant" (im Sinne vom C++-const). Wenn du die Liste selbst vor Änderungen schützen willst, schau dir mal List.AsReadOnly an.

Viele Grüße,
Andre

17.11.2006 - 08:46 Uhr

Hallo,

Wie du in der Dokumentation von SmtpClient siehst, kannst du mit Hilfe des mailSettings-Eintrags in der Konfigurationsdatei (hier: web.config) die benötigten Daten ganz leicht außerhalb des Quellcodes konfigurieren.

[edit]Ah, das ist glaub ich auch nicht, was du willst 🙂 Aber automatisch den SMTP Server finden bringt dir eh nicht viel, da du in der Regel noch Benutzername und Kennwort eingeben musst. [/edit]

Viele Grüße,
Andre

16.11.2006 - 11:24 Uhr

Original von herbivore
die Datenbank-Schicht sollte ohnehin nicht auf die Business-Schicht zugreifen.

Original von Naffel9
meine Business-Schicht greift eigentlich auch gar nicht auf die Datenbank-Schicht zu.

Die Business-Schicht darf (und wird) auf die Datenbank(zugriffs)schicht zugreifen. Andersherum ist ein Problem, wie herbivore schon sagt.

Was sind denn die "verschiedenen Objekte", deren Eigenschaften du setzen willst und was ist ihre Funktion?

Viele Grüße,
Andre

16.11.2006 - 09:37 Uhr

Hallo,

Solltest du dennoch tatsächlich ein Cross Page Postback benötigen, kannst du mit der PreviousPage-Eigenschaften auf die vorige Seite zugreifen. Achtung: das zurückgegebene Objekt ist vom Typ Page, du musst also entweder downcasten, FindControl verwenden oder die <%@ PreviousPageType %>- Direktive verwenden (dann ist PreviousPage stark typisiert)

Siehe http://msdn2.microsoft.com/en-us/library/ms178139.aspx

Viele Grüße,
Andre

16.11.2006 - 09:33 Uhr

Hallo,

Das VS beim publishen von Sites gerne blockiert, habe ich auch schon feststellen müssen. Ich finde das auch irgendwie "schlampig" gelöst. Da sollte zumindest ein Fenster mit Fortschrittsbalken usw. erscheinen. Aktuell wird ja nicht mal das Fenster neugezeichnet. (Muss MS sich vielleicht mal Thread-Bezogene Themen auf myCSharp.de anschauen? 😉 )

Als kleinen Workaround könntest du die Seite irgendwo lokal auf deiner Festplatte publishen und dann per Hand via FTP zur gewünschten Seite schieben. Das ist mehr Arbeit und weniger elegant, du kannst aber während des Uploads zumindest mit VS weiterarbeiten.

Viele Grüße,
Andre

15.11.2006 - 23:30 Uhr

Hallo,

Wenn du zu einer anderen Seite posten willst, verwende die PostBackUrl Eigenschaft des Buttons. Sobald du runat="server" beim form-Element angibst, wird das action-Attribut nämlich ignoriert.

Viele Grüße,
Andre

13.11.2006 - 10:12 Uhr

Original von Waschbecken
Kaum kommen die konstruktiven Vorschläge, wird es hier ganz still ... ich sag nur: typische Foren-Autokratie 👍

Naja, am Wochenende "muss" ich mich auch ein bisschen ums Privatleben kümmern, da kann ich nicht immer zeitnah Rede und Antwort stehen.

Um es noch einmal deutlich zu machen. Wir sehen durchaus die mögliche Abgrenzung zwischen Web- und Netzwerktechnologien im Allgemeinen. Und in einer idealen Welt wäre es sicherlich auch schön und gut, hierfür zwei Foren zu haben. Das Problem ist, dass wir nicht in einer idealen Welt leben. Ein Nutzer, der einen neuen Beitrag erstellen möchte, muss zwischen einem der beiden Foren wählen. Womöglich ist das Thema aber grenzwertig zwischen beiden anzusiedeln (Web-Probleme auf technischer Ebene sind nicht selten im Netzwerkbereich anzusiedeln). Welches Forum muss er nehmen?

"Egal, hat ja mit beiden zu tun" als Option hat das Problem, dass jemand, der gezielt mit der erweiterten Suche in einem Forum sucht, möglicherweise diesen neuen Thread nicht da vorfindet, wo er ihn vermutet. "Beide" dürfte logischerweise wegfallen. "Egal, aber ein Mod verschiebt es nach bestimmten Heuristiken in eines der beiden Foren" beinhaltet das Problem, dass mehr Moderationsaktivität nötig ist. Wir Moderatoren würden unsere Zeit aber wenn möglich gern anderweitig verwenden (wir moderieren nicht um des Moderierens Willen sondern auf Grund der Notwendigkeit), z.B. bei der Entwicklung von Version 3, dem inhaltlichen Beantworten von Fragen etc.
Dazu kommt der anfängliche Aufwand, die bestehenden 2800 Threads auf die beiden Foren aufzuteilen (sonst macht das ganze keinen Sinn!).

Ich möchte euch also anders fragen: seht ihr eine (begründete) Notwendigkeit, das Web- und Netzwerkforum aufzuteilen, welche die genannten Probleme wieder wettmacht?

Viele Grüße,
Andre

P.S.: Übrigens finde ich den Begriff Autokratie im Bezug auf die Boardleitung unangebracht. Wir sind noch lange keine Autokraten, nur weil wir nicht jeden Vorschlag seitens der Community in die Tat umsetzen.

10.11.2006 - 20:21 Uhr

Hallo,

Vielen Dank für deine freundlichen Art. Ist ja richtig Balsam für geschundene Moderatorenseelen 😁

Zu deinem Thema: Die Variablen, die du in MyVoid deklarierst, sind lokale Variablen. Sie verlieren ihre Gültigkeit, sobald der aktuelle Anweisungsblock (hier: die Methode) verlassen wird. Zudem sind sie von außerhalb der Methode nie erreichbar. Deshalb erhälst du die Fehlermeldung, dass Fo1 nicht gefunden werden kannst. Du kannst Daten auf verschiedene Arten mit einem Objekt und seinen Methoden austauschen z.B. über Methodenparameter oder über Membervariablen in der Klasse.

Der "static"-Modifierer macht eine Methode statisch (klare Sache). Eine nicht-statische Methode wird immer für eine bestimmte Instanz der entsprechenden Klasse ausgeführt. Diese Instanz ist dann über das Schlüsselwort "this" innerhalb der Methode ansprechbar. Um sie aufzurufen, benötigt man also eine Instanz einer Klasse (damit das Programm zur Laufzeit weiß, auf welches Objekt sich das "this" bezieht"); etwa wie bei deinem objektVonClass1.MyVoid();. Eine statische Methode ist nicht an eine Instanz, sondern an den Typen (die Klasse) gebunden. Man braucht kein Objekt des Typs, um sie aufzurufen. Dafür kann sie aber selbst nur wiederum auf statische Member der Klasse zugreifen.

Das ganze wird dir in einem entsprechenden einführenden Buch noch mal ausführlich beschrieben (Vorschläge sind ja hier bereits genannt worden). Schau dir einfach eines der Bücher genauer an. So lernt man die Grundlagen auf die sanfte Tour. Ich weiß, am Anfang will man hauptsächlich erst mal "machen" (ist ja auch ok: Versuch macht klug!), aber zu Beginn ein solides Rüstzeug zu erlangen ist wichtig für deinen Werdegang als C#-Programmierer.

Viele Grüße,
Andre

10.11.2006 - 18:39 Uhr

Hallo,

Ich hab mich zwar nicht ausführlich damit beschäftigt, aber wenn alles drinsteckt, wofür es Menüpunkte gibt, kann das Ding doch richtig gut was. Und das in einer Woche. Respekt!

Vielleicht solltest du beim Zoomfaktor auch kleinere Faktoren zulassen, um mehr Übersicht zu bekommen. Im Moment kann man damit nur vergrößern.

Viele Grüße,
Andre

10.11.2006 - 12:22 Uhr

Hallo,

Zudem kosten Exceptions nur dann (merkbar) Resourcen, wenn sie auch geworfen werden. Nun heißen Exceptions aber nun mal "Ausnahmen", weil sie "Ausnahmefälle" darstellen. Sollte ein Programm "tausende Exceptions pro Sekunde" werfen, hat man wohl was falsch gemacht - die Ausnahme wurde zur Regel. Über die Verwendung von Exceptions wurde hier allerdings schon viel diskutiert.

Zum Thema 0-check und Taschenrechner. Mag ja sein, dass man bei einem einfachen Taschenrechner noch recht leicht einsehen kann, welche Eingaben gültig sind und welche nicht. Was aber, wenn man komplexere Eingaben behandeln muss? Dann verbringe ich womöglich viel wertvolle Zeit damit, meinem Programm beizubringen, das Problem a priori zu erkennen, statt mich auf das eigentliche Problem zu konzentrieren. Und am Ende muss DOCH noch ein try-catch-Block verwendet werden, weil man ja eventuell doch noch etwas vergessen haben könnte... Wie immer gilt: alles zu seiner Zeit und alles im richtigen Maß.

Viele Grüße,
Andre

10.11.2006 - 12:13 Uhr

Hallo,

Es gibt allerdings (kostenpflichtige) SMTP-Komponenten Dritter, die die von dir gewünschte Funktionalität anbieten.

Siehe auch SmtpClient Events

Viele Grüße,
Andre

10.11.2006 - 07:13 Uhr

Ich hab da mal was zusammengezimmert:


SELECT CocktailName, IngredientName, Quantity
FROM Cocktail c  LEFT JOIN
( 
	(
		-- per Cocktail die Zutat(en) mit der größten Menge bestimmen
		SELECT x.CocktailID, x.IngredientID, x.Quantity
		FROM Insertion_Juice x JOIN
		(
			-- maximale Menge herausfinden
			SELECT CocktailID, max(Quantity) as MaxQuant
			FROM Insertion_Juice
			GROUP BY CocktailID
		) y
		ON x.Quantity = y.MaxQuant AND x.CocktailID = y.CocktailID
	) d	JOIN Ingredient_Juice e ON d.IngredientID = e.ID
) 
ON c.ID = CocktailID

Das Problem ist, dass es mehrere Zutaten geben kann, die mit der (für diesen Cocktail) höchsten Menge verwendet werden können.

Viele Grüße,
Andre

10.11.2006 - 06:32 Uhr

Hallo,

OK, mein Fehler. Das mit dem ALL scheint nur beim SQL Server zu funktionieren (dort führt es aber zum gewünschten Ergebnis!)

Grüße,
Andre

09.11.2006 - 15:37 Uhr

Hallo,

Die logischste Antwort: www.asp.net 😉

Viele Grüße,
Andre

09.11.2006 - 15:33 Uhr

Hallo,

Vielleicht hilft dir das zu verstehen:


static void Foo(Type t) {
	Console.WriteLine("Typ: " + t);
	if(t.IsGenericType){
		Console.WriteLine(" Generische Typ-Definition: " + t.GetGenericTypeDefinition());
		foreach(Type arg in t.GetGenericArguments()) {
			if(arg.IsGenericParameter) {
				Console.WriteLine("  Typ-Parameter: " + arg);
			} else {
				Console.WriteLine("  Typ-Argument: " + arg );
			}
		}
	}
}

Viele Grüße,
Andre

09.11.2006 - 15:23 Uhr

Hallo,

Das besagte Thema hat doch recht wenig mit "wünschen" zu tun. Die Foreneinteilung ist rein zweckmäßig und dient der logischen Einteilung der Threads unter drei Gesichtspunkten:

  1. thematische Breite mit vergleichbarem Umfang
  2. durchschnittliche Anzahl Threads pro Tag/Woche
  3. Schärfe der Abgrenzung

Zugegeben, bei Punkt 1 ist das Web- und Netzwerkforum etwas problematisch, weil das Themenspektrum tatsächlich sehr breit ist. Aber Punkt 2 und 3 sind dafür umso mehr gegeben: rund 20-30 Beiträge pro Tag im besagten Forum deuten keine Notwendigkeit zur Aufteilung an. Und eine scharfe Abgrenzung ist auch gegeben. Je mehr man Foren unterverteilt, desto schneller kommt es zu inhaltlichen Überschneidungen. Die Folge: die Moderation wird schwieriger und der Leser muss mehrere Foren absuchen, um ggf. das gewünschte Thema zu finden.

Solange kein Alternativvorschlag aufkommt, der eine befriedigende Lösung aller drei Punkte beinhaltet, sehen wir keinen Handlungsbedarf. Ihr seht, das Thema behandeln wir keineswegs mit Willkür. Wir haben selbst lange darüber nachgedacht und die oben genannten Punkte bieten eine objektive Bewertung der aktuellen Situation. Wir sind für Vorschläge offen. Aber wir können sie nur dann umsetzen, wenn sie objektiv sinnvoll sind. Eine Abstimmung ist hier also unangebracht.

Viele Grüße,
Andre

09.11.2006 - 11:30 Uhr

Hallo,


SELECT Vorname, Nachname, COUNT(*) AS AnzahlSiege
FROM t_Positionierung
WHERE (Position = 1)
GROUP BY ALL Vorname, Nachname

Wichtig ist das "ALL", weil es auch leere Gruppen einschließt.

Viele Grüße,
Andre

09.11.2006 - 10:54 Uhr

Hallo,

Kontoumsätze woher? Wir wissen ja nicht, woher die Daten stammen und welche Exportmöglichkeiten die Quelle bietet.

Viele Grüße,
Andre

09.11.2006 - 10:53 Uhr

Hallo,

Meinst du vielleicht Server.MapPath("~/App_Data")?

Viele Grüße,
Andre

09.11.2006 - 10:21 Uhr

Hallo auch von mir,

Wie immer freuen wir uns über euer Feedback. Wenn ihr also Verbesserungsvorschläge habt oder uns sonst etwas mitteilen möchtet (natürlich nicht nur zu diesen Themen), immer raus mit der Sprache!

Viele Grüße,
Andre

08.11.2006 - 18:52 Uhr

Hallo Community,

Es sind noch immer einige Exemplare unserer wunderbaren offiziellen myCSharp.de T-Shirts erhältlich. Dieses Wunderwerk der Haute Couture vermittelt einen flotten Lebensstil ohne gleich "karstadtesque" zu wirken. Wer sich also auch in Zukunft stilsicher kleiden möchte, ohne seine Existenz als Geek aufzugeben, der möge hier beherzt zugreifen!

[![](http://www.mycsharp.de/wbb2/images/esistda/tshirt_2.png)](http://www.getdigital.de/index/0xfd/lng/1)
Auch erhältlich als:*Girlie-Shirt - dein Freund liebt dich ab jetzt doppelt so viel! *Sweatshirt - auch wenn ein Geek seinen Keller immer schön temperiert hat *Tasche - du und dein Laptop im Partnerlook!
[**Zum Shop**](http://www.getdigital.de/index/0xfd/lng/1)
Viele Grüße, Andre P.S.: Das bei getdigital.de angegebe Gewinnspiel ist inzwischen abgelaufen.
08.11.2006 - 09:43 Uhr

Hallo,

Beim Cast eines Doubles zu Object wird der Wert geboxt. Das heißt, dass intern ein Objekt erstellt wird, in das der Wert des Doubles kopiert wird. Beim zurückcasten nach double (unboxing) wird der Wert aus diesem Objekt herauskopiert. Da double nach wie vor ein Wertetyp ist, sind all diese Kopien vollständig unabhängig voneinander. Eine Änderung des Wertes betrifft also niemals die anderen Kopien.

Ein Möglicher Ansatz wäre, das Boxing sozusagen selbst in die Hand zu nehmen. Dazu schreibst du dir eine Klasse, welche ein double als member speichert. In die Listen packst du jetzt einfach Objekte dieser Klasse. Da die Klasse in Referenztyp ist, wird eine Änderung des internen Wertes in allen Listen, die das Objekt enthalten sichtbar sein. Das ganze kann man noch mit generics und cast-operatoren verschönern.

Viele Grüße,
Andre