bist du dir ganz sicher, dass du den String mit escapten, also doppelten "\" erhältst? Ist das denn nicht einfach nur die Anzeige im Überwachungsfenster des Debuggers?
Wenn ich ein frisches C#-Projekt erstelle, darin eine Textbox und mir den Inhalt davon per Button-Klick ausgebe sieht alles ganz normal aus (ohne escaptes Backslash).
Hab das Beispielprojekt mal in den Anhang gepackt.
ist die Einstellung "Download -> Automatische Eingabeaufforderung für Dateidownloads" für die Sicherheitszone "Internet" deaktiviert (Standardeinstellung)? Wenn du auf "Aktiviert" umstellst, sollte der Download nicht mehr geblockt werden.
Wer weiss, vielleicht wollte der Entwickler sich ja kreativen Freiraum lassen für Enum.Maybe, Enum.Perhaps, Enum.DoNotKnowYet oder Enum.DoesNotMatter ;-)
Dann müsste er aber auch jedes Mal das YesNoEnum mit umbenennen. In YesNoMaybeEnum, YesNoMaybePerhapsEnum usw.
[/offtopic]
gut, ich kenne jetzt natürlich nicht die Programmarchitektur deines Update-Assistenten nicht. Dachte aber, da ja das Erstellen der Updatepakte und das Bereitstellen selbiger zwei unterschiedliche Concerns darstellen, dass sich diese Trennung auch irgendwie in deiner Software-Architektur zu finden sein müsste (und dass man dementsprechend an dieser Stelle eingreifen könnte). Es wäre jedenfalls meiner Meinung nach eine sinnvolle Überarbeitung. Ansonsten finde ich dein Projekt sehr interessant und ich verfolge die Entwicklungen aktiv mit, wenn ich es auch bisher nicht verwende.
Weiterhin gutes Gelingen wünsch ich dir bei deinem Projekt. :)
ist es denn für deinen Updater zwingend nötig, dass die Updatepakete per FTP auf den Updateserver gelangen?
Ich habe vor einiger Zeit in meiner Firma in einem Projekt deinen Updater einbauen wollen, bin aber dann daran gescheitert, dass ich keinen FTP-Zugriff auf den Server habe (während ich aber über das interne Netzwerk mich auf dem Webserver anmelden und dort auch beliebige Dateien ablegen kann, die dann anschließend per HTTP-Protokoll erreichbar sind).
Mit deinem Update-Assistenten bin ich damals aber nicht sehr weit gekommen, weshalb ich dann zu einer kommerziellen Lösung gegriffen habe.
Ich denke das ist eine Schwäche deines Updaters, die eigentlich mit relativ geringem Aufwand behoben werden könnte? Nämlich, dass das entscheidende das Erstellen der Updatepakete sein sollte und das anschließende Hochladen auf den Server über das FTP-Protokoll nur eine von mehreren Alternativen wäre. Was hältst du von diesem Vorschlag?
I will be testing the impact of 0 ms, 100 ms, 200 ms, 300 ms, 600 ms and 1000 ms using the TMnetsim Tool from TMurgent.com. This tools creates a new listener on the Citrix XenApp server using port 1495. It applies the latency to the session and proxies it to the Citrix XenApp server using port 1494.
Du kannst dir alternativ auch GeckoFX anschauen, damit bekommst du den Firefox auch in Winforms-Anwendungen rein. Allerdings ist das Deployment nicht so praktisch wie bei WebBrowser-Control.
Hab es grad bei mir getestet. Das AddIn wird bei mir geladen. Allerdings erst, nachdem ich es über Excel-Optionen > Add-Ins > Verwalten: Excel-Add-Ins: Gehe zu... > Automatisierung... hinzugefügt habe.
Generell gilt zu diesem Problem (also, dass er den LoadBehavior-Wert von 3 auf 2 stellt), dass entweder irgendwo in deinem Add-In-Code eine Exception ausgelöst wurde (was man in deinem Fall wohl ausschließen kann, da ja kein funktionaler Code enthalten ist), oder, dass auf dem Endgerät die Komponenten Shared Add-in Support Update for the Microsoft .NET Framework 2.0 (KB908002) installiert ist.
Habe selber mal vor einiger Zeit einiges an Kopfzerbrechen hinter mir, als ich mal ein Excel-COM-Add-In deployen musste (auf dem Entwickler-PC funktioniert es ja im Normalfall problemlos).
Irritierend an diesem Knowledge-Base-Artiekl war für mich damals, dass dort von COM-Add-Ins die Rede ist, die mit Visual Studio 2005 erzeugt werden, weshalb ich dann diesen Lösungsweg erst gar nicht ausprobiert hatte, da ich in VS2008 entwickle. Später hat sich dann aber herausgestellt, dass nicht die Visual-Studio-Version entscheidend ist, sondern die .NET-Framework-Version. Da du wie ich damals 2.0 als Target Framewort eingestellt hast, kann ich mir gut vorstellen, dass da das gleiche Problem zutage kommt.
Eine kleine Hürde gibt es aber bei der KB908002-Komponete aber noch: Wenn man die "vs2005-kb908002-enu-x86.exe" aus obigem Link herunterlädt und installiert, wird im Visual-Studio-2005-Verzeichnis im SDK\v2.0\Bootstrapper-Ordner die benötigte Komponente kopiert, sodass man diese beim Erstellen eines VS-Setup-Projekts als erforderliche Komponente auswählen kann (die Installation funktioniert leider nur mit installiertem VS2005; anders scheint man an die Komponente leider nicht dranzukommen). Damit die Komponente auch in VS2008-Projekten verfügbar ist, muss der KB908002-Ordner in das "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\"-Verzeichnis kopiert werden.
Allerdings sei auch noch angemerkt, dass der Designer die Eingabe für die Tag-Property immer als String speichert, auch wenn man einen numerischen Wert eingibt. (So jedenfalls meine bisherigen Erfahrungen.)
Zitat von Th69
P.S: Ich würde die Buttons trotzdem dynamisch im Code erzeugen...
Wenn man die Buttons ohnehin schon programmatisch erstellt, kann in das Tag-Property direkt ein Point-Objekt gespeichert werden. Dann spart man sich im Click-Eventhandler den kleinen Trick mit "/ 3" und "% 3". Was, wie ich finde, ohnehin umständlicher und auf den ersten Blick unverständlicher Code wäre.
Wenn im Tag direkt ein Point steckt, kommt man mit
Point point = (Point)button.Tag;
an das Objekt und kann entsprechend die X- und Y-Properties auswerten.
Wenn du unter VS 2010 ein neues Projekt erstellst, ist die Einstellung standardmäßig .NET Framework 4 Client Profile, deshalb war das wohl die naheliegendste Vermutung.
Diese "fast kompletten Word-Funktionen", die integriert sind, die gehören nicht zufällig einfach nur zu einer DevExpress-Demo? Hmmm, der Name deiner EXE (RibbonPadSample) kommt mir jedenfalls sehr bekannt vor.
Übrigens, du kannst die DevExpress-Controls auch sehr leicht eindeutschen. Einfach nur die entsprechenden Ressourcen-Dateien, die es schon fertig gibt (The collection of localized DevExpress assemblies) in einem "de"-Ordner in das Hauptverzeichnis deiner Anwendung packen.
Und damit es nicht ganz so auffällig wird, dass du einfach nur eine Demo-Anwendung der DevExpress-Leute erweitert hast, würde ich in den Projekteigenschaften noch den Namen der Ziel-Assembly, also deiner EXE, ändern.
stimme dir grundsätzlich auch zu. Allerdings muss ich noch zu dem Punkt des Aussehens bzw. der Gestaltungsmöglichkeit etwas loswerden.
Zitat von ErfinderDesRades
Das kann man stylen, wenn Wert darauf gelegt wird. Weitgehend im Designer, inclusive einer eigenen Spalte für Icons.
Nur für eine Spalte mit Icon muß man das CellPaint-Event bemühen.
Dein Beispiel der Gestaltungsmöglichkeit von DGV und LV, mit am Ende gleichem/ähnlichem Ergebnis bei beiden Controls ist ja nett, und zeigt auch, was technisch so möglich ist. Aber mal ehrlich: Mit Ästhetik hat das ja nun nichts mehr zu tun.
ListViews haben dagegen zusätzlich den für mich recht wichtigen Pluspunkt, dass man sie dem Style des Betriebssystems (bzw. des Explorers) anpassen kann (SetWindowTheme-Funktion). So erreicht man z.B. unter Vista/7 den netten Aero-Effekt, der sich beim Hovern und Auswählen von Items bemerkbar macht. Und der macht optisch schon einiges her, finde ich.
Wobei sich bei solchen Fragen wohl alle Geister scheiden... Ich persönlich leg recht viel Wert auf die Optik meiner Programme und versuche die UX Guidelines von Microsoft einzuhalten. Und da passt eine DGV leider nicht immer so gut rein.
Also für einen Fachinformatiker mit 2 Jahren Berufserfahrung halte ich eine Gehaltsvorstellung von 40.000 auch übertrieben. Ich selber hab meine FIAE-Ausbildung dieses Jahr erst beendet und bin für ein Jahresgehalt von 27.000 übernommen worden. Dafür hab ich aber auch selten Überstunden und 30 Urlaubstage pro Jahr. Weiterbildung geschieht hier auch auf eigene Kosten.
Von meinen ehemaligen Klassenkameraden war das höchste was ich mitbekommen hab als Einstiegsgehalt 36.000.
bplaced.net hab ich aus persönlicher Erfahrung von früher als sehr sehr langsam in Erinnerung. Die Punkte von Siassei (Stabilität und Verfügbarkeit) würde ich also als nicht erfüllt ansehen. Aber vielleicht hat sich das mittlerweile auch geändert.
Ansonsten würde ich wirklich zu einem kommerziellen Anbieter raten. Man bekommt heute schon sehr viel für ziemlich wenig Geld. Und mit der Bezahlung über das Lastschriftverfahren hab ich jedenfalls bei all-inkl keine Probleme. Dafür braucht man keine Kreditkarte.
Habe im großen und ganzen das gleiche Ergebnis wie fullsizeDeveloper. Bei Chapter 4 ist GDI total zusammengebrochen.
System:
Windows 7 Professional 32-Bit
Intel Core 2 Duo E6600 2x2,4GHz
3 GB RAM
NVIDIA GeForce 9600 GT 512 MB
P.S.: Also, ich hab SlimDX soweit ich weiß nicht installiert (es sei denn es ist irgendwie mit Win7 dabei), das Programm funktionierte bei mir aber trotzdem. Nur so als Hinweis.
@Gü: Ja das stimmt schon, die Unterschiede zwischen PHP und C# sind nicht gerade gering. Aber da das ganze sowieso stückweise auch ein Übungsprojekt ist, weil's ein Privatprojekt ist, dachte ich mir kann ich auch zwei Implementierungen machen. Zeitdruck habe ich eh keinen. :)
P.S.: Wenn mal im Programmierspiel eine vereinfachte Variante dieser Problemstellung als Aufgabe gestellt und gelöst wird, werd ich's mir ja mal anschauen. :)
@herbivore: Hm, auf die Idee, die Google-Suche zu integrieren bin ich gar nicht gekommen... Aber ob man die dann auch optisch gut in den Rest der Seite integrieren kann? Werd's mir mal anschauen.
@Andre: Solr sieht auch interessant aus, danke. Allerdings glaube ich nicht, dass ich das benutzen kann. Habe nur ein bisschen Webspace gemietet und da krieg ich keinen Zugriff auf den Server...
Danke insgesamt für eure Antworten! Ich tendiere momentan doch sehr stark zu der DBMS-Lösung. Damit bin ich eh schon am meisten vertraut. Ist wohl wirklich so, dass ich gestern Abend zu kompliziert gedacht und den Wald vor lauter Bäumen nicht gesehen hab, weil das ja eigentlich die naheliegendste Möglichkeit ist. :)
Ist eine Echzeitsuche oder ein Job über einen festen Datenbestand(mit Indizes)?
Hatte meinen Eingangspost nochmal erweitert (siehe Edit 2).
Also, es wird wohl mit ziemlicher Sicherheit ein RDBMS zum Einsatz kommen. Auf dem Produktivsystem wohl MySQL, zum Testen würd ich wohl für die C#-Implementierung MS SQL nehmen.
Da auch in meinem Edit die Frage: Im Grunde müsste ich ja nur eine entsprechende Query an die DB absetzen, die Datensätze haben wie gesagt eine ID. Da bräuchte ich mir ja nicht selber 'nen Wolf programmieren weil das DBMS ohnehin auf Abfragen optimiert ist.
Edit: Und, ja. Soll eine Echtzeitsuche sein.
Zitat von Sebastian.Lange
Das ist im Prinzip einfach gute handwerkliche Programmierarbeit.
Bzw. was meinst du mit abfangen?
Ja das dachte ich mir. (Und ja, mit "Fehler abfangen" meinte ich die zweite Option.) Okay, die Handwerksarbeit krieg ich sicher hin.
Hm, im Grunde wäre dann wohl meine Frage wohl so gut wie beantwortet, lol.
Ich hoffe ein ähnliches Thema wurde hier nicht schon behandelt, habe auf jeden Fall die Forensuche angeschmießen. Aber vielleicht haben mir auch nur die richtigen Suchbegriffe gefehlt.
Also, es geht mir um folgendes: Ich habe sehr viele mittellange Sätze. Insgesamt etwa 32.000 Stück an der Zahl. Durchschnittlich hat jeder Satz ~23 Wörter (ca. 740.000 insgesamt). Jeder Satz hat eine eindeutige ID.
Ich möchte nun eine etwas komplexere Suche auf alle diese Sätze ausführen, und mir alle Sätze liefern lassen, die den Suchkriterien entsprechen.
Dabei sollen ähnliche Suchfunktionen möglich sein wie z.B. bei der Google-Suche. Da kann man über Anführungszeichen "bestimmte Wortgruppen" suchen, also dass genau in dieser Reihenfolge diese Wörter vorhanden sind. Oder man kann mit einem Plus- oder Minus-Zeichen Wörter +erzwingen oder -unterdrücken. Ich denke das dürfte den meisten bekannt sein.
Edit: Ganz vergessen: Es soll auch möglich sein, mit Jokern nach ähnlichen Wörtern zu suchen, beispielsweise Land* (=> Land, Landschaft, Landgebiet, usw.).
Meine konkrete Frage wäre nun: Wie gehe ich hier am besten vor? In welcher Datenstruktur soll ich die Sätze bereitstellen? Als plain strings?
Wie kann ich performant alle Sätze nach Übereinstimmung durchsuchen und mir die Ergebnisse liefern lassen? Wären RegEx eine Option? Bin mir gerade unklar darüber, wie so ein RegEx-String aussehen könnte, schließlich suche ich ja nicht nach einem bekannten Muster. String.Contains() möchte ich aber vermeiden...
Edit 2: Hm, eigentlich könnte man das doch einfach über eine entsprechende SQL-Query machen? Irgendwo müssen die Daten ja ohnehin gespeichert werden. Hab ich da wohl den Wald vor lauter Bäumen nicht gesehen?
Ich würde es zwar wahrscheinlich irgendwie hinbekommen, aber da ich mit Algorithmen nicht besonders vertraut bin, wäre meine Vorgehensweise vermutlich unnötig kompliziert und wahrscheinlich nicht sonderlich performant.
Deshalb dachte ich mir, frage ich einfach die Profis.
Und vielleicht noch eine Nebenfrage: Wie kann ich den Suchstring, den der User eingibt, parsen und Fehleingaben abfangen? Aus dem Suchstring müssten ja alle Einzelbedingungen extrahiert werden und gegebenenfalls in passende Datenstrukturen überführt werden, also beispielsweise eine List<List<string>> für Wortgruppen, eine List<string> für erzwungene Wörter und eine List<string> für unterdrückte Wörter.
Letzlich soll das ganze übrigens in PHP umgesetzt werden, aber das sollte für dieses Problem denke ich ohne Belang sein, werde das ganze ohnehin erstmal in C# probeweise umsetzen.
Falls die englische Sprache da irgendwo mit installiert ist, sollte es auch reichen, die aktuelle Culture auf englisch zu stellen
Das wäre dann aber Zweckentfremdung dieser Funktion. Denn die aktuelle Culture entscheided ja im Programm hauptsächlich, wie die Sprache des Programms ist (falls Lokalisierung aktiviert ist) und wie Zahlen und Datumswerte formatiert werden. Nur wegen den Fehlermeldungen würde ich das deshalb nicht umstellen.
Hast du das Language Pack Deutsch für das Framework installiert? Soweit ich weiß ist das der entscheidende Faktor für die Sprache der Fehlermeldungen. Deinstallieren sollte in dem Fall dann reichen.