Hallo Stefan8887878,
herzlich Willkommen auf myCSharp.
Gleich vorweg, dein Code ist leider Kraut und Rüben:
*Variablenbenennung
*Sprache (Englisch & Deutsch)
*(fehlende) Formatierung
Warum übergibst du deinen Parameter überhaupt per ref
? Lass das ref
-Keyword doch einfach weg. Per Referenz übergeben wird deine dataset
-Instanz trotzdem.
m0rius
Hallo unconnected,
hier noch ein konkreter Lösungsvorschlag, vermutlich @herbivore: Nicht serverseitig trimmen, sondern folgende CSS-Regeln verwenden:
{
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
m0rius
Hallo moelski,
natürlich. Sorry, muss deine Frage vorhin nur überflogen haben. Zum Ersetzen durch lesbare Strings ist meine Methode natürlich ungeeignet.
Trotzdem würde ich 32 Aufrufe von Replace vermeiden, schon aus Gründen der Übersichtlichkeit und Wartbarkeit.
var controlCharReplacements = new Dictionary<string, string>
{
{ "\u0000", "Hier deine Ersetzungen" },
{ "...", "..." }
};
string input = "";
foreach (var replacement in controlCharReplacements)
{
input = input.Replace(replacement.Key, replacement.Value);
}
Analog kannst du die Replace
-Operation natürlich auch auf einem StringBuilder
ausführen.
m0rius
Hallo moelski,
on top of my head:
string source = "...";
string cleaned = Regex.Replace(source, @"[\u0000-\u001F]", string.Empty);
m0rius
Hallo steschu,
für die Nachwelt sei erwähnt, dass sich durch die Verwendung von decimal
die Anzahl der relevanten Nachkommastellen und somit die Präzision erhöht.
m0rius
Hallo Palladin007,
wie gesagt: Das Entity Framework (oder LINQ to SQL) ist dein Freund, was die Generierung von SQL-Statements angeht. Dann musst du dich auch nicht darum kümmern, dass diese korrekt gegen SQL-Injection geschützt werden.
m0rius
Hallo Palladin007,
die Syntax selbst kannst du nicht verändern, also keine eigene domain specific language erschaffen.
Mit LINQ to SQL und dem Entity Framework wird allerdings genau das, was du erreichen möchtest, bereits umgesetzt: das Generieren von SQL-Statements aus LINQ, u.a. aus der query comprehension syntax (so heißt sie offiziell).
m0rius
Hallo Diräkt,
deine localhost
-URLs sind zwar nett gemeint, nützen uns hier aber nicht viel 😉.
Ich würde dir empfehlen, niemals direkt deine Domänenobjekte zurückzugeben, sondern immer ein Data Transfer Object (kurz DTO). Dieses enthält nur die Eigenschaften, die du zurückgeben möchtest, funktioniert also wie eine Whitelist. Dieses kannst du beispielsweise per Extension Method aus deiner Entity erzeugen und dann als Rückgabewerte der Action zurückgeben.
m0rius
Hallo zusammen,
der Vollständigkeit halber:
int sCount = "Heizölrückstoßabdämpfung".Count(c => c == 's');
Nicht vergessen, System.Linq
importieren.
m0rius
Hallo CoderboyPB,
du kannst Visual Studio auf Englisch installieren.
m0rius
Hallo herbivore,
danks fürs Nachhaken, das ist wirklich ein tolles Angebot.
m0rius
Hallo herbivore,
und hier die alljährliche Frage: Gilt der Code noch in 2013?
m0rius
Hallo vitafit,
wichtig: ArrayList
gehört in die Mottenkiste und sollte wie alle untypisierten Collections aus System.Collections
nicht mehr benutzt werden. Verwende stattdessen List<T>
und alle anderen typisierten Collections aus System.Collections.Generic
.
Zu deiner Frage: Du fügst deiner ArrayList
nicht viermal einen String hinzu, sondern viermal die gleiche Liste entrys
. Dadurch, dass es ein und dieselbe Liste ist, die du der ArrayList
mehrfach hinzufügst, verweisen natürlich alle Elemente auf genau diese eine Liste — von der wird keine Kopie erzeugt, sondern lediglich den ArrayList
-Elementen mehrfach die Referenz auf die gleichen Liste zugewiesen.
m0rius
Hallo zusammen,
das ist leider wirklich ziemlich peinlich und hätte durch automatisiertes (und erst recht durch manuelles) Testen abgefangen werden müssen. Da hat wohl jemand die nullbasierte Zählung verpfuschst — und auch die gibt es ja nicht erst seit kurzem 😉.
m0rius
Hallo RoboFun,
herzlich Willkommen auf myCSharp.de!
Ich sehe darin überhaupt kein Problem, im Gegenteil: Je mehr Programmiersprachen du kennst, desto mehr hast du einen Blick über den Tellerrand und verbesserst damit deine (sprachunabhängigen) Programmierfähigkeiten. Abgesehen davon sind sich Java und C# sehr ähnlich, von daher sollte das auch vom Lernaufwand her überhaupt kein Problem darstellen.
m0rius
Hallo Howard,
du musst lediglich die URL deiner Action im src
-Attribut deines <img>
-Tags angeben. Das kann wie folgt aussehen:
<img src="@Url.Action("GetPhotoDetails", "ControllerName", new { ID = 1 })" />
Der erste Parameter der UrlHelper.Action
-Methode ist der Name der Action, der zweite der des Controllers. Als dritten Parameter kannst du ein Objekt übergeben, das weitere Route-Daten enthält.
m0rius
Hallo Coooder,
das Stichwort ist Lokalisierung, aber bevor wir dir weiterhelfen können, solltest du erst einmal verraten, um was für eine Anwendung es sich handelt. ASP.NET, WinForms, WPF, Windows 8 App, ... ?
m0rius
Hallo xrc7581,
das macht es ja – fast – auch, nur war dort eben ein tr
zu viel enthalten.
m0rius
P.S: Bitte denk das nächste Mal daran, deinen Code einzurücken. Das erleichtert die Lesbarkeit enorm und sorgt vermutlich auch dafür, dass du mehr Antworten bekommst.
Hallo xrc7581,
dein jQuery-Selektor ist falsch — das zweite tr
gehört dort nicht hin. Korrekt wäre demnach $("#standorte tr:not(:first)")
. Auch möglich wäre $("#standorte").find("tr:gt(0)")
, also die Selektion aller Zeilen mit einem Index größer als 0.
Im übrigen eignet sich JsFiddle wunderbar, um dein Problem zum Debuggen zur Verfügung zu stellen. Anhand deines Beispiels sähe das so aus.
m0rius
Hallo Sebi,
hast du eine gute Empfehlung für einen sehr leisen Lüfter?
m0rius
Hallo winSharp93,
danke für den Hinweis, was die Grafikkarte angeht — das werde ich wahrscheinlich so machen.
Zusätzlich zur SSD habe ich natürlich auch eine ausreichend große HDD ausgewählt; frag mich nicht, weshalb die dort nicht gelistet wird.
Was denkst du denn über das Mainboard? Das ist die Komponente gewesen, bei der ich echt ein wenig überfragt war ...
m0rius
Hallo winSharp93,
danke für deine Antwort!
Ich habe vorhin (vor deiner Antwort allerdings) mal einen Rechner bei Alternate zusammengestellt. Leider muss ich wirklich gestehen, dass mein Wissen, was Hardware angeht, doch definitiv seine Grenzen hat 😉.
Hallo zusammen,
habe ich da eurer Meinung nach etwas total dummes verbaut (s. Anhang)? Welche Komponenten würdet ihr ggf. durch welche ersetzen?
m0rius
Hallo,
vielen Dank für eure Einschätzung! Ich werde mir mal bei Alternate einen Rechner zusammenstellen und schauen, auf welchen Preis ich da komme.
@Abt: Gibt es einen Grund, weshalb du eher auf NVidia als auf AMD setzen würdest?
m0rius
Hallo zusammen,
da mein momentaner Desktop-Rechner mittlerweile doch sehr betagt ist und schon das Entwickeln darauf einfach keinen Spaß mehr macht, geschweige denn Gaming, steht für mich demnächst der Kauf eines neuen Rechners an. Dafür möchte ich euch nach Empfehlungen fragen, was das beste Preis-Leistungsverhältnis angeht.
Mein Budget liegt bei ca. +/- 1100€. Eine SSD muss er haben sowie dazu eine herkömmliche Festplatte. 16GB Arbeitsspeicher sollten verbaut sein. Ein guter Prozessor (Ivy Bridge) sowie eine vernünftige Grafikkarte sollten auch nicht fehlen. (Crysis 2 auf voller Auflösung muss die Grafikkarte ruckelfrei nicht hergeben, aber sie sollte schon für nicht professionelles Gaming geeignet sein.) Schlussendlich muss er ein 5.1-Soundsystem unterstützen.
Momentan habe ich mir folgenden Rechner ausgeguckt, der mir von der gebotenen Leistung her sehr gut gefällt: Rechner-Konfiguration auf amazon.de. Meine Frage ist nun: Ist dieser Rechner nicht ein wenig überteuert für das, was er bietet? Oder ist der Preis für diese Konfiguration angemessen?
Danke schon mal im Voraus!
m0rius
Hallo Bunnychecker,
das ist jetzt ein wenig generell. Mit so wenigen Informationen kann ich dir natürlich nicht sagen, wie du es am besten anstelltst, dass "auch alle Parameter für diesen Methodenaufruf vorhanden sind". Ob du diese in Dateien zwischenspeicherst oder sonst wo ablegst, musst du selbst anhand deines konkreten Szenarios entscheiden.
m0rius
Hallo Bunnychecker,
du kannst dein Problem mit Hilfe verschiedener Ansätze lösen.*Einerseits kannst du die gewünschten Methoden aufrufen, nachdem eine – vom jetzigen Zeitpunkt ausgehende – Zeitspanne abgelaufen ist. Stichwort: Timer.
*Andererseits kannst du periodisch, also z.B. alle 5 Minuten, überprüfen lassen, ob du dich in deinem angestrebten Zeitfenster befindest. Weiterhin musst du überprüfen, ob die Methoden nicht bereits ausgeführt worden sind; das regelst du am besten über ein "Ausgeführt"-Flag. Sind beide Bedingungen erfüllt, führst du die Methoden aus. Wurden diese erfolgreich ausgeführt, setzt du das "Ausgeführt"-Flag auf true
.
m0rius
Hallo ZeroQool,
ich stimmt Abt vollkommen darin zu, dass Popups wirklich nervig sind (und teilweise sogar vom Browser des Benutzers geblockt werden). Es spricht allerdings überhaupt nichts dagegen, diese Autocomplete-Funktion per JavaScript zu lösen. Es wäre jedoch schöner, neben der Artikelnummer-Textbox eine Liste anzuzeigen, in der die Suchresultate geladen werden. Evtl. kommt auch ein Dropdown in Frage, wie es normalerweiser der Fall bei Autocomplete ist.
m0rius
Hallo Alphawolf1988,
es geht ja nicht nur darum, zu prüfen, ob der Spieler dort stehen kann. Das kann sowohl auf dem Client als auch auf dem Server geschehen. Du musst das ganze konsequent ein wenig weiterdenken, denn um Cheating zu vermeiden, sollte diese Option (sowie die tatsächliche Position des Spielers) dem Server überlassen werden — sonst validiert sich jeder Client etwas zurecht, was laut Spiellogik gar nicht erlaubt sein dürfte.
m0rius
Hallo Alphawolf1988,
warum hältst du nicht die gesamte Spielwelt auf dem Serverspeicher?
m0rius
Hallo zusammen,
ich habe selbst ein dotnetpro-Abo, gerade wegen der Inhalte — die finde ich nämlich ziemlich hoch in ihrer Qualität.
m0rius
Hallo thefiloe,
schau mal, ob dir dieser Thread weiterhilft: How to make my WPF MainWindow a singleton?
m0rius
Hallo digi333,
Selection
ist kein Befehl in C#, sondern der Name der Collection, über die in der foreach
-Schleife iteriert wird.
m0rius
Hallo Tester-05,
du fügst der KlasseC deine neue Eigenschat hinzu, das ist alles. Mit Ableitung bzw. Vererbung hat das nichts zu tun. Das sind allerdings absolute Grundlagen.
m0rius
Hallo CoderboyPB,
kurz gesagt enthält formCollection
ein Key-Value-Pair-Aufzählung aller übermittelten Formularwerte.
Eine beispielhafte Verwendung der FormCollection
-Klasse findest du hier: How can a formcollection be enumerated in ASP.NET MVC?.
m0rius
Hallo rock3t,
ich möchte dich an dieser Stelle nur kurz darauf hinweisen, dass es "develop" heißt und nicht "develope", bevor sich der Fehler in allem manifestiert, was ihr schreibt.
m0rius
Hallo Campy,
ich will wirklich keine Haarspalterei betreiben, aber eine 7-sekündige (!) Google-Suche nach "wpf checkbox button" hat diesen StackOverflow-Thread aufgetrieben: WPF CheckBox with “Button” appearance.
Hier in Kurzform: Benutze einen ToggleButton. Dieser besitzt die Control-Logik einer Checkbox und sieht aus wie ein Button.
m0rius
Hallo Abt,
für diese Videoreihe ist keine Plus-Subscription erforderlich, sondern lediglich die genannten Schritte.
m0rius
Hallo zusammen,
ich möchte euch an dieser Stelle auf den Kurs Building ASP.NET MVC Apps with EF Code First, HTML5, and jQuery hinweisen, der bis zum 27. April kostenlos von Pluralsight angeboten wird. Daher mein Aufruf an alle Webentwickler: Nutzt die Gelegenheit und bildet euch in server- sowie clientseitigen Webtechnologien weiter!
Genaueres zum ca. 5-stündigen Videotutorial findet ihr hier: Building ASP.NET MVC Applications with Entity Framework Code First, HTML5, and jQuery.
m0rius
Hallo Grundkurs,
ohne mich jetzt genauer mit der Dokumentation von C++ beschäftigt zu haben, vermute ich, dass die Post-Inkrementierung in C++ so implementiert ist wie die Prä-Inkrementierung in C#. Dies wurde, schätze ich, aus o.g. Gründen in C# abgeändert.
m0rius
Hallo 7.e.Q,
je nach Anwendungsfall kann es durchaus sinnvoll sein, über beide Varianten der Inkrementierung zu verfügen, wie der folgende Pseudocode zeigt:
int i = 0;
object[] demoArray = new object[...];
foreach (...)
{
demoArray[i++] = ...
}
Würde der erhöhte Wert der Variablen zurückgegeben werden, würde die erste Zuweisung bereits den Index 1 verwenden und nicht, wie gewünscht, den Index 0.
Das Ganze nennt sich übrigens Prä- bzw. Post-Inkrementierung. Analog dazu gibt es ebenfalls die Prä- bzw. Post-Dekrementierung mit dem Operator --
.
m0rius
Hallo Grundkurs,
der Ausdruck
i++;
ist die Kurzform der folgenden Anweisung:
i = i + 1;
Sie erhöht den Wert der Variable i
um 1. Der Rückgabewert der Kurzform dieses Ausdrucks ist jedoch nicht der Wert der erhöhten Variable, sondern der der noch nicht erhöhten. Dieser Wert (5 in deinem Beispiel) wird zurückgegeben; die Variable i
wird erst anschließend inkrementiert. Der Wert der Variable bleibt in deinem Beispiel deshalb konstant 5, da du ihr den noch nicht erhöhten Wert zuweist und somit Durchlauf für Durchlauf effektiv nichts machst.
Um dein Beispiel zum Laufen zu bringen, lass einfach die Zuweisung weg und schreibe lediglich folgende Zeile:
i++;
i = ++i;
Dabei wird der Wert von i
erst erhöht und anschließend (redundant, da doppelt) zugewiesen. Das dient jedoch nur zu Illustrationszwecken und ist nicht zu empfehlen.
m0rius
Hallo zusammen,
um es hier zusammenzufassen:
The maximum render size for a Silverlight UIElement is 2048 x 2048 pixels. This is a design limitation of the runtime which was made for performance reasons.
m0rius
Hallo st@tic,
hast du mal Google bemüht und nach "ASP.NET MVC" gesucht? Das erste Suchresultat schickt dich auf www.asp.net/mvc, eine Seite von Microsoft, die sehr ausführliche Online-Tutorials zu den wichtigsten Themenbereichen von ASP.NET MVC enthält.
m0rius
Hallo st@tic,
Abt hat Recht damit, dass die Geschwindigkeit der Weiterentwicklung von Web-Technolgien sehr hoch ist. Mit dieser Frequenz können Bücher schlicht aufgrund der Tatsache, dass sie ein Printmedium sind, nicht mithalten. Ich würde dir trotzdem empfehlen, dir ein Buch zuzulegen und dir die Grundlagen anzueignen. So habe ich zum Beispiel die Professional ASP.NET MVC gelesen (damals noch für ASP.NET MVC 2) und war mit dem Buch sehr zufrieden.
Um dich auf dem aktuellen Stand zu halten und über die neuesten Themen Bescheid zu wissen, musst du natürlich digitale Quellen heranziehen, also Dokumentationen, Blogeinträge, usw. Ich halte es jedoch für sinnvoll, sich vorerst systematisch die Grundlagen anzueignen, und dafür ist ein zusammenhängendes Buch von renommierten Autoren meiner Meinung nach am besten geeignet.
m0rius
Hallo Abt,
vielen Dank für deine Antwort.
Wie handhabst du denn clientseitige JavaScript-Validierung?
m0rius
Hallo Abt,
implementierst du das IValidateableObject
-Interface in deinen Entity-Klassen oder in View-spezifischen ViewModels?
Wenn in den ViewModels, wie vermeidest du Redundanzen?
[...] da es deutlich flexibler und korrekter arbeitet.
Inwiefern arbeitet IValidateableObject
korrekter?
m0rius
Hallo dcc.marx,
herzlich Willkommen auf myCSharp.de!
Lese- und schreibgeschützte Eigenschaften existieren, um den Zugriff von Benutzern (Programmierern, nicht Endnutzern!) einer Klasse einschränken zu können. So kann es zum Beispiel sinnvoll sein, nach dem Instantiieren einer Klasse deren Eigenschaften lesen zu können, aber nicht – oder zumindest nicht von außerhalb der Klasse heraus – verändern zu können.
In anderen Fällen macht es keinen Sinn, eine Eigenschaft überhaupt schreibbar zu machen. Das ist zum Beispiel der Fall, wenn diese lediglich etwas berechnet:
public class SalaryCalculator
{
public double HourlyPay { get; set; }
public double HoursWorked { get; set; }
public double SalaryPayment
{
get { return HourlyPay * HoursWorked; }
}
}
SalaryPayment
hätte auch folgendermaßen als Methode implementiert werden können:
public double CalculateSalaryPayment()
{
return HourlyPay * HoursWorked;
}
m0rius
Hallo zusammen,
irgendwo hat natürlich jeder seinen Lieblingseditor, daher werfe ich meinen für HTML + JavaScript auch mal in die Runde: Sublime Text 2.
m0rius
Hallo Abt,
Ich bin den CAPTCHAs sehr kritisch gegenüber, weil immer irgendeine Gruppe ausgeschlossen bzw. benachteiligt wird.
okay, darin stimme ich dir zu. Ich hatte deinen letzten Post, auf den ich geantwortet habe, anscheinend falsch verstanden und "weshalb die E-Mail als Grafik noch der beste Schutz sein dürfte." als Empfehlung für reine Grafiken interpretiert.
m0rius