Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Borg
Thema: Assembly signieren & registrieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Erst gacutil, dann ngen.
Und ansonsten - wie herbivore schrieb - einfach die Zahl der Starts auf einen pro Rechnerneustart reduzieren...

Thema: Euer Arbeitsplatz (Bilder)
Am im Forum: Smalltalk

Mein Schreibtisch sieht nicht mal so aus, nachdem ich aufgeräumt habe...
Das möchte ich euch wirklich nicht antun.

Thema: Farbskala
Am im Forum: Grafik und Sound

Zur Darstellung einfach LinearGradientBrush.

Ansonsten gibt es verschieden Möglichkeiten einen solchen Farbverlauf darzustellen.
Du könntest im dreidimensionalen linearen RGB-Farbraum einfach die Gerade zwischen den beiden Farben linear darstellen, so wie norman_timo es vorgeschlagen hat. Anstelle einer Gerade sind aber auch noch viele andere Funktionen denkbar. Du könntest auch den Farbraum logarithmisch darstellen.

Du kannst natürlich auch in einen anderen Farbraum umrechnen. Gerade der von herbivore angesprochene HSL Farbraum ermöglicht es, den Farbverlauf in einer für Menschen sehr harmonisch wirkenden Weise zu berechnen.
Allerdings gibt es auch hier wieder mehrere Möglichkeiten von einem Punkt des Farbraums zu einem anderen zu kommen.

Thema: 2 Soundkarten zusammenführen
Am im Forum: Smalltalk

Zitat
Prinzipiell möglich, jedoch ist dann das ganze nur mehr Mono
Wie kommst du denn darauf? Ich habe auch so ein Teil: vorne 3,5mm-Stereo-Klinke-Stecker, hinten zweimal 3,5mm-Stereo-Klinke-Buchse.
Sieht ungefähr so aus: Y

Thema: Threads und Priorität
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zur Klärung:
Windows verteilt Prozessorzeit mittels preemptiven Multitaskings. Das bedeutet, jeder Thread bekommt einen Zeitrahmen (Standard: 50ms), ist dieser beendet, wird der Thread angehalten und der nächste wiederaufgenommen.
Ein Thread kann drei schedulerrelevante Status haben: Running, Ready To Run oder Waiting.
Es gibt pro Prozessor nur einen Thread mit dem Status "Running". Dies ist der gerade ausgeführte. Wenn der nächste zum Zuge kommen soll, sucht der Scheduler nach Threads mit dem Status "Ready To Run" und führt denjenigen mit der höchsten Priorität aus (Status wird zu "Running"). Ist der Zeitrahmen vorbei (bzw. wird beendet), wird dieser Thread auf den Status "Ready To Run" gestellt und ein Flag gesetzt, dass er in diesem Durchlauf bereits lief.
Gibt es mehrere Threads mit gleicher Priorität wird derjenige ausgeführt, der noch kein gesetztes Flag hat. Gibt es einen solchen nicht, wird das Flag bei allen wieder entfernt.
Der Status "Waiting" wird durch bestimmte Systemfunktionen vergeben, die größtenteils ein Wait im Namen tragen. Oder auch durch Control.Invoke. Er besagt, dass der Thread zwar noch läuft, momentan jedoch nicht ausgeführt werden braucht, da er auf den Abschluß einer Aktion wartet.

Damit ist klar, warum so eine scheinbar merkwürdige Reihenfolge herauskommt.
Alle Threads beenden ihren Zeitrahmen beim Aufruf von Control.Invoke. Da sie die gleiche Priorität haben, werden sie reihum ausgeführt.
Haben sie jetzt unterschiedliche Prioritäten, so kommen die niedriger priorisierten nur dann zum Zuge, wenn alle höheren nichts zu tun haben.
Allerdings kann das Laufzeitverhalten jetzt nicht mehr vorhergesagt werden, da ja nicht genau bekannt ist, wann die per Control.Invoke in einem anderen Thread gestartetet Methode beendet ist und der Thread wieder zu "Ready To Run" zurückkehrt. In genau diesen Zeiten kommt ein niedriger priorisierter Thread zum Zug, auch er bleibt beim Control.Invoke hängen und macht "Platz" für den nächsten.

Da es jetzt aber noch ganz viele andere Threads anderer Prozesse auf dem System gibt, ist das wirkliche Verhalten noch viel komplexer.

Thema: Netzwerkkarten eindeutig identifizieren
Am im Forum: Netzwerktechnologien

Ich bin verwirrt.

Zitat
da da wirklich enorme Datenmengen zustande kommen, wenn man 1600x1200 RGB-Pixel bei ca. 30Hz transportiert.
1600x1200x3x30 => 165 MB/s.
Selbst wenn die Bilder JPEG-komprimiert (auf 10%) kommen, ergibt das 16,5 MB/s.
Falls du Fast Ethernet (100Mbps) benutzt, wovon ich ausgehe, wenn du von PCI redest, hast du eine theoretische maximale Transferleistung von rund 12MB/s. Also zu wenig.
Solltest du Gigabit Ethernet benutzen, wird das wiederum am PCI-Bus scheitern, da der in der normalen (32Bit, 33MHz) Form nur 133MB/s transferieren kann. Und das müssen sich alle Geräte teilen.
Ich vermute eher, dass die Kameras die Bilder MPEG kodieren und dann so zwischen 5 und 10 Mb/s verschicken.

Ansonsten: es kann doch deiner Software egal sein, an welcher NIC eine Kamera hängt und welche IP-Adresse sie hat. Da du die Kamera identifizieren willst, solltest du das auch tun. Wer schützt dich denn davor, dass jemand (versehentlich) Kamera 1 an NIC 2 stöpselt (und umgekehrt)? Wenn deine Software die Kamera nur über den NIC identifizieren will, öffnet das der Fehlbedienung Tür und Tor.

Falls du das dennoch willst, hast du ja schon eine geeignete Idee beschrieben.

Thema: NotifyIcon immer sichtbar
Am im Forum: GUI: Windows-Forms

Zitat
Gibt es eine Möglichkeit das NotifyIcon immer sichtbar (also nicht inaktiv) zu schalten???
Gibt es: Rechtsklick auf Taskleiste\Eigenschaften\Taskleiste\Infobereich\Inaktive Symbole ausblenden\Anpassen.
Dort kann man für jedes Icon festlegen, ob es ausgeblendet werden darf.

Und wenn der Explorer das speichert, kann man sicherlich auch herausfinden, wo und wie er das tut und dies entsprechend programmatisch anpassen.

Nichtsdestotrotz gilt, was herbivore oben gesagt hat: immer den Benutzer entscheiden lassen, wenn die Voreinstellungen von Windows/Explorer geändert werden sollen.

Thema: 2 Soundkarten zusammenführen
Am im Forum: Smalltalk

Prinzipiell ist das möglich, indem du einen Treiber schreibst, der eine virtuelle Soundkarte ins System einbindet und die Kanäle verteilt.

Allerdings (erstens) verlässt du damit den Bereich von .NET deutlich und (zweitens) wird das derart kompliziert, dass es billiger ist, in ein Programm zu investieren, welches von Haus aus mehrere Soundkarten unterstützt.

Thema: Fenster auf dem zweiten Bildschirm
Am im Forum: GUI: Windows-Forms

Der oben verlinkte Code ist ja schrecklich!

Aber auch dort steht, dass das ganze Geheimnis in der einfachen Zeile myForm.StartPosition = FormStartPosition.Manual; besteht.

Thema: Bytestrom durchsuchen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich möchte halb widersprechen.

Mir klang der erste Post nicht so, als ob eine Bitfolge gesucht würde. Wenn das der Fall sein sollte, hast du, talla, natürlich Recht.
Allerdings werden bei den meisten binären Dateien Werte wirklich byteweise geschrieben, so dass man auch nur byteweise suchen braucht. Dadurch würde der Code deutlich einfacher. Allerdings wird der bremsende Faktor eh die Festplatte sein, so dass es aus Performancegesichtspunkten keinen Unterschied macht.

Ein bitweises Suchen ergibt meist nur bei Bitstreams Sinn, wie zum Beispiel alle MPEG-Dialekte oder andere Audio- und Videoformate.

Thema: Fenster auf dem zweiten Bildschirm
Am im Forum: GUI: Windows-Forms

Alle Monitore bilden bei Windows eine virtuelle Anzeige.
Die primäre Anzeige (die mit der großen 1) bekommt immer als erstes Koordinaten von 0/0 (links oben) bis [horizontale Auflösung-1]/[vertikale Auflösung-1] (rechts unten).
Alle anderen Monitore können darum angeordnet werden (einfach mal in den Anzeigeneigenschaften Drag&Drop des Sekundärschirms probieren). Dabei wird auch deren "Verknüpfung" zum Primärschirm angezeigt. Prinzipiell gibt es zwei Verknüpfungsarten: Ecke oder Zentrum. Bei der ersten liegen die Ecken aneinander, bei der zweiten die Zentren der entsprechenden Seite.

Diese zusätzlichen Monitore bekommen dann ihrer Position zum Primärschirm entsprechend Koordinaten. Diese können daher auch negativ sein.

Um die Form entsprechend zu positionieren (genauer: um auch Koordinaten zuzulassen, die nicht mit Sicherheit sichtbar sind), muss Form.StartPosition auf Manual gesetzt sein.

Thema: Excel Format Time in C# einlesen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

DateTime myDT = (new DateTime(0)).AddDays( 0.5557 );

PS: Da du neu bist, ganz nett: Bitte keine Crossposts! Ansonsten herzlich willkommen.

Thema: Netzwerkkarten eindeutig identifizieren
Am im Forum: Netzwerktechnologien

Müssten die Kameras nicht unterschiedliche IP-Adressen haben? Oder eine Seriennummer?

Wenn ich dich nämlich richtig verstanden habe, willst du eigentlich gar nicht die NIC, sondern ein entferntes Gerät identifizieren. Dies anhand der Route zu machen ist jedoch in einem selbständig routenden Protokoll (IP) unsinnig...

Thema: Button in Taskleiste blinken lassen.
Am im Forum: GUI: Windows-Forms

Symbol in Taskleiste aufleuchten lassen???

Thema: Bytestrom durchsuchen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat
du schaust wirklich bitweise
Vermutlich wird byteweise reichen...

Thema: Zugriff auf markierte Datei, Explorer
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

\Programme\Gemeinsame Dateien\ (bzw. %CommonProgramFiles%).

Der andere Ordner heißt ja nicht umsonst "Windows"...

Thema: Passwort übertragen
Am im Forum: Web-Technologien

Aber bitte den Hash nicht so erstellen:

Zitat
Original von jstolz

string test = "test";
int hashCode = test.GetHashCode();

Sondern:

string test = "test";
byte[] hash = (new SHA512Managed()).ComputeHash( Encoding.GetBytes( test ));

Thema: Generische Collections / List
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich verstehe nicht ganz, wieso du die Koeffizienten unbedingt benennen willst. Das wird nur in der Sekundarstufe I so gemacht, später nicht mehr. Jedenfalls nicht bei allgemeinen Definitionen u.ä. Was machst du bei einem Polynom 27. Grades?

Und wenn du schon eine Liste mit den Koeffizienten, dann solttest du nur List<T>.AsReadOnly weitergeben.

Kurz: ich halte den Ansatz mit den benannten Koeffizienten für ineffektiv und unpraktisch und damit einfach für falsch.

Thema: Problem mit Service und ManagementEventWatcher
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Du darfst ja auch nicht den angezeigten Namen verwenden, sondern den Dienstnamen. Und der lautet für Workstation bzw. Arbeitsstationsdienst halt "lanmanworkstation"...

Thema: Reaktion auf das Öffenen eines Programms, aber wie?
Am im Forum: Rund um die Programmierung

Mittels System.Diagnostics.EventLog.

EventLog myLog = new EventLog( "Security" );
myLog.EntryWritten += new EntryWrittenEventHandler( myLogWatcher );
myLog.EnableRaisingEvents = true;

// ...

public void myLogWatcher( object sender, EntryWrittenEventArgs e )
{
   // alles über das Event steckt in e.Entry (soll heißen: Breakpoint und einfach mal schauen...
   switch( e.Entry.InstanceID )
   {
      case 592: // Prozess gestartet
         // was auch immer
         break;
      case 593: // Prozess beendet
         // was auch immer
         break;
      default:
         return;
   }
}

EDIT: Achtung, zum Auslesen des Sicherheitslog braucht man Admin- oder System-Rechte. Am besten ist es also, das ganze in einen Service auszulagern.

Thema: Reaktion auf das Öffenen eines Programms, aber wie?
Am im Forum: Rund um die Programmierung

Das kann Windows auch mit Bordmitteln.

Zuerst musst du in "Lokale Sicherheitsrichtlinie\Sicherheitseinstellungen\Lokale Richtlinien\Überwachungsrichtlinie" die Überwachung "Prozessverfolgung überwachen" für "Erfolgreich" aktivieren.

Dadurch wird im Sicherheitslog ein Ereignis mit der Kennung 592 erzeugt, wenn ein neuer Prozess gestartet wurde, nach dem Beenden mit der Kennung 593.
Alles, was dein Programm dann noch tun muss, ist das Sicherheitslog zu überwachen.

Thema: Geöffnete Datei kopieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Die Lösung nennt sich Volume Shadow Copy Service (VSS).

Thema: Funkarmbanduhr mit Binäranzeige gesucht
Am im Forum: Smalltalk

Ich wusste bis eben ehrlich gesagt nicht, dass es so etwas überhaupt gibt...

Welchen Sinn hat das eigentlich, außer halt Besuch zu beeindrucken und zu der Einsicht zu verleiten, dass man ein ganz großer Nerd ist?

Und wenn das der einzige Sinn ist, kann man diesen Faktor sicherlich noch steigern, indem man sich eine derartige Uhr selbst als Funk- und Armbanduhr bastelt.

Also: Lötkolben frei...

Thema: MyCSharp-Lesezeichen
Am im Forum: Smalltalk

Das Problem hatte ich auch mal.
Lesezeichen entfernen, auf die Seite gehen, solange refreshen, bis das Icon in der Adresszeile richtig aagezeigt wird und dann mit Strg-D neu "verlesezeichen".

Thema: Generische Collections / List
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Also ich würde es so machen:

public interface IFunctionRxR
{
   double F( double x );
}

public class PolynomRxR : IFunctionRxR
{
   private double[] Koeffizienten;
   public int Grad
   {
      return Koeffizienten.Length;
   }
   public PolynomRxR( double[] Koeff )
   {
      Koeffizienten = Koeff.Clone();
   }
   public double F( double x )
   {
      // Horner-Schema
      double Summe = 0.0;
      for( int i = Koeffizenten.Length - 1; i  ≥ 0; i-- )
      {
         Summe = Summe * x + Koeffizienten[i];
      }
      return Summe;
   }
}

// Benutzung:
// f(x) = 3x³ - 2x² + x + 0.5
PolynomRxR myPolynom = new PolynomRxR( new double[] { 0.5, 1, -2, 3 } );
double value = myPolynom.F( 7 );

Jetzt könntest du noch Operationen auf den Polynomen definieren, also Addition, Subtraktion, Multiplikation, Potenz.
Ein Polynom kann man auch sehr leicht ableiten...

Thema: Funkarmbanduhr mit Binäranzeige gesucht
Am im Forum: Smalltalk

Du meinst sicherlich eine Digital- und keine Binäruhr, oder?!

Aber auch mir ist schon mal aufgefallen, dass die Auswahl an Funkuhren mit Digitalanzeige relativ klein ist.
Nichtsdestotrotz kann dir die Liste unter http://www.idealo.de/preisvergleich/ProductCategory/5292F305225-468843.html vielleicht weiterhelfen.

Thema: Application.StartupPath in Konsolenanwendung
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Oder auch: Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName)

Thema: Anzahl Nachkommastellen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

public int f( object value )
{
   return -12;
}

Thema: Laufwerk sperren/verstecken
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Wie jetzt? Was soll das heißen: eine Lösung gibt es nicht? Schreib die Bedingung ordentlich und gut ist.

Thema: Passwort übertragen
Am im Forum: Web-Technologien

Für HTTPS benötigst du nur ein Zertifikat, dass kannst du dir aber selbst erstellen. Bezahlen musst du nur, wenn du das Zertifikat auch von einer CA (etwa Verisign o.ä.) zertifizieren lassen willst.

Für die reine Verschlüsselung ist das aber unnötig. Es kommt dann beim Verbinden im Browser zwar immer die Meldung, dass die Identität des Zertifikats nicht verifiziert werden konnte (logisch), allerdings brauchst du das Zertifikat bloß einmal in den Zertifikatsspeicher zu importieren und schon ist Ruhe.

Verschlüsselung per HTTPS geht trotzdem und kostet nichts.

Nur wenn du Wert darauf legst, dass jeder Nutzer in jedem Browser automatisch deinem Verisign (o.ä.) zertifizierten Zertifikat vertraut, kostet das was.
In einer Firmenumgebung kann man zum Beispiel allen Rechnern die firmeninterne CA als vertrauenswürdig installieren und schon gilt das auch für alle von ihr ausgestellten Zertifikate.