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 Spook
Thema: Auslesen aus Byte Array und umwandeln zu Double
Am im Forum: Rund um die Programmierung

Hallo Sumsum,

ich vermute, dass file_buf ein byte-Pointer ist (char*/unsigned char*/BYTE*).
Was willst du mit dem shiften erreichen? Vermutlich shiftest du einen byte Wert!?

Wenn du einen double auslesen willst, sollte der Code von Th69 funktionieren (dieser castet deinen byte-Pointer in einen double-Pointer).
Prüfe doch bitte erstmal was für einen Pointer-Typ du hast. Dann stell sicher, dass du an die richtige Stelle zugreifst (Index-Operation) um den double zu lesen. Dann könnte es noch sein, dass der Wert als BigEndian gespeichert wurde?!

Grüße
spooky

Thema: Text-Suchfunktion in WPF
Am im Forum: GUI: WPF und XAML

Zitat von p!lle
Das Weitersuchen funktioniert auch mit seinem Code.
Nur wenn das letzte Vorkommnis gefunden wurde, gibt es 1x keinen Treffer - in beiden Varianten.


Nicht, wenn der gesuchte Text an Index 0 steht ... (beide Bedingungen sind false, und so wird immer an 0 gesucht aber es passiert nichts!

Thema: Text-Suchfunktion in WPF
Am im Forum: GUI: WPF und XAML

Hallo marlem,

du ignorierst den den Fall, dass ein Treffer auch an Index 0 sein kann.
So sollte das Suchen durch den gesamten Text funktionieren (auch mehrmalig).


                gefunden = TBXEditor.Text.IndexOf(edtSuchen.Text,Math.Max(gefunden, 0));

                if (gefunden ≥ 0)
                {
                  TBXEditor.SelectionStart = gefunden;
                  TBXEditor.SelectionLength = edtSuchen.Text.Length;
                  TBXEditor.Select(gefunden, edtSuchen.Text.Length);
                  gefunden++;
                }

Grüße
spooky

Thema: Suchen und Finden von eine Dateinamen in Ordner + Unterordner
Am im Forum: Grundlagen von C#

Hallo Marccore,

mit dieser Methode kannst du direkt filtern und bekommst nur passende Dateien zurück:
Directory.GetFiles

z.B.:

Directory.GetFiles(".", "*990320*", SearchOption.AllDirectories);

Grüße
spooky

Thema: Bitmap öffnen ohne Datei zu sperren
Am im Forum: Grafik und Sound

Hallo Gimmick,

ich würde die Daten einlesen und diese dann weiterverwenden:


            MemoryStream stream = new MemoryStream(File.ReadAllBytes(filename));
            Bitmap bitmap = new Bitmap(stream);

Grüße
spooky

Thema: Definition wird nicht gefunden, ist jedoch in der AppDomain gelistet
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Stu42,

wenn der Typ aus dem typeof-Ausdruck nicht gefunden werden kann, dann bekommst du eine FileNotFoundException mit der Information, dass Assembly XYZ, Version=.... oder eine Abhängigkeit davon nicht geladen werden konnte. Er kann also eigentlich nicht null sein. Ist es vielleicht nur ein Anzeigeproblem von Visual-Studio?


Grüße
spooky

Thema: Forms Awendung: Mauszeiger soll Form nicht verlassen können
Am im Forum: GUI: Windows-Forms

Vielleicht hilft dir die ClipCursor function weiter.

Grüße
spooky

Thema: OpenCV: Unrecognized or unsupported array type
Am im Forum: Rund um die Programmierung

Hallo Stauch30,

ich denke nicht, dass es am CircleF Array liegt, da dieses im Wrapper manuell erzeugt wird. Die Fehlermeldung kommt vom Methodenaufruf selber.
Kannst du prüfen, ob dein Input-Image immer 8-bit, single channel ist.

Grüße
spooky

Thema: Schnelle Konvertierung von Grayscale zu RGB (WPF)
Am im Forum: Grafik und Sound

Hallo Th69,

dann ist deine Antwort natürlich richtig.

Grüße
spooky

Thema: Schnelle Konvertierung von Grayscale zu RGB (WPF)
Am im Forum: Grafik und Sound

Hallo robbb26,

bei mir funktioniert es (siehe screenshot).


grüße
spooky

Thema: Schnelle Konvertierung von Grayscale zu RGB (WPF)
Am im Forum: Grafik und Sound

Hallo robbb26,

ich würde dies mit einer lookup table lösen:

  [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct RGB24
    {
        public byte B;
        public byte G;
        public byte R;

        public RGB24(byte value)
        {
            B = value;
            G = value;
            R = value;
        }
    }

    public class ImageConverter
    {
        private RGB24[] _lut;

        public ImageConverter()
        {
            _lut = new RGB24[256];
            for (int i = 0; i < _lut.Length; i++)
            {
                _lut[i] = new RGB24((byte)i);
            }
        }

        public unsafe byte[] ToRGB24(byte[] data)
        {
            byte[] result = new byte[data.Length * 3];
            fixed (byte* bptr = result)
            {
                RGB24* ptr = (RGB24*)bptr;
                for (int i = 0; i < data.Length; i++)
                {
                    ptr[i] = _lut[data[i]];
                }
            }
            return result;
        }
    }

Grüße
spooky

Thema: Nach GetFiles Pfad zu den Dateien ermitteln
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

FileInfo-Klasse
FileSystemInfo.FullName-Eigenschaft

sollte dir weiterhelfen.

grüße

Thema: ComPort öffnen schlägt fehl
Am im Forum: Rund um die Programmierung

Hallo Hummakavula,

SerialPort.GetPortNames aufrufen und schauen, ob der Port gelistet wird.

grüße
spooky

Thema: C# / Mono um Scriptsprache erweitern
Am im Forum: Rund um die Programmierung

Zitat von burli70
Wie sieht es denn mit der Performance von C# Scripten aus? Ist das genauso schnell wie normaler C# Code?

Ja, dieser ist so schnell wie C# Code. Er wird wie der "normale" Code vor der ersten Ausführung vom JIT kompiliert, d.h. der erste Aufruf ist minimal langsamer.

Thema: Ist Mono geeignet für Sandbox Spiele wie Minecraft?
Am im Forum: Grundlagen von C#

Analysing Pause times in the .NET GC

Thema: Ist Mono geeignet für Sandbox Spiele wie Minecraft?
Am im Forum: Grundlagen von C#

Die Frage ist wie lange der GC die Anwendung anhalten kann, ohne dass es den Benutzer stört. Dies hängt natürlich von mehreren Faktoren ab: Runtime, GC Konfiguration, Größe der Anwendung, erwartete Framerate, ...

Wenn du dieses Risiko nicht eingehen willst, dann müsstest du direkt eine Umgebung ohne GC verwenden.
Dabei solltest du bedenken, dass die GC-Zeiten wachsen werden, wenn deine Anwendung wächst. D.h. dies kann sich erst im Laufe der (Weiter)Entwicklung bemerkbar machen.

Hier ein Artikel der dir möglichweise weiterhilft:
Fundamentals of Garbage Collection

Thema: Download Methode bring Server in den Status "No buffer space available"
Am im Forum: Netzwerktechnologien

Hallo,

writer.Write(buffer, 0, bytesRead);

müsste es noch heißen.

Grüße
spooky

Thema: VS2015 - Datei mit selbst erstelltem Zertifikat wird ohne Signatur erstellt
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo marabunta,

die .NET Assembly mit einem starken Namen zu versehen ist nicht das gleiche wie die DLL oder EXE mit einem Zertifikat zu signieren (das du z.B. im Windows Explorer angezeigt bekommst).

Das hilft dir möglicherweise weiter:
Strong-Named Assemblies.

Grüße
spooky

Thema: Klärung der Begriffe "LockBit", "Marshal", "verwalteter Speicher" und "nicht verwalteter Speicher"
Am im Forum: Grundlagen von C#

Hallo Gimmick,

deine Methode BildArray() behandelt das mögliche Speicherlayout von Bildern nicht korrekt.
Weder achtest du auf Padding-Bytes, noch darauf, dass die Stride negativ sein kann (damit meine ich nicht, dass du diese mit Math.Abs positiv machst).
Wenn die Stride negativ ist, so liegt das Bild im Speicher Bottom-Up anstatt Top-Down, ergo kannst du nicht von Scan0 aus einfach das Bild kopieren.

Du musst entweder jede einzelne Zeile des Bildes kopieren und dabei auch die möglichen Padding-Bytes berücksichtigen. Oder du machst es dir etwas einfacher, und schreibst dir diese Methode so um, dass diese keine Konversion macht und byte[] zurückgibt. Dann musst du weder Stride noch Padding-Bytes berücksichtigen.

In der Methode button1_Click() solltest du den Rückgabewert zwischenspeichern und wiederverwenden, da du ansonsten bei jedem Durchlauf die Umwandlung zwei Mal durchführst.

Grüße
spooky

Thema: fixed CHar[] in ASCII definieren und als string ausgeben
Am im Forum: Grundlagen von C#

Hallo Gerri3d,

wenn die Daten extern ASCII sind, würde ich als Datentyp in deiner Struct byte verwenden anstatt char. Damit kannst du dann auch einfacher mit Hilfe von ASCII Encoder die Bytes in einen String umwandeln.

PS: ANSI ist meines Wissens nach 1 Byte pro Zeichen.

Grüße
spooky

Thema: Nicht genügend Quoten, um den angeforderten Dienst auszuführen bei Dauerbetrieb
Am im Forum: GUI: WPF und XAML

Hallo,

warum schreibst du in einer WPF-Anwendung in die Konsole? Hast du diese umgeleitet in eine Datei oder manuell eine Konsole geöffnet?

Entferne die Console.WriteLine(..) Aufrufe (die ja den Fehler auslösen) und schau ob das Programm dann korrekt funktioniert.
Dann kannst du auch den Handle "Leak" ausschließen.

Grüße
spooky

Thema: Nicht genügend Quoten, um den angeforderten Dienst auszuführen bei Dauerbetrieb
Am im Forum: GUI: WPF und XAML

Hallo PoWl,

könntest du bitte den Code der Methode "P_Slideshow_Vorabversion.MainWindow.<ImageChangeTimer_Tick>d__24.MoveNext()" posten. Vielleicht kommen wir damit weiter.

Danke

spooky

Thema: Rechteck in OnRender() von System.Controls.Image über Imagesource zeichnen
Am im Forum: GUI: WPF und XAML

Hallo ByteDevil,

dieser Code zeichnet bei mir über das verwendete Bild:

    public class Test : Image
    {
        protected override void OnRender(DrawingContext dc)
        {
            base.OnRender(dc);
            var size = RenderSize;
            dc.DrawRectangle(Brushes.Red, null, new Rect(size.Width / 4, size.Height / 4, size.Width / 2, size.Height / 2));
        }
    }

Grüße
spooky

Thema: Wie kann man Bitmap in HBITMAP konvertieren?
Am im Forum: Grafik und Sound

Hallo doubleII,

wenn in der C++ Funktion der Parameter vom Typ HBITMAP* definiert ist, dann definiere den Parameter in C# mit ref:

[DllImport("Toolbox.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl, EntryPoint = "Execute")]
static extern int Execute(uint count, ref HBITMAP bmp);


Grüße
spooky

Thema: RGB Werte aller Pixel eines Bildes überprüfen mit Lockbits
Am im Forum: Grafik und Sound

Es müsste

data.PixelFormat = PixelFormat.Format24bppRgb; // <--
sein.

Grüße
spooky

Thema: RGB Werte aller Pixel eines Bildes überprüfen mit Lockbits
Am im Forum: Grafik und Sound

Hallo Elias,

Zitat
Wenn ein Bild ein bestimmtes Pixelformat hat, lässt sich das Bild dann in jedes beliebige andere Pixelformat umwandeln?

du kannst das Format einfach beim Locken der Bitmap angeben. Du kannst sogar gleichzeitig die Konvertierung in einen von dir verwendeten Speicher vornehmen:

struct BGR
{
    public byte B;
    public byte G;
    public byte R;
}

static BGR[,] GetPixels(Bitmap bitmap)
{
    Contract.Requires(bitmap != null);

    BGR[,] pixels = new BGR[bitmap.Height, bitmap.Width];
    GCHandle handle = GCHandle.Alloc(pixels, GCHandleType.Pinned);
    try
    {
        BitmapData data = new BitmapData();
        data.PixelFormat = PixelFormat.Format24bppRgb;
        data.Width = bitmap.Width;
        data.Height = bitmap.Height;
        data.Stride = bitmap.Width * 3;
        data.Scan0 = handle.AddrOfPinnedObject();
        data = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly | ImageLockMode.UserInputBuffer, bitmap.PixelFormat, data);
        bitmap.UnlockBits(data);
    }
    finally
    {
        handle.Free();
    }
    return pixels;
}

Hier ist das Ausgabeformat 24bpp BGR. Du kannst natürlich die Struct für den einzelnen Pixel und das Format entsprechend anpassen (Stride nicht vergessen).
Ob die Konvertieren wirklich alle Formate beliebig konvertieren kann, kann ich dir nicht sagen.

Grüße
spooky

Thema: [erledigt] Wie übersetze ich das Feld "char szAccess[2]" aus einer C++ lib in C#?
Am im Forum: Rund um die Programmierung

Hallo,

du könntest es als byte[] definieren und mit mit dem MarshalAs Attribut in Kombination mit UnmanagedType.ByValArray und SizeConst=2 versehen.

Grüße
spooky

PS: char aus C++ ist in .NET byte.

Thema: Ablauf/ Struktur einer Echtzeit Anwendung (hier 33ms ) Bildschirm Darstellungsproblem
Am im Forum: Rund um die Programmierung

Hallo luciluke,

du könntest dir folgende Dinge anschauen:

Multimedia Timer Dieser bietet eine bessere Auflösung als die im Framework vorhandenen Timer (~1ms).

Zusätzlich kann der GC selbst die Anwendung anhalten, was zu Rucklern führt. Ganz besonders bei full blocking collections. Möglichweise das was du als Ungleichmäßig beschreibst. Dort kann dir möglichweise die Verwendung von SustainedLowLatency weiterhelfen.

Du kannst auch die Auflösung des Windows Schedulers selbst erhöhen, so dass dieser nicht bei ~15ms liegst sondern bei 0.5ms. NtSetTimerResolution
NtQueryTimerResolution
NtSetTimerResolution

Grüße
spooky

Thema: Fakultät von Int wird bei 22 negativ, dann wieder positiv
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

22! viel größer als Int32.MaxValue (2^31-1)
Daher hast du Überläufe vom Positiven ins Negative und wieder zurück.

Mit BigInteger sollte es gehen.

Thema: Assembly zu eigener Assembly hinzufügen, die einen starken Namen hat
Am im Forum: Rund um die Programmierung

Die Datei muss nicht eingebettet werden. Diese kann einfach nachträglich signiert werden.