Laden...
H
hypersurf myCSharp.de - Member
Softwareentwickler Münster Dabei seit 16.10.2008 523 Beiträge
Benutzerbeschreibung

Forenbeiträge von hypersurf Ingesamt 523 Beiträge

01.04.2015 - 10:26 Uhr

Die GUI wirst Du wahrscheinlich selber erstellen müssen. Für das Generieren der Cron Expression spuckt google auf der ersten Seite ein paar vielversprechende Ergebnisse aus: https://www.google.de/#q=c%23+create+cron+expression

25.03.2015 - 10:29 Uhr

Hallo,

verstehe nicht wieso alle direkt auf VNC oder ähnliches verweisen. - Mit Boardmitteln kann der RDP-Server doch dahingehend konfiguriert werdern, dass mehrere Anmeldungen mit gleichem Nutzer möglich sind.

Der folgende Link ist zwar für Windows 2008 / 2012, funktioniert aber für ältere Versionen ähnlich:

>

Das geht aber nicht bei Windows 7.

25.03.2015 - 10:28 Uhr

Oder habe ich dich falsch verstanden?

Hast Du nicht, ich bin nur davon ausgegangen, dass der Benutzer immer wieder abgemeldet wird.

25.03.2015 - 09:55 Uhr

Mach doch VNC drauf und verbinde Dich zur Prüfung, ob jemand gerade auf dem Rechner arbeitet, kurz per VNC.

Du solltest bei der Verbindung im Bildschirm "Drücken Sie STRG-ALT-ENTF..." landen. Und wenn Du das dann drückst siehst Du, ob gerade jemand angemeldet ist.

24.03.2015 - 09:18 Uhr

Hallo jaipur,

hast Du vielleicht einen Entwickler-Kollegen der sich das ganze mal anschauen und zeitlich bewerten kann? Es wird Dir auch helfen, die Zeiten die Du wirklich an den Punkten sitzt zu notieren und später zu schauen wo Du mit der Zeitschätzung richtig lagst und wo nicht. Das verbessert Dein Gefühl für zukünftige Zeitschätzungen.

Von Deinen Schilderungen her klingen die Anforderungen jetzt nicht nach 4 Wochen Arbeit, sondern eher nach 2 - 3 Tagen. Das kann aber falsch sein, weil wir nicht alle Details kennen.

20.03.2015 - 00:26 Uhr

Hallo basstscho,

was für einen Barcodescanner hast Du im Einsatz? Es gibt Scanner für die es extra Komponenten gibt, mit denen man die Eingaben sehr bequem abfragen kann. Evtl. mal beim Hersteller nachfragen.

Falls Dein Scanner diese Möglichkeit nicht bietet denke ich, dass Du um Hooks nicht herum kommst.
Dieser Thread hier gibt Dir evtl. noch ein paar Anregungen: Barcodescanner- & Tastatureingaben unterscheiden

17.03.2015 - 10:52 Uhr

Die Doku sieht doch eigentlich ganz vielversprechend aus: https://documentation.devexpress.com/#Xaf/CustomDocument2670

Beispiele und Videos scheint es auch zu geben: https://www.devexpress.com/Products/NET/Application_Framework/getstarted.xml

15.03.2015 - 15:33 Uhr

Du verwendest die falschen APIs. RegisterHotKey ist dafür da um systemweite Hotkeys für Deine Anwendung zu registrieren, aber nicht um alle Tastatureingaben zu überwachen, das realisiert man mit anderen API-Funktionen.

06.03.2015 - 08:51 Uhr

Du musst a in B konvertieren:


if (a is B)
{
    program.doIt((B)a);
}
else
{
    program.doIt(a);
}

04.03.2015 - 11:05 Uhr

Hallo Carfly,

schau Dir mal diesen Thread [Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox) an, da wird eigentlich alles beschrieben was Du benötigst. Von "Wie zeichne ich in Windows-Forms" bis hin zu Animationen.

03.03.2015 - 11:00 Uhr

Schau Dir mal diesen Beitrag an: CommandLineParser - Ein leichtgewichtiger Befehlszeilen-Parser

Da gibt es eine Klasse die genau dies bereits erledigt.

27.01.2015 - 10:12 Uhr

Kannst Du mal die Klassen bzw. die relevanten Ausschnitte posten?

19.12.2014 - 13:49 Uhr

So wenig Kommandozeile wie möglich (bin Mausschubser, nutze bisher TortoiseSVN)

Schau Dir mal smartgit an. Ist nicht teuer und sehr praktisch.

09.12.2014 - 14:55 Uhr

Wenn der Betreiber die Links ändert, dann kann man nichts dagegen machen und sie funktionieren halt nicht mehr. Bei youtube muss man glaube ich aber keine Angst haben, dass sie die (Perma-)Links ändern bzw. diese ungültig werden.

27.11.2014 - 10:52 Uhr

Hallo Th69,

natürlich geht das auch ohne Rekursion, ich persönlich bevorzuge aber die Rekursion, weshalb ich diese auch vorgeschlagen habe.

maan kann sich ja den für ihn einfachsten Weg aussuchen 🙂

27.11.2014 - 08:50 Uhr

Hallo hypersurf,

das hilft hier nicht weiter, da die TreeView-Struktur ja erstellt werden soll - nicht gelesen.

In dem von mir genannten Beispiel sieht man wunderbar wie rekursive Methoden funktionieren und das ist genau das, was maan zur Lösung seines Problems benötigt.

Im Sinne von [Hinweis] Wie poste ich richtig? 1.1.1 habe ich die Lösung bewusst nicht gepostet, sondern nur einen Hinweis auf den Lösungsweg 😃

26.11.2014 - 16:49 Uhr

Hallo maan,

Du musst eine rekursive Funktion schreiben. Ein Beispiel findest Du hier

22.11.2014 - 20:48 Uhr

Sorry, dies ist kein Anfängerforum.

Such Dir am besten ein Anfängerbuch oder - Tutorial, wie z. B. das hier :http://csharp.net-informations.com/gui/gui_tutorial.htm

21.11.2014 - 09:48 Uhr

Warum fragst Du nicht einfach beim Hersteller des SDK's nach? Das SDK scheint ja kostenpflichtig zu sein was normalerweise beinhaltet, dass man auch Supportanfragen an den Hersteller senden kann.

20.11.2014 - 14:03 Uhr

Ich habe meinen Timer jetzt mal deaktiviert und versuche über einen Button Werte zu schreiben, also im GUI-Thread. Leider funktioniert das auch nicht. das erste mal schreiben im Form_Load geht und danach geht es nicht mehr.

Bitte poste den neuen Code der nicht funktioniert.

20.11.2014 - 13:45 Uhr

Du packst das was die GUI blockiert in einen separaten Thread, also nur die zeitaufwendige Korrespondenz mit dem Gerät. Wenn durch diesen Thread die GUI aktualisiert werden soll, dann nutzt Du Invoke.

Wenn das Aktualisieren der GUI aus dem separaten Thread zu zeitaufwendig ist, muss man sich halt überlegen, einige Teile der GUI erst nach Beendigung zu aktualisieren, oder das Ergebnis/Protokoll der Arbeiten erst nach getaner Arbeit anzuzeigen.

20.11.2014 - 09:18 Uhr

Das Binding ist korrekt implementiert und funktioniert:


        AktuelleWerte _act = new AktuelleWerte();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            _act = new AktuelleWerte();
            tb_FilllevelTank.DataBindings.Add("Text", this._act, "FillLeveltank_Anzeige", false, DataSourceUpdateMode.OnPropertyChanged);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            _act.FillLeveltank_Anzeige = DateTime.Now.ToLongTimeString();
        }

Ich vermute, dass das Problem hier liegt:

_act.FillLeveltank_Anzeige = fill.ToString() + " Liter";

14.11.2014 - 12:43 Uhr

Falls Du nur wissen willst ob irgendeiner der Ausdrück aus der Liste in dem string vorkommt, und das ganze nicht Case-Sensitive sein soll dann könntest Du das so machen:


bool kommtvor = LAusdrücke.Any(s => strUntersuchen.IndexOf(s, StringComparison.OrdinalIgnoreCase) >= 0);
11.11.2014 - 13:33 Uhr

Kannst Du nicht einfach eine weitere Methode einfügen, die Du dann in den abgeleiteten Klassen überschreibst?


public virtual void FillFields(......)

Diese Methode könntest in der Load-Methode aufrufen und die Daten, die Du in der Load-Methode in der Basisklasse aus der MongoDB gelesen hast, einfach übergeben:


        public virtual void Load(string id)
        {
            MongoCollection collection = ConsoleApplication1._mongoDatabase.GetCollection(this.GetType(), this.GetType().Name);
            MongoCursor data = collection.FindAs(this.GetType(), Query.EQ("id", id));

            this.FillFields(....);
        }


    class User : Master
    {
        public string forename { get; set; }
        public string lastname { get; set; }
        public string skill { get; set; }

        public void individualMethod3()
        {
        }

        public override void FillFields(....)
        {
                this.forename = ...;
                this.lastname = ...;
                this.skill = ...;
        }
    }


PS: Ich habe keine Ahnung von MongoDB, weshalb ich die Parameter der Methode nicht eingefügt habe.

09.11.2014 - 21:29 Uhr

Tritt das noch bei anderen Steuerelementen auf?

06.11.2014 - 12:49 Uhr

Was passiert denn genau? Ist der Anhang 0 Bytes groß? Hat der Anhang die richtige Größe? Warum kannst Du ihn nicht öffnen?

06.11.2014 - 12:47 Uhr

Also das machen wir schon:
es wird beim Setup folgende zeile ausgeführt:
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\CasPol.exe
-q -machine -addgroup 1.2 -url "file://R:\Unserprogramme/*" FullTrust -name "Anwendungsname"

Programme selbst befinden sich im Ordner R:\Unserprogramme\Prog

Ist der Befehl eventuell falsch?

Wir hatten mal Probleme einen FullTrust für einzelne Anwendungen zu vergeben. Ist leider schon etwas länger her, so dass ich mich nicht mehr an Details erinnern kann.

Vielleicht mal testweise folgendes probieren:
%WINDIR%\Microsoft.NET\Framework\v4.0.30319\CasPol.exe -q -m -cg LocalIntranet_Zone -allcode FullTrust

06.11.2014 - 12:43 Uhr

Der Applikationsserver könnte ein Dienst sein und die Kommunikation könntest Du mittels WCF realisieren.

06.11.2014 - 11:25 Uhr

Hier hatte jemand dasselbe Problem. Evtl. hilft Dir das.

06.11.2014 - 08:43 Uhr

Du musst die E-Mail separat in dem IMAP-Ordner speichern. Dafür kannst Du z. B. S22.Imap (NuGet Package) verwenden: https://github.com/smiley22/S22.Imap/blob/master/Examples.md

05.11.2014 - 14:30 Uhr

Liegt es evtl. an den Sicherheitszonen? Stichwort CasPol.exe und LocalIntranet_Zone?

Habt Ihr schonmal mittels procmon.exe oder procdump.exe versucht die Ursache zu ermitteln?

12.09.2014 - 10:26 Uhr

wenn man im Unterform den Owner auf das Hauptform setzt, dann bleibt das Unterform immer vor dem Hauptform. Ich habs jetzt nicht beim Minimieren ausprobiert, aber selbst wenn es da nicht auf Anhieb (automatisch) klappt, kann man das leicht programmieren.

Wenn die Untermaske immer vor der Hauptform bleibt ist die Untermaske modal.

Eine andere Möglichkeit wäre, den Inhalt des Unterforms in das Hauptform einzublenden. Dann kommt es/er auf jeden Fall wieder mit nach vorne. Je nach Situation kann man den Inhalt des Dialogs zusätzlich zu eigenlichen Inhalt einblenden oder statt des eigentlichen Inhalt (letztes z.B. mit Techniken, wie in
>
beschrieben).

Das ist definitiv eine gute Möglichkeit. Ich persönlich würde am liebsten auf alle Untermasken verzichten und nur mit Tabs arbeiten. Es gibt mittlerweile ja auch TabControls bei denen man einzelne Tabs auf verschiedene Monitore legen kann. So könnte man gänzlich auf Untermasken verzichten.

Ob ein Fenster in der Task-Leiste angezeigt werden soll, kann man zudem einfach über Form.ShowInTaskbar einstellen.

Jep, das hatten wir in dem von mir beschriebenen Fall aber extra nicht deaktiviert, weil es ja auch versierte Benutzer gibt die mit vielen gleichzeitig geöffneten Fenstern gut klar kommen und diese effektiv nutzen (z. B. auf mehreren Monitoren). Dann kam der Chef des Kunden, welcher nicht mit so vielen Fenstern klar kam und alles wurde modal X(

12.09.2014 - 09:51 Uhr

Ich finde, dass gerade Modale Dialoge die Bedienung für nicht so PC-affine Benutzer in vielen Fällen vereinfachen. Viele Benutzer kommen nicht mit mehreren, gleichzeitig geöffneten und gleichzeitig zugänglichen Fenstern klar.

Beispiel:

In der Hauptmaske von Programm A wird eine Untermaske nicht modal aufgerufen. Nachdem der Benutzer die Maske aufgerufen hat, macht er Outlook auf und möchte, nachdem er eine Mail beantwortet hat wieder zurück in sein Programm A wechseln.
Durch die nicht modale Anzeige der Untermaske werden in der Windows Taskleiste Hauptmaske und Untermaske separat angezeigt. D. h. der Benutzer klickt in der Taskleiste auf Programm A und wundert sich, wo seine Untermaske hin ist.

Diese Situation habe ich tatsächlich schon erlebt, woraufhin auf Kundenwunsch der Aufruf der Untermasken auf modal umgestellt wurde.

19.08.2014 - 11:00 Uhr

Hallo Community ich habe mal ne allgemeine Projektmanagement ausgerichtete Frage.

Ich bin alleine in mehreren Projekten und habe meistens das Problem das ich die Aufwandsschätzung einfach zu knapp einplane und dann sich Projekte überschneiden und mein ganzes Zeitmanagement ist für die Katz.

Dann plan Dir doch mal etwas (mehr) Puffer ein. Softwareentwicklung ist halt keine Fließbandarbeit, oft tauchen mitten in der Entwicklung unvorgesehene Probleme auf (z. B. mit Drittkomponenten die nicht richtig oder nicht so funktionieren wie man es wünscht).

Sicher gibt es Arbeiten bei denen man recht genau sagen kann wie lange es dauert (z. B. ein neues Feld in eine Maske implementieren). Bei größeren Projekten ist das oft sehr schwierig. Mit wachsender Erfahrung bekommt man das aber besser hin.

Viele Kunden haben überhaupt keine Vorstellung was Softwareentwicklung bedeutet, weshalb es oft schwierig ist, den benötigten Aufwand zu vermitteln.

29.07.2014 - 11:04 Uhr

@Hypersurf: Such einfach einfach mal nach TPL, Task<T>, Parallel.Foreach und Listen. Da wirst Du sicherlich etwas finden und daraus, dann ableiten koennen, wie du asynchrony und dann noch parallel Deine Liste verarbeitest
z.B.
>

Hier war vermutlich nicht ich gemeint. Mir sind die Task-Klassen bekannt 😉

Wenn man allerdings "nur" die Events aus dem BackgroundWorker verwendet, dann uebernimmt der BG den Kontext Switch fuer Dich.

Was meinst Du damit? Wenn ich Elemente im DoWork verändere, dann übernimmt der BG keinen Kontext Switch für mich.

27.07.2014 - 22:06 Uhr

Schau Dir mal den BackgroundWorker an. Der macht genau das was Du brauchst.

Du kannst die Liste mit Objekten als Argument an die RunWorkerAsync-Methode des BackgroundWorkers übergeben.
Dabei musst Du beachten, dass Du in WPF einen Dispatcher brauchst, um Elemente die an die GUI gebunden sind in einem anderen als dem GUI-Thread zu verändern.

17.07.2014 - 09:49 Uhr

-> Geht dann wohl ohne Cloud für mich weiter?

Versuchs doch mal mit Copy.com. Ich nutze das seit einem Jahr und habe 32 GB freien Speicher. Bin damit sehr zufrieden. Android-App, Windows-Programm und das Webinterface sind sehr gut.

15 GB bekommste bei der Anmeldung umsonst. Den Rest habe ich durch Aktionen und Freundschaftseinladungen bekommen.

16.07.2014 - 14:15 Uhr

Entferne mal die beiden Slashes in dieser Zeile, dann sollte es gehen:


XmlNode result = blueprint.SelectSingleNode("//Result");

Neu:


XmlNode result = blueprint.SelectSingleNode("Result");

11.07.2014 - 13:29 Uhr

Schau mal hier, da wurde die Meldung schonmal behandelt: Parallelitätsverletzung

Insbesondere der letzte Beitrag sollte Aufschluss geben.

02.07.2014 - 13:26 Uhr

Vermutlich weil keiner Lust hat, sich den ganzen Code anzuschauen. Poste halt die relevanten Code-Ausschnitte.

29.06.2014 - 23:35 Uhr

Wo wir gerade sowieso OffTopic sind. Hat jemand die Probleme von ww****w.codespaces.com mitbekommen? Ziemlich krass, wenn ein Cloud-Anbieter dermaßen "hart" angegriffen wird.

25.06.2014 - 16:59 Uhr

Vollkommen richtig mit der eigenen Domain hört der Spaß dann auf und dann muss man zahlen.
Wenn es aber nur kleinere "spielerein" sind dann reicht die Domain die man von Azure erhält (htt****p://[deinewunschdomain].azurewebsites.net)

Das kann doch mittels htaccess Rewrite ganz gut umgehen. Einfach irgendwo eine billige Domäne mit Webspace registrieren und per htaccess Rewrite die Domäne auf die azure-Subdomäne umleiten.

Hab' ich kürzlich noch gemacht und funzt 😃


RewriteEngine On
RewriteRule ^(.*)$ http://deinewunschdomain.azurewebsites.net/$1  [P,L]

17.06.2014 - 13:45 Uhr

Okay, dann lag ich mit meiner Vermutung doch richtig.

Normalerweise verwende ich kein ODBC mehr, aber in diesem Fall ist das so vom Kunden vorgegeben (weiß der Geier warum)...

Danke für die Antwort 😃

17.06.2014 - 13:32 Uhr

Hallo Leute,

ich hatte gerade ein Problem mit einer Overflow-Exception, die ich zwar gelöst, deren Ursache ich aber nicht verstanden habe. Vielleicht könnt Ihr Licht ins Dunkel bringen.

Folgende Konstellation:

Ein Programm liest Daten aus einer DB2-Datenbank (mittels der Data Provider Factory und dem ODBC-Treiber "iSeries Access ODBC Driver"). Ausgelesen werden die Daten mittels des DbDataReaders. Das Programm ist mit Any CPU erstellt und läuft auf dem Server als 64-Bit-Anwendung. Das Zielframework ist 3.5.

Jetzt wird das Zielframework des Programms auf 4.0 angehoben und sonst nichts geändert. Beim Auslesen jeglicher Daten des DbDataReaders z. B. mit

reader[spaltenname]

kommt völlig unabhängig vom Typ der Tabellenspalte eine > Fehlermeldung:

Overflow-Exception: Die arithmetische Operation hat einen Überlauf verursacht. Wird das Projekt auf x86 kompiliert funktioniert das ganze wieder.

Kann mir jemand erklären warum es sich so verhält?

Gruß hypersurf

16.06.2014 - 10:16 Uhr

Hast Du das ItemCheck-Event abonniert?

PS: Es wäre toll, wenn Du die entsprechenden BBCodes zur Formatierung Deines Codes verwenden würdest, wie Du es hier auch so schön gemacht hast 😉

13.06.2014 - 09:51 Uhr

Ich gehe mal davon aus, dass Du Windows-Forms verwendest:

Schau Dir das Event SelectedIndexChanged an. Damit kommst Du sehr leicht zur Lösung.

13.06.2014 - 07:55 Uhr

Du könntest mal folgendes probieren:

1.) Die Procedure einfach mal mittels ExecuteNonQuery("Call namederprocedure(...)") aufrufen und schauen ob es funktioniert.

2.) Diese Funktion für den Aufruf mal probieren: How to call a mySQL stored function in C#?

3.) Wenn gar nicht's hilft dann das Insert sowie das Selektieren der LAST_INSERT_ID aus der Prozedur entfernen und einzeln absetzen.

12.06.2014 - 15:33 Uhr

Bei mySQL muss man die Namen der Parameter die man übergibt doch mit einem Zeichen (? oder @ soweit ich mich erinnere) als Präfix versehen. Hast Du das mal probiert?

http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqlparameter.html

Funktioniert die Prozedur, wenn Du sie (z. B. mittels HeidiSQL) außerhalb von .NET ausführst?