Der letzte Match ist leer, frag mich nicht warum. Also wenn du dir mal die Matches ausgeben lässt, ist der Erste der komplette Text, und der Zweite leer.
Aber wie gesagt, mit .* sollte man vorsichtig sein, weil er alles reinstopft was geht. Er nimmt dann die letzte mögliche Ausfahrt, statt der ersten. Das heißt wenn du nach <a>.*</a> suchst, und es kommt zweimal sowas vor, erhältst du den kompletten Text vom ersten <a> bis zum letzten </a>
Naja ich hatte auch mal ein Problem mit nem Stream, bei dem das Programm einfach abgestürzt ist. Nichtmal die finaly Blöcke wurden ausgeführt. Die Ursache war in dem Fall ein Synchronisationsproblem mit einem anderen Thread. Das kann es hier nicht sein, aber ich wage mal zu behaupten, wenn es ein Problem gibt, was dieses Verhalten hervorrufen kann, gibt es mindestens noch ein weiteres
Ist natürlich ne ganz tolle Sache usw... wäre schon toll was Konkreteres dazu zu bekommen.
Was für Funktionalität soll da drin sein?
Auf welche Hardware zielt man damit ab?
Gibts das Framework dann auch für stinknormale PCs mit Windows oder Linux?
Du hast einfach nur hinter dem \w das + vergessen, sonst wird er nur einen Buchstaben erwarten.
PS für HTML Tags sind Regex nicht sonderlich gut geeignet, weil HTML keine Reguläre Sprache ist. Beispiel:
<a>1<b>2</b>3</a>4<a>5</a>
Mit dem Ausdruck "<a>\w+</a>" würdest du nur erhalten: "<a>5</a>", weil ja nicht auf verschachtelte Tags gematcht wird.
Mit dem Ausdruck "<a>.*</a>" würdest du erhalten: "<a>1<b>2</b>3</a>4<a>5</a>", weil er so viel wie möglich reinstopfen will.
Kurzum: Das funktioniert nur vernünftig wenn du keine inneren Tags erwartest.
PPS die Ausdrücke dienen nur der Veranschaulichung, es müssten bestimmt noch ein paar \ eingefügt werden damits funktioniert, nur wirds dadurch auch etwas unverständlicher als Beispiel.
Ich würde mal spontan sagen du musst dir einen anderen Ansatz suchen.
Es ändert sich ja nicht einfach so mal was an dem Objekt, weil gerade die Sonne drauf scheint und es anfängt zu grünen. Frag doch an den Stellen ab, an denen du was mit dem Objekt machst, was seinen Zustand ändern könnte, und lös dort ein Event aus.
Meistens reicht es doch sowieso aus nicht genau zu wissen was und ob sich was verändert hat, sondern dass sich was verändert haben könnte und wie der neue Zustand aussieht.
Du musst die DLL doch nur als Referenz angeben. Ob im GAC oder nicht ist doch egal.
Sobald du das gemacht hast, sollte beim Designer bei den Tools unter Custom Components (oder so ähnlich) deines auftauchen. Eventuell nochmal neu compilieren, dann solltes aber spätestens da sein.
Die XmlDocument Klasse hat eine Methode CreateNavigator, mit der du einen XPathNavigator bekommst. Mit dem kannst du dann über die Select Methode mit einem entsprechenden XPath-Ausdruck den gewünschten Knoten (XmlElement) selektieren.
Wenn in Datenbankdesign auch nur halb so viel Hirnschmalz gesteckt würde, wie in diese Diskussion, hätte ich nur halb so viel Arbeit.
Wir arbeiten viel mit bestehenden Datenbanken und das ist teilweise einfach nur grausam. Primärschlüssel? Nie gehört. Von normalisierten Tabellen mal ganz zu schweigen. Und dort haben dann auch Felder mit gleicher Bedeutung unterschiedliche Datentypen. NULL kennt man auch nicht, deswegen muss meist ein char Feld herhalten, wo dann "--" eingetragen wird.
Naja wir werden mit Sicherheit nicht auf GUIDs wechseln, auch wenn die 100 mal schneller wären. Mir graut es vor Anrufen wie: "Der Auftrag 00EF68B8-EE7D-4EA0-83C5-05604ECD75AB wurde nicht richtig zurückgemeldet"
Außerdem traue ich dem Zufall nicht so recht. Eine Wahrscheinlichkeit von 1 / 2^128 einen doppelten Identifier zu erhalten bedeutet für mich nur, es ist möglich
Die verrücktesten Dinge passieren und davon nicht wenige in der EDV. Da werden Datenbanken zur Unkentlichkeit verstümmelt und niemand hat was gemacht...
Bisher hatte ich vor .RTF Dateien mit dem RichTextBox Control zu drucken, so wie hier beschrieben.
Ein Problem hab ich dort aber mit Tabellen. Wenn eine Zelle über mehrere Zeilen gehen sollte, wird das ganze dann sowohl im Control als auch beim Druck falsch dargestellt (Siehe Anhang).
Der Ansatz gefällt mir so gut, weil ich da perfekte Kontrolle über die Seiten habe. Man weiß was auf welcher Seite gedruckt wurde und kann dementsprechend den Rest anpassen. Darauf würde ich nur ungern verzichten.
Kann mir vieleicht jemand bei dem Problem weiterhelfen?
Alternativen mit ähnlichem Potential? Oder muss ich über die Kontrolle verzichten und das einfach über Word ausdrucken?
PS die .rtf Datei wurde mit OpenOffice angelegt und wird sowohl dort, als auch im Wordpad auf korrekte Weise angezeigt und ausgedruckt.
Original von Lynix
Andererseits sorgt eine Exception, die in einem eigenen Thread auftritt normalerweise nicht für einen Absturz der Anwendung. D.h. es gibt sicher Fälle, wo die Exception in einem Thread "nicht wichtig" für den weiteren Ablauf des Programmes ist. Im EventHandler könnte man daher evtl. schon ermitteln, welche Art von Exception es war und anhand der Info die man so erhält, entscheiden, ob man die Anwendung beenden muss oder nicht.
In .NET 1.1 ist das durchaus noch so, aber in 2.0 führt fast jede Exception in einem beliebigen Thread in einer beliebigen AppDomain dazu, dass das Programm beendet wird. Ich glaube die Ausnahmen kann man an einer Hand abzählen, zum Beispiel die ThreadAbortException.
ThreadException ist für Exceptions, die bei ner Windows.Forms Anwendung im GUI Thread geworfen werden. Eigentlich für solche gedacht, die durch Bedienung entstehen und nicht im Code abgefangen werden können.
Außerdem kannst du über Events nicht verhindern, dass sich das Programm beendet wenn eine Exception nicht gecatcht wird. Um try&catch führt nichts herum, sinnvoll wäre wie Herbivore sagte ein Wrapper, um den Code mit try&catch nicht völlig unleserlich zu machen.
Exception ist das einzige Sinnvolle was du machen kannst.
Du musst einfach davon ausgehen, dass beim Auftreten der Exception das Richtige gemacht wird.
Ich meine man lockt ja nicht aus Spaß. Man macht in dem Moment Änderungen an einem Objekt, was die anderen noch nicht so sehen sollen. Wenn ein Deadlock entsteht muss man die Änderungen zurücknehmen, anders geht es einfach nicht.
Du wirst die Laufzeit kaum verbessern wenn du ein Array statt ArrayList verwendest.
Du könntest sie z.B. (sehr geringfügig) verbessern, wenn du dem ArrayList gleich am anfang genügend Platz zuweist (Capacity). Da helfen idealerweise stochastische Verfahren (Konfidenzintervalle) oder einfach gutes Schätzen.
Ich meine ein ArrayList mit Kapazität 10 verhält sich ziemlich genauso wie ein Array mit Größe 10, nur dass die ArrayList eventuell noch wachsen kann ohne den Käse selbst implementieren zu müssen.
Ansonsten wenn die Funktion so oft gebraucht wird, wäre es vieleicht ne Überlegung wert die zwischenzuspeichern und nur bei Änderungen neu zu berechnen, bzw. Änderungen direkt über Events einzuarbeiten.
Oh je machbar ist vieles, nur in welchem Zeitraum?
Das Beste wäre eigentlich du probierst die Aspekte die dir Gedanken machen mal aus, dann siehst du am ehsten was dir zu kompliziert oder umfangreich ist.
Mit Grafik und Internet hab ich nicht viel am Hut.
Id3Tags klingt eigentlich auch nicht so schwer. Daten aus Dateien lesen und schreiben ist eigentlich so ziemlich das nächste nach einem "Hallo Welt"-Programm.
Da gibts mit Sicherheit auch einiges dazu im Internet. (z.B. hier)
Was willst du denn noch mit den Tags machen was dir so schwer vorkommt?
Was stört dich denn an ADO.NET? Größtenteils sind das doch auch die üblichen SQL Abfragen, das Drumherum kriegt man auf ein dutzend Zeilen hin.
Mir kommt da eine ordentliche Netzwerkkommunikation schon deutlich umfangreicher vor.
Original von zero
Das habe ich bereits getan, Traumzauberbaum.
Sorry aber ich find die Stelle einfach nicht. Du hast nur mal kurz die Worte SmartApps und Gegenwart eingeworfen, aber danach finde ich ehrlich nichts mehr darüber. Ein Zitat oder ein Link würde mir da weiter helfen.
SmartApps ist imo genau wieder so ein sinnentleertes Marketingwort. Was sollen Smartapps sein, was sind deren Merkmale und wie hilft einem das bei Plugins weiter? Sei so nett und gib uns paar Informationen (Links z.B.) statt puren Schlagwörtern.
Tut mir leid aber das Einzige was ich aus deinen Posts mitnehme ist das Gefühl von Sand in den Augen.
Also ehrlich, statt hier meterlange Absätze darüber zu schreiben, was den Threadersteller garnicht interessiert und zu beschreiben wie schlecht das alles ist, beschreib doch mal wie man es mit SmartApps in der Gegenwart macht.
Mir fällt echt nicht die geringste Idee ein ein Pluginsystem zu bauen, ohne irgendwo in einer Konfiguration den Plugintyp anzugeben.
PS Zum Thema TDD.
Ich kenne Deduktiv und Induktiv auch nur aus der Logik, bzw. als Synonyme für Bottom-Up und Top-Down. Was das mit Tests zu tun hat weiß ich erhlich gesagt auch nicht. Wäre nett wenn du auch das mal erklärst.
Vieleicht will er auch einfach nur probieren wie sowas geht und arbeitet nicht am nächsten Steuersystem für Langstreckenraketen.
Ich seh das ehrlich gesagt als einen ersten Schritt in Richtung Plugins. Da ist es ja doch eher üblich nicht unter der Voraussetzung zu entwickeln, dass man alle Plugins kennt.
Original von allyourbase
Euch unterstelle ich, noch nie an wirklich größeren Projekten gearbeitet zu haben.
Das unterstelle ich eher dir. In nem Projekt gibts ganz einfach Vorlagen dafür wie man Variablen benennt, wie man Methoden benennt, wie man Klassen benennt, wie man Code formatiert, wie man Code dokumentiert und falls es denjenigen wichtig genug ist auch wie man Abfragen aufbaut. Daran kann sich jeder halbwegs fähige Programmierer halten egal was für Richtlinien er davor eingehalten hat.
Da interessiert es kein Schwein was für Code in den Bewerbungsgesprächen/-unterlagen ist. Wenn man jemanden als fähig genug ansieht ihn als Programmierer einzustellen, dann sollte ein Kriterium dafür wohl sein demjenigen genug Intelligenz zuzutrauen solche primitiven Sachen zu meistern.
Deswegen ist das einfach ein absolut schwachsinniges Argument. Das ist so wie beim Bewerbungsgespräch zu sagen "So sie tragen einen schwarzen Anzug mit roter Krawatte. Bei uns werden aber blaue Krawatten benötigt, deswegen sind sie leider raus". Absolut lächerlich und ich weiß nicht für wie blöd du uns hältst, erstens so einen Schwachsinn zu schlucken und zweitens dir auch noch den gefakten Acount abzukaufen.
Ansonsten wünsch ich dir noch viel Erfolg mit deiner Engstirnigkeit. Ich wage mal zu behaupten, dass man von dir hier sonst nicht mehr viel hier sehen wird.