Laden...

Forenbeiträge von bredator Ingesamt 357 Beiträge

23.12.2011 - 08:40 Uhr

Die Frage ist auch, welche Adresse dein Router hat und ob er zwei Subnetze routen kann. Die meisten Geräte können das nämlich nicht (die für den Hausgebrauch) und dann wird es ohne zweiten Router schwierig. Angenommen, dein Router hat die 192.168.2.1, dann ist der Router zwar vom Netz 192.168.2.0 erreichbar, das Netz 192.168.2.128 erreicht den Router aber nicht, da er nicht im selben Netz liegt. Hier wäre es interessant, welche Geräte sonst noch bei dir rumstehen... ganz ohne Switches oder dergleichen wirds ja momentan wohl auch nicht laufen. Sind die Switches umfangreicher konfigurierbar, bieten diese nämlich noch eigene Subnetting-Möglichkeiten mit Routing.

Nach meinem Verständnis musst du aber dennoch dein zweites Subnetz routen und im Routing-Table die IP des ersten Routers (mit Internetanschluss) angeben, damit das funktioniert.

Weiterhin stellt sich die Frage, wozu das gut sein soll? Sollen Zugriffe der Rechner untereinander eingeschränkt werden? Das ließe sich nämlich mit entsprechender Rechteverwaltung einfacher machen. Subnetting macht vor allem dann Sinn, wenn die Broadcastdomänen verringert werden sollen/müssen, dass das aber bei der Hand voll Geräte notwendig sein soll, kann ich mir kaum vorstellen (aber das heißt nicht, dass es nicht so ist, habe es auch schon gesehen, dass 4 Geräte in 2 Subnetze á 2 Geräte aufgeteilt werden mussten).

Bisschen mehr Infos wären also schon hilfreich 😄

20.12.2011 - 15:54 Uhr

Hm, gemäß dem Fall, es ist immer nur ein Ordner im Unterordner "Profiles", kann man sich diesen natürlich mit Directory.GetDirectories() holen. Allerdings habe ich dort auch schon mehrere Ordner gesehen und welcher jetzt für das aktuelle Profil gilt... hm, schwer zu sagen. Gibt es eventuell Einträge dazu in der about:config?

15.12.2011 - 15:44 Uhr

Hier bin ich mir nicht sicher, wie Bitmap-Objekte von C# gehandhabt werden. Eventuell hast du da einen Call by Reference drin, wodurch du ein bereits vorhandenes Objekt an anderer Stelle nochmal verwenden willst. Das geht dann natürlich schief. Ist aber nur eine Vermutung, wäre aber das, was ich mir als nächstes mal anschauen würde.

15.12.2011 - 14:23 Uhr

Es sollte doch aber gehen, im Speicher ein Bitmap-Objekt zu erzeugen und das mit dem Image der Pictureboxen zu vergleichen, oder nicht?

15.12.2011 - 14:19 Uhr

Entweder mit entsprechenden Klassen des .NET-Frameworks (Stichwort FTPWebRequest), oder du benutzt externe Librarys. edtFTPnet ist so eine Lib, die in der Basisversion noch nicht mal was kostet. In der Version fallen halt einige Dinge wie Verzeichnisse hochladen oder SFTP/FTPS weg, aber die wichtigsten Sachen gehen damit problemlos. Entsprechend ausführliche Dokumentation ist auf der Seite des Anbieters. Runterladen, installieren, Verweis anlegen, loslegen.

12.12.2011 - 16:52 Uhr

Reicht dir nicht einfach eine große Wortliste, wo du dann zufällig ein Wort rausholst?

So was in der Art dachte ich mir auch. Aus diesen lassen sich ja problemlos alle Wörter mit 9 Buchstaben herausfiltern und anschließend eines zufällig auswählen.

12.12.2011 - 16:46 Uhr

An und für sich stelle ich mir das nicht allzu schwer vor. Kannst du was zum Zweck sagen? Vielleicht ergeben sich daraus noch weitere Möglichkeiten, außer natürlich, es muss online sein.

06.12.2011 - 08:19 Uhr

Generell sollten aber keine Konfig- oder sonstige gelesene/geschriebene Dateien im Programmverzeichnis abgelegt werden. Hatte bei mir auch viel Ärger verursacht, seit ich das ganze im Benutzerverzeichnis ablege, gibt es keine Probleme mehr.

05.12.2011 - 10:29 Uhr

Ich besitze seit ein paar Monaten zwei Monitore vom Typ Samsung SyncMaster S24A450BW. Er bietet eben genau die 1920x1200 Auflösung, hat ein sehr gutes Bild und zudem auch noch eine Pivot-Funktion, also den Monitor ins Hochformat drehen. So kann ich einen Monitor hochkant stellen und darauf Dokumente vernünftig lesen, während ich auf dem anderen arbeite. Einziger Negativpunkt von meiner Seite: Es wurden keine DVI-Kabel, sondern nur VGA mitgeliefert -_-

Ansonsten ein Top Gerät, das ich nur empfehlen kann.

02.12.2011 - 10:28 Uhr

Vermutlich nicht ganz so schnell. Mitte bis Ende nächsten Jahres wird es schon werden. Wie gesagt, muss man abwägen, ob man sich bis dahin mit VS2008 oder Express Editionen ausreichend versorgen kann, oder ob es doch VS2010 jetzt sein muss und dann bei Release der nächsten Version entweder bei 2010 bleiben oder ein Upgrade machen.

02.12.2011 - 08:22 Uhr

Weiterhin sollte man vielleicht noch in den Raum werfen, dass in nicht allzu ferner Zukunft Visual Studio 11 erscheint und es sich vielleicht lohnt, diese Zeit noch abzuwarten, da es doch ein paar nette Features mehr mitbringt. Ob sich das Warten lohnt, muss man allerdings für sich selbst entscheiden. 😉

21.11.2011 - 09:12 Uhr

Sehr interessanter Ansatz, das könnte mir bei manchen Texten ziemlich hilfreich sein. Danke 😉

17.11.2011 - 10:56 Uhr

Okay... das heißt für mich dann wohl, dass ich mich dringend mal etwas damit beschäftigen sollte. Habe meine Spielereien bisher ohne Bibliotheken gemacht und bin daher absolut nicht informiert, was die so können und mitbringen. Danke für die Anregungen 😉

17.11.2011 - 10:51 Uhr

Ich hab mich wohl falsch ausgedrückt. Mit hässlich meinte ich nicht das Frontend. Beim näheren Betrachten muss ich mich aber auch beim Rest korrigieren. Es ist mir ja völlig egal, wie und womit das Backend geschrieben ist (hier liegt ja die Business-Logik). Die kann ja in C#, C++, Java, Whitespace oder sonstwas geschrieben sein. Lediglich das Frontend in HTML5 und JS... okay, das ist dann wirklich machbar.

Mit hässlich meinte ich eher den Code der Logik... die wird ja aber, wie ich eben gemerkt habe, eben nicht mit JS geschrieben, wäre in diesem Fall aber tatsächlich sehr hässlich bzw. teilweise auch nicht lösbar. 😉

17.11.2011 - 09:50 Uhr

Ich kann mir eigentlich nicht vorstellen, dass MS Silverlight einstellt. Außer Flex und Flash gibt es eigentlich keine Alternativen dafür, die man wirklich ernst nehmen könnte (derzeit zumindest). Wie das mit HTML5 und JS gemacht werden soll, kann ich mir ebenfalls nicht vorstellen... das liegt vielleicht daran, dass ich (bis auf ein paar kleinere Spielereien) mit JS bisher kaum was gemacht habe, aber vielleicht auch daran, dass komplexe Business-Anwendungen mit HTML5+JS entweder sehr hässlich oder überhaupt nicht umsetzbar sind.

Aber wie gesagt, das kann ich nicht genau sagen, da ich in den "Techniken der Zukunft" einfach noch zu wenig Erfahrung gesammelt habe.

07.11.2011 - 08:54 Uhr

Ich nenne einfach mal den SyncMaster S24A450BW von Samsung, von dem ich mir kürzlich zwei Stück besorgt habe. 1920x1200 Auflösung, sehr klares und kontrastreiches Bild, zum Arbeiten ideal. Zum gelegentlichen Spielen nutze ich dann nur einen Monitor, weil ich mit beiden das nicht kann. Bin jedenfalls sehr damit zufrieden und kann ihn nur wärmstens weiterempfehlen.

20.10.2011 - 10:01 Uhr

In der dotnetpro stand auch ein Artikel dazu drin. Klingt sehr interessant, vor allem, dass Wrapperklassen schon mitgeliefert werden sollen, aber mal abwarten, was letztlich im fertigen Windows 8 vorhanden sein wird. Dass Dinge angekündigt werden, die letztlich nicht, oder zur zum Teil umgesetzt werden, wäre nicht das erste Mal (ich glaube, WinFX war auch so ein Fall). Aber spannend klingt es allemal und es wäre sehr schön, wenn viel oder alles davon den Weg ins fertige Produkt finden würde.

14.10.2011 - 12:21 Uhr

Ich hätte hier auch die TryParse-Methode bevorzugt, alternativ kann man natürlich noch die Property Text der Textbox auf "" prüfen und entsprechend reagieren.

11.10.2011 - 16:41 Uhr

Es hängt nur die Solution mit ein paar Bytes an... da kann man nichts damit testen.

11.10.2011 - 08:52 Uhr

Hallo zusammen,

es ist zwar nichts essentiell wichtiges, was mich wahnsinnig in meiner Arbeit behindert, aber es war doch immer ganz schön, wenn ich auf der Arbeit Visual Studio 2008 geöffnet habe und mir die dortige Startseite dann die aktuellen News angezeigt hat. Allerdings will das VS2008 das seit dem ersten September nicht mehr machen, die letzte News ist von selbigem Datum.

Unter Extras->Optionen->Start ist als Seite "http://www.microsoft.com/germany/msdn/rss/aktuell.xml" eingerichtet und auch, dass alle 30 Minuten Inhalte heruntergeladen werden sollen ist aktiviert. Zu guter Letzt ist auch "Startseite anzeigen" eingestellt und trotzdem wird nichts aktuelles mehr angezeigt, was mich doch etwas stört, weil oftmals doch interessante Dinge gemeldet wurden, auf die ich sonst nicht unbedingt gestoßen wäre bei den sonstigen Newsrecherchen. Weiß jemand, was man da tun kann?

05.10.2011 - 16:56 Uhr

Mein Nick stammt noch aus den Multiplayerzeiten von ca. 1996, als auf den damaligen Sessions der Name "Predator" nicht wählbar war (warum, weiss ich heute noch nicht, es funktionierte nicht). Kurzum entschloss ich mich halt, den ersten Buchstaben meines Vornamens statt des 'P' zu verwenden... und das wars auch schon. Seitdem bin ich unter diesem Namen unterwegs. Zwar nennt sich inzwischen wohl auch irgendein Fußballer so, aber ich war wohl trotzdem der Erste 😉

04.10.2011 - 10:50 Uhr

Bei mir sieht es so aus, dass ich bei SC2 zwei Mal die Kampagne durchgespielt habe und dabei viel Spass hatte. Die Story ist gut und packend inszeniert. Allerdings bin ich hier kein Multiplayer-Fan. Um mir entsprechend gute SC2-Kenntnisse anzueignen habe ich einfach nicht mehr die Zeit wie früher und da man ohne selbige recht schnell eingestampft wird, hat der MP-Teil für mich recht wenig mit Spass zu tun. Insofern, nein, ich spiele derzeit nicht mehr SC2, sondern erst wieder mit dem Addon. Aber das ist nicht weiter tragisch, da es, wie schon gesagt wurde, genug andere Spiele gibt, die mich glänzend unterhalten (zuletzt Deus Ex: Human Revolution). Aber auch hier... ich habe einfach nicht mehr die Zeit wie früher (als man noch in die Schule ging).

27.09.2011 - 08:59 Uhr

Evtl mal das NewRowNeeded- oder das RowsAdded-Ereignis prüfen? Hab es zwar selbst nicht ausprobiert, aber die MSDN hilft da ja schnell weiter.

Ansonsten könntest du dir auch überlegen, ob du das DataGridView nicht an ein DataTable bindest, das im Hintergrund verwaltet wird. Damit lassen sich auch später die Auswertungen recht komfortabel gestalten.

19.09.2011 - 15:41 Uhr

Das kommt ganz auf den Code an, oder nicht? Ein Programm mit 1 Mio. LoC und fast keinen Kommentaren ist IMHO nicht wartbar oder erweiterbar. Ohne dann noch massiv Zeit und Geld zu investieren kann man mit dem Code genau gar nichts anfangen, besonders dann, wenn keine Fachleute drangesetzt werden.

19.09.2011 - 12:49 Uhr

Ich denke, du verwechselst hier Patentrecht mit Urheberrecht.

Eigentlich verwechsle ich da gar nichts. Ich sagte ja, dass man sich hier an den Fristen des Patentrechts orientieren sollte, nicht, dass Musikstücke bereits jetzt diesen Fristen unterliegen. Konjunktiv.

19.09.2011 - 12:01 Uhr

Insbesondere die Verwertungsrechte gehören reformiert. Musikstücke, die z.B. älter als 25 Jahre sind, sollten frei verfügbar sein. Wie jeder einzelne drankommt ist dessen Problem, aber Strafverfolgung von dergleichen sollte dann abgeschafft sein. Dasselbe bei Büchern und anderem geistigen Eigentum. Oder besser noch, diese Dinge dem Patentrecht in Sachen Fristen anpassen. Wenn ich es noch richtig im Kopf habe, laufen Patente nach 20 Jahren aus. Das wäre eine angemessene Frist für die Künstler mit ihren Werken Geld zu verdienen, und danach ist alles frei (also die guten 80er Musikstücke wären z.B. alle schon frei). Ebenso abgeschafft gehören horrende Summen bei geringfügigen Verstößen gegen das Urheberrecht. Klar, Millionenentschädigungen wie in den USA gibt es hier nicht. Aber auch eine Klage über ein paar zehntausend Euro kann eine Existenz grundlegend vernichten. Wozu das? Wird der Schaden dadurch ungeschehen? Ich schätze bei den allermeisten hat eine Strenge Verwarnung und eine Unterlassungserklärung genug heilenden und erziehenden Charakter. Bei "Wiederholungstätern" kann man dann ja immer noch abkassieren, wenn man glaubt, dass es das bringt. Ansonsten halte ich 100-200 Euro Strafe und eben besagte Unterlassungserklärung für absolut ausreichend.

Eine Reformierung des Patentrechts halte ich ebenfalls für unumgänglich. Wie schon gesagt wurde, kann es nicht sein, dass x Firmen mit idiotischen Trivialpatenten einen nach dem anderen verklagen und damit echte Innovationen blockieren, die dort evtl. entstanden wären. OK-Button und andere Oberflächenelemente? Die ältesten dürften schon mehr als 20 Jahre auf dem Buckel haben -> nicht mehr patentierbar, da state of the art.

13.09.2011 - 15:52 Uhr

Habe es jetzt mit AForge gelöst. Während des Lösens kam noch das Problem hinzu, dass leicht schräg gescannte Bilder nicht zufriedenstellend ausgeschnitten wurden. Mittels der Eckpunktanalyse von AForge konnte ich aber die Lage des rechteckigen Bereichs bestimmen und via Winkelfunktionen errechnen, wie weit das Bild in welche Richtung gedreht werden muss. Anschließend durch die Eckpunktbestimmung das Rectangle bestimmt und per Bitmap.Clone das fertig gedrehte Bild bekommen.

Danke für den Anstoß 😉

12.09.2011 - 10:46 Uhr

Okay, das hilft mir so auch schonmal weiter, da ich jetzt OpenCV mal anschaue und auch AForge.NET, auf das ich gleich mit gestoßen bin. Danke 😉

12.09.2011 - 10:33 Uhr

Hallo zusammen,

bei meiner aktuellen Tätigkeit geht es darum, ein gescanntes Bild von seinem Rand zu befreien, der dabei zwangsweise entsteht. Das Ergebnis des Scans sieht so aus, dass das gescannte Blatt links, rechts und unten einen schwarzen Rand hat. Dieser sollte abgeschnitten werden, wobei es egal ist, wenn noch ein schmaler Streifen dran bleibt (wegen leicht gedrehter Vorlage). Nur vom eigentlichen Blatt sollte nichts abgeschnitten werden.

Nun meine Frage, ob und wie sich so etwas am besten realisieren lässt. Da im Anschluss das Bild zu bestimmten Prozentteilen zerschnitten wird und dann eine OCR-Erkennung stattfinden soll, ist dieser Prozess des Randabschneidens praktisch ohne Alternative 😦

07.09.2011 - 09:10 Uhr

Warum nicht mit der ZipLib ein Archiv erstellen, welches beim Ausführen des Setups entpackt wird? Oder ist als Deployment nur eine einzige Datei vorgesehen? In dem Fall kannst du dir auch mal den Nullsoft-Installer anschauen.

06.09.2011 - 16:56 Uhr

Visual Studio LightSwitch ist doch genau dafür gedacht, oder habe ich da was falsch verstanden? Habe es mir noch nicht im Detail angeschaut und kann leider zum Aufwand nicht viel sagen, aber ich dachte, es wäre genau in diese Richtung gegangen.

06.09.2011 - 08:23 Uhr

Dasselbe Problem habe ich auch mit einer SQLServerCE-Datenbank, die im selben Verzeichnis liegt, wie die eigentliche Assembly. Nur mit Adminrechten läuft das Programm fehlerfrei. Ein Manifest ist ja mit zwei Klicks eingebettet und dann wird ja nur noch der AuthenticationLevel (oder wie es auch heißt) geändert. 2 Minuten Arbeit. Allerdings finde ich den Klick bei der UAC auch unzumutbar und ich überlege mir gerade eine Lösung mit verschieben der DB in das Userverzeichnis, wo sie allerdings für alle anderen Nutzer des Rechners auch erreichbar sein muss.

Ist vermutlich auch kein besonderer Aufwand, aber wenn man zu Hause zu nichts kommt, stellt es doch eine Hürde dar 😁

05.09.2011 - 11:24 Uhr

Ich bin kein Fan davon, meine Daten anderen Anbietern einfach so zur Verfügung zu stellen. Da auch unter meinen Bookmarks diverse private Dinge zu finden sind, die maximal den engeren Familienkreis was angehen, kommt ein derartiger Dienst für mich so nicht in Frage. Ich habe mir daher einen kleinen Webservice gebastelt, der auf meinem Heimserver läuft und bei entsprechender Eingabe auch eine entsprechende Ausgabe (die Bookmarks) liefert. Derzeit ist es noch etwas Gefrickel, aber evtl. werde ich mir noch ein Firefox-Plugin schreiben, das mir das dann abnimmt. Je nachdem, wie viel Zeit ich dafür finde (momentan siehts schlecht aus).

26.08.2011 - 14:25 Uhr

Wollte mich gestern auch via Dreamspark registrieren und mein Telefon freischalten lassen. Allerdings war meine Schule nicht aufgeführt... blöde Sache, dachte ich. Also, Mailfunktion genutzt und dem Support erläutert, warum ich mich nicht registrieren kann. Der (äusserst vorbildliche) Support hat mir dann ganz unkompliziert einen Key zugeschickt, mit dem ich mich registrieren kann zusammen mit einem Link für den Schuladmin, der darüber die Schule registrieren soll. Heute gleich mal ausprobiert, Handy freischalten ging problemlos (Omnia 7) und die erste Popel-Ausprobier-App ist auch schon draufgespielt, alles schön einfach. So muss das sein!

Also ja, als Student kann man sich bei dem Dreamspark-Programm anmelden (falls Schule nicht in Liste, einfach eine kurze freundliche Mail schreiben) und dann ebenfalls kostenlos beim App Hub anmelden. Wie das Gerät dann freigeschalten wird, ist dort auch erklärt.

24.08.2011 - 13:41 Uhr

Ich selbst habe hier das "Windows Presentation Foundation 4. Einführung und Praxis" von Norbert Eder liegen. Zwar mit knapp 400 Seiten eines der dünneren Bücher, aber trotzdem sehr empfehlenswert, gerade wenn man schon viel mit WinForms gearbeitet hat. Vor allem, was ich sehr schön finde, ist nicht erst noch ein 400-seitiger Einführungskurs in C# dabei, sondern das wird als bekannt vorausgesetzt.

15.08.2011 - 17:58 Uhr

Hallo nochmal,

danke für die Ideen. Ich habe es jetzt mit dem kleinen Tray-Tool gemacht und das funktioniert soweit ganz gut, wenngleich es natürlich schon etwas abgefahren ist, so ein Tool für diesen Zweck überhaupt zu haben 😄

08.08.2011 - 21:16 Uhr

Hallo zusammen,

ist zwar nichts absolut essentiell wichtiges, aber es ist trotzdem mit der Zeit recht nervig. Wenn ich Ressourcen hinzufügen möchte (bereits existierende Icons z.B.), dann mache ich das über die Projekteigenschaften und den Punkt "Ressourcen". Dort wird per Menüeintrag auch die Möglichkeit angeboten, allerdings bin ich, in dem sich öffnenden FileOpen-Dialog immer im Verzeichnis "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE"

Da mein Ordner Program Files sehr umfangreich ist und auch der Rechner selbst über knapp 20 Laufwerke verfügt, ist es in dem aufgeklappten Ordnerbaum extrem nervig, immer wieder hoch und runter zu scrollen, um irgendwann das richtige Laufwerk mit meinen Icons zu finden. Gibt es irgendeine Möglichkeit, dieses Standardverzeichnis z.B. auf D:\ zu setzen, anstatt diese riesen Verzeichnisangabe?

Vielen Dank im Voraus.

28.07.2011 - 14:29 Uhr

Für mich war es relativ schnell absehbar, dass ich kein Studium würde machen können. Zum einen, weil es für mich schlichtweg nicht finanzierbar war, zum anderen weil ich während dem Abitur leider schon festgestellt habe, dass durchgängiges Lernen mit keinem oder nur geringem Praxisbezug für mich eine Hürde darstellt, die ich nur mit unverhältnismäßig hohem Aufwand würde meistern können. Ich hatte mich daher zu einer Ausbildung zum IT-Systemelektroniker entschieden und mache inzwischen eine zweite Ausbildung zum Fachinformatiker-Anwendungsentwicklung, da hier der Praxisbezug doch etwas mehr gegeben ist.

Klar, auch bei einem Studium wäre hier und da Praxis angesagt. Sei es durch Praxissemester oder durch eigenständiges Arbeiten nebenher. Allerdings gerade der teilweise übertriebene Mathematikanteil hat mich dann trotzdem abgeschreckt (nicht, dass es überhaupt groß zur Diskussion stand, da es eh nicht finanzierbar gewesen wäre).

Wie schon erwähnt wurde, bietet einem ein Studium wohl hauptsächlich dadurch einen Vorteil, dass man Probleme auch aus anderen Blickwinkeln erfassen und lösen kann (an dieser Stelle mal noch unabhängig davon, ob es auch bessere Lösungen sind). Dadurch, dass einem ein breit gefächertes Themenspektrum mitgegeben wird, ob man will oder nicht, ergibt sich das automatisch. Allerdings sehe ich nicht, dass ein FIAE dadurch ebenso automatisch zum "dümmeren Programmierknecht" wird. Ganz im Gegenteil. Hier in der Firma ist der FIAE eher die wertvolle Ergänzung zu den studierten Kräften, die zwar allerlei theoretische Ansätze haben, aber bei der praktischen Umsetzung meist nicht allzu schnell Erfolge verbuchen können. Dafür geben sie den FIAE öfters mal ganz nützliche Lösungsansätze mit, auf diese die nicht von allein, oder nur mit sehr viel Zeit und Arbeit, gekommen wären.

Ein Studium ist, von meiner Seite abschließend formuliert, immer nützlich und auch sinnvoll, aber nicht zwangsweise notwenig. Alternativen wären gerade eine Ausbildung zum FIAE mit enormer Eigeninitiative, was persönliche Fortbildung angeht. Aber ich denke, ohne diese enorme Eigeninitiative ist weder ein Studium noch eine vernünftige Berufsausbildung wirklich sinnvoll oder machbar. So kann man nicht allgemeingültig feststellen, ob ein Studium immer der "richtige" und bessere Weg ist, da es doch vom Einzelnen abhängt. Manche können ein Studium gar nicht in Erwägung ziehen (ich), andere zieht die breite Theoriebasis geradezu magisch an. Wie gesagt, es ist von Fall zu Fall verschieden und allgemein nicht formulierbar.

20.07.2011 - 10:08 Uhr

Kann das Problem nicht nachvollziehen. Bei mir ist das alles recht zügig sichtbar. Hast du vielleicht viele Drucker installiert von denen ein Teil Netzwerkdrucker oder aber gar nicht erreichbare Drucker sind?

14.07.2011 - 08:34 Uhr

Für solche Dinge hatte ich mir einen kleinen Updater geschrieben, der sich holt, was er gerade braucht. Allerdings habe ich für die möglichen Versionssprünge jeweils eigene Update-Pakete gemacht. Sprich, ich habe ein Paket für die User von z.B. v1.03 gemacht, ein anderes für v1.04 und wieder ein anderes für 1.04b. Der Updater hat seine Version geprüft und auf dem Webserver jeweils das für ihn passende Paket abgeholt. Auf dem Server selbst sind dann natürlich Redundanzen vorhanden, allerdings juckt das nicht wirklich, wenn sie richtig organisiert sind. Jedenfalls musste wenigstens der Client nicht für ein Update 1-3x ein beinahe-komplett-Update herunterladen.

07.07.2011 - 16:41 Uhr

Hab hier auf der Arbeit leider nur einen XP Rechner, daher kein Snippingtool und auch keine UAC etc.

Allerdings mit regedt32.exe habe ich hier keinerlei Probleme. Evtl. mal unter den Projekteinstellungen -> Sicherheit -> Voll vertrauenswürdige Anwendung nachschauen?

Da es ansonsten unter XP geht, vermute ich aber ein Sicherheitsfeature von Win7... gemäß dem Fall, die Exe liegt wirklich da.

06.07.2011 - 15:42 Uhr

Sehr viel interessanter wäre es, so ein Office 365 auf einem eigenen Server zu betreiben und die "Cloud" damit ebenfalls selbst zu betreiben. Gerade bei Firmen sollte es eine solche Option geben, da es ansonsten einfach nicht zu verantworten ist, interne Dokumente mal eben auf Servern in USA zu hosten, wo sie beliebig für CIA und Co. zugänglich sind.

Eine eigene Serverapplikation, die jeder für sich selbst betreiben kann, wäre da wesentlich attraktiver. Aber leider nur für den Kunden, nicht für MS.

17.06.2011 - 10:13 Uhr

Ohne wahnsinnig viel Ahnung davon zu haben, wie man so etwas möglichst gut und performant macht, würde ich hier mit einer for-Schleife die Dataset.Rows[zeile][spalte] durchlaufen und beim entsprechenden Value den Zähler der Schleife dazu heranziehen, um die Zeile des DataGridViews anzuspringen und einzufärben oder anderweitig zu formatieren.

Also in etwa so:

for (int i=0; i<dataset.rows.count; i++)
{
   if (dataset.rows[i][SpalteID] == wert)
   {
      formatiereGridRow(dataGridView.rows[i][SpalteID]);
   }
}

Dazu natürlich noch entsprechend die methode "formatiereGridRow(DataGridRow row)" implementieren oder die Formatierung direkt in der Spalte vornehmen.

19.05.2011 - 10:44 Uhr

Die WriteFehlerlog-Methode sieht so aus:

private void writeFehlerlog(Exception ex)
        {
            string dt = DateTime.Now.ToShortDateString() + "_" + DateTime.Now.Hour.ToString("00") + DateTime.Now.Minute.ToString("00") + DateTime.Now.Second.ToString("00");
            StreamWriter writer = new StreamWriter("fehler_" + dt + ".txt");
            writer.Write(ex.Message);
            writer.Write(ex.StackTrace);
            writer.Close();            
        }

Rekursive Funktionen sind nicht vorhanden.

19.05.2011 - 08:56 Uhr

Vorab einige Infos, wie das erstellte Zeugs aussieht, und was es tun soll:
Es existiert ein sehr großes Programm, welches in C++ geschrieben wurde und seine Funktion erfüllt. Bisher zumindest. Jetzt sollte eine Funktion des Programms massiv überarbeitet und erweitert werden, was meine Aufgabe wurde. Diese Funktion greift auf eine Access-Datenbank zu, holt sich dort meist ein paar tausend Datensätze ab und gibt diese in entsprechender Form als xml aus. Das Ganze funktioniert für sich allein wunderbar - getestet habe ich alles als .exe, allerdings soll daraus eine .dll werden, welche im großen Programm (unmanaged) genutzt und aufgerufen wird. Das Aufrufen funktioniert soweit auch, allerdings fliegt er mir mitten in der .NET-Assembly beim füllen der Tables im DataSet mit einem Stackoverflow raus. Warum, das weiss ich nicht. Abfangen von StackoverflowException funktioniert leider nicht - er läuft in den try-Block und fliegt dann dort mit Stackoverflow weg. Ich hoffe, dass mir hier jemand helfen kann bzw. jemand eine Idee hat, woran das liegen könnte. Wie gesagt, für sich allein läuft die Assembly fehlerfrei und macht genau das, was sie soll (auch mit großen Datenmengen -> xml-Exporte mit teilweise 35-40 MB)
verwendetes Datenbanksystem: Access 97

Umgesetzt habe ich das Holen der Datensätze in C# wie folgt:

namespace AdasExport
{
    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.AutoDual)]
    public class AbExport()
    {
        public void writeData(int iAnbieter, int iStufe, int iDatumStart, int iDatumEnde)
       { 
        private DataSet dataSet = new DataSet();
        private OleDbConnection oledbConnection = new OleDbConnection();
        private OleDbCommand oledbSelectCommand = new OleDbCommand();
        private OleDbDataAdapter oledbDataAdapter = new OleDbDataAdapter();
        
        oledbConnection.ConnectionString = @"Data Source = TmpAbda.mdb;" + "Provider = Microsoft.Jet.OLEDB.4.0;";
        dataSet.Tables.Add()    //wird 8 mal ausgeführt, da ich 8 Tables benötige
        try
                {
                    label.Text = "Datenbanken werden gelesen...";
                    label.Refresh();
                    proBar.Value = 0;
                    int iSchrittweite = 142;

                    fillDiversTable();
                    proBar.Value += iSchrittweite;

                    fillLagerTable();             ----> hier fliegt er raus
                    proBar.Value += iSchrittweite;

                    fillLieferungTable();
                    proBar.Value += iSchrittweite;

                    fillGrosshaendlerTable();
                    proBar.Value += iSchrittweite;
                }
       }
//Hier sind natürlich noch viele weitere Funktionen, diese werden zu dem Zeitpunkt aber noch gar nicht angesprungen.

Die Funktion, in der er mir den Stackoverflow erzeugt, sieht so aus:

private void fillLagerTable()
        {
            oledbSelectCommand = oledbConnection.CreateCommand();
            oledbSelectCommand.CommandText = @"SELECT Lager.diPzn, Lager.iLagNr, Lager.diSpezVk FROM Lager;";
            oledbDataAdapter.SelectCommand = oledbSelectCommand;
            try
            {
                oledbDataAdapter.Fill(dataSet.Tables[3]);
            }
            catch (Exception ex)
            {
                writeFehlerlog(ex);
            }

            oledbSelectCommand = oledbConnection.CreateCommand();
            oledbSelectCommand.CommandText = @"SELECT LagerOrt.iLagNr, LagerOrt.strBezeich FROM LagerOrt ORDER BY iLagNr;";
            oledbDataAdapter.SelectCommand = oledbSelectCommand;
            try
            {
                oledbDataAdapter.Fill(dataSet.Tables[4]);      // An dieser Stelle tritt der Stackoverflow auf
            }
            catch (Exception ex)
            {
                writeFehlerlog(ex);
            }
        }

Offenbar führt er also einige Fill-Befehle aus und anscheinend geht ihm da irgendwann der Platz aus. Kommentiere ich den Aufruf der Funktion aus, dann fliegt er mir bei der nächsten raus mit derselben Meldung.

In den Projektoptionen habe ich den Haken bei "Für COM-Interop registrieren" gesetzt, was ja benötigt wird, um die Assembly überhaupt aus unmanaged Code aufzurufen. Hier wird mir dann eine .tlb erstellt, welche ich, zusammen mit der .dll, ins Verzeichnis meiner unmanaged Anwendung kopiere.

Im unmanaged Code gehe ich dann wie folgt vor:

#import "AdasExport.tlb" raw_interfaces_only

void PAnVive::StartViveTransfer(BOOL bManuell)
{	
	AbExport::_AbExport *pptr;
	CoInitialize(NULL);
	GUID dwTest = __uuidof(AbExport::AbExport);
	AbExport::_AbExportPtr Class1Ptr(dwTest);
	pptr = Class1Ptr;
	pptr->writeData_2(1,3,20100601, 20101230);      //Stackoverflow innerhalb Assembly
}

writeData_2 wird die public-Funktion in C++ genannt, die in C# writeData mit 4 Aufrufparametern heißt. Von dieser existiert noch eine mit 3 Parametern, deshalb wird sie in C++ als Nr. 2 aufgeführt.

Wie gesagt, sobald er in die Assembly springt, werden dort sogar ein paar .Fill-Anweisungen ausgeführt, aber ab einer bestimmten Menge scheint das nicht mehr zu wollen. Erklären kann ich es mir nicht so recht, da das Ding standalone ja funktioniert.

Woran könnte das liegen?

Gruß

19.04.2011 - 13:42 Uhr

Hm, die Welt könnte so einfach sein, wenn es nicht so Pappnasen wie mich gäbe, die die einfachsten Dinge nicht erkennen -_-

Danke für den Hinweis. Bin dem Ganzen nochmal nachgegangen, nachdem ich meinen Code als funktionierend angesehen hatte. Natürlich war es die falsche DB... ich hatte eine DB im Projektverzeichnis und in jener Kopie der DB im Debugverzeichnis ist alles schön eingetragen wie es sein soll. Ebenso wie es in VS dann angezeigt wird, nachdem ich die Referenz korrigiert hatte. Sorry für die vergeudete Zeit und nochmal danke für den Hinweis, der mich jetzt wirklich weitergebracht hat 😉

Die Uhrzeit bei meiner DB im Projektverzeichnis wird wohl nachgesetzt, weil zu dem Zeitpunkt des Zugriffs wohl eine Select-Anweisung abgesetzt und gespeichert wird.

19.04.2011 - 11:37 Uhr

Bin mir relativ sicher. Gerade weil die Uhrzeit der letzten Änderung beim Reinschauen in die DB unter VS plötzlich ein zweites Mal geändert wird.

19.04.2011 - 10:59 Uhr

verwendetes Datenbanksystem: SQL Server 2005 Express Edition

Hallo zusammen,

als ich mich letztes Wochenende mal wieder etwas an mein Projekt setzen und dort ein paar kleinere SQL-Statements absetzen wollte, bin ich auf ein etwas merkwürdiges Problem gestoßen. Ich schiebe es momentan auf meine Unfähigkeit oder dass ich irgendwas vergessen habe, aber eines nach dem anderen.

In meinem C#-Quellcode gebe ich einen INSERT-Befehl auf mit ein paar Einträgen. Das funktioniert auch wunderbar und mit .NonExecuteQuery() wird das Ding auch abgesetzt und auf meiner GUI erscheint meine Datenbankanzeige um den neuen Eintrag ergänzt. Die "zuletzt geändert"-Eigenschaft der Datenbankdatei zeigt mir auch an, dass soeben wohl was gemacht wurde.

Will ich mir nun aber im Visual Studio 2010 (Professional) den Inhalt der eben erweiterten Tabelle anschauen, dann sehe ich lediglich diejenigen Einträge, die vor meinem Insert schon vorhanden waren. Sobald ich mir die Tabelle anzeigen lasse, wird auch der "zuletzt geändert"-Wert meiner Datenbankdatei geändert, also meine Einträge wohl rückgängig gemacht. So weit, so schlecht.

Woran könnte das liegen und was kann ich dagegen unternehmen (außer fluchen)? Ich denke, dass es irgendwas mit nicht abgeschlossenen Transaktionen zu tun hat (von meiner Seite), die durch den Select-Befehl, den VS2010 beim Anzeigen wohl absetzt, rückgängig gemacht werden. Aber ich finde leider kaum was im Netz zu einem solchen Problem und wie man es lösen könnte.

Bin für jede Hilfe dankbar.

Grüße
Ben

16.09.2010 - 15:01 Uhr

Danke, den kannte ich aber leider schon 😉

5 Minuten länger Nachdenken hätten den Thread gespart. Habe jetzt einfach eine weitere Methode ShowDialog(Bitmap bild, usw.) eingebaut. Funktioniert bisher ganz gut, allerdings heisst das nicht, dass ich für weitere Tips nicht dankbar wäre... man kann schließlich nie genug lernen 😄