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 Floste
Thema: DLL (C++) in C# einbinden: Unable to find an entry point named 'X' in DLL 'y.dll'
Am im Forum: Rund um die Programmierung

Nana im c#code einfach den entrypoint explizit anzugeben ist im konkreten fall sicherlich einfacher.

Ich habe aber auch schon von deinem extern "C"-trick gelesen. Allerdings hat er bei mir nicht wirklich funktioniert, als ich den probiert hatte. Hat zu haufenweise unerklärlicher fehler geführt.

Thema: Wie funktionieren eigentlich Timer-Klassen?
Am im Forum: Rund um die Programmierung

Zitat
Alternativ und sehr beliebt z.B. bei Direct-X Entwicklern ist auch der QueryPerformanceCounter der Hardware gestützt läuft.

Zum 100tausensten mal:

Stopwatch bietet bereits die Funktionalität aus queryperformanceTimer an!!! Man braucht keine externen Apis dafür!

Thema: DLL (C++) in C# einbinden: Unable to find an entry point named 'X' in DLL 'y.dll'
Am im Forum: Rund um die Programmierung

Zitat
ekorierter Name: [email protected]@[email protected] --> ist keine gültige Syntax
Damit hast du rausgefunden, dass folgendes nicht stimmt:
Zitat
Einen EntryPoint bei DllImport brauche ich ja nicht, da beide Funktionen (DLL und C#) gleich lauten.
Damit wäre dein Problem sogut wie gelöst:


[DllImport("dllname.dll",EntryPoint="[email protected]@[email protected]")]
....
Zitat
Es gibt noch eine C-Funktion: C_GetValue. Bei deren Aufruf kommt aber der Fehler "PInvokeStackImbalance was detected".

Das kann vier mögliche Gründe haben:
a) Parameterzahl stimmt nicht überein
b) Callingconvention stimmt nicht überein. Diese lässt sich im dllimport-attribut explizit angeben. Da die funktion keine Dekoration hat, ist es höchstwahrscheinlich cdecl
c) Falsche typen bzw falsche Umwandlung (Marshaling)
d) Fehlerhafter c-code (Es ist schon eine Kunst derartige Fehler unabsichtlich so einzubauen, dass sie immer auftreten.)

Thema: Compilerswitch 32bit/64bit (Bedingte Compilierung)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

man kann auch die dlls in unterverzeichnisse packen und je nachdem Environment.CurrentDirectory im Programm setzen, um so die richtige Dll-verion zur Laufzeit auszuwählen.
Interops lassen sich mit IntPtr auch oft so schreiben, dass sie für beide versionen gehen (IntPtr hat immer die größe eines Pointers)

zur Laufzeit kann man IntPtr.Size abfragen. Damit kann man oft eine Version für alle Fälle bauen.

Thema: DLL (C++) in C# einbinden: Unable to find an entry point named 'X' in DLL 'y.dll'
Am im Forum: Rund um die Programmierung

1.) genaue fehlermeldung: entrypoint not found oder dll not found?
2.) betrachte die dll im dependency walker (depends.exe) und kopier den exakten namen (c++ dekoriert namen gerne)
3.) wenn name garnicht in der liste auftaucht: in deiner dll muss die funktion als __declspec(dllexport) gekennzeichnet sein
4.) du kannnst dir das ganze auch sparen, wenn du c++ interop machst (c++ für clr compilierst)

Thema: Bedeutung von \uxxxx in Strings
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat
Sorry, aber das stimmt so nicht. UTF-8 bedeutet nicht, dass es eine Länge von 8-Bit hat. UTF-8 Zeichen können entweder normale 8 Bit Folgen sein, wo sie der ASCII Darstellung entsprechen, oder 2-4 Byte lange Ketten

Schon wahr, aber die standardteichen sind bei utf-8 eben 1 byte lang und bei utf-16 eben 2 bytes lang. Und wie schon erwähnt wurde folgen auf \u zwei bytes. Daher ist utf16 eindeutig treffender.

Thema: Treeview mit mehreren tausend einträgen zu langsam
Am im Forum: Web-Technologien

Zitat
Wie ist es denn möglich bei einer Webseite im Hintergrund zu laden ?

Ajax! Ich weiß twar nicht inwieweit asp.net dies automatisch verwendet, aber wenn man das javascript selber schreibt ist es keinerlei problem.
Zitat
Das ändert aber nichts an dem Problem das beim Postback die ganzen Einträge mit übermittelt werden und somit das reagieren auf den klick sehr lange dauert...

Standard-postbacks lassen sich mit etwas trixerei umgehen (post lässt sich auch mit einem iframe oder einem xmlhttprequest machen).

Das ist beides wohl nicht das standardverfahren und deshalb etwas aufwändiger, aber ich bin mir sicher, es sit machbar.

Thema: Treeview mit mehreren tausend einträgen zu langsam
Am im Forum: Web-Technologien

Im hintergrund die nächste Ebene nachladen?

Also erst nur die laden die angezeigt werden und dann mit geringerer priorität im hintergrund die knoten eine ebene tiefer nachladen, die nicht angezeigt werden?

Thema: Einsatz von (mehreren/schnellen) Timern
Am im Forum: Rund um die Programmierung

Die
Stopwatch-klasse verwendet intern Performancecounter.

Thema: Einsatz von (mehreren/schnellen) Timern
Am im Forum: Rund um die Programmierung

Zitat
10ms
Dafür ist wohl ein multimedia-timer am besten, die anderen habe iene Auflösung von ca. 15ms

Thema: Handle des Konsolenfensters ermitteln
Am im Forum: GUI: Windows-Forms

Zitat
SendMessage funktionert bei WinForms nicht, da die UI nicht nativ ist. Die Controls bei WinForms haben zwar einen Handle, aber es funktioniert nicht.

Du bist mir lustig. Winforms controls sind nur hüllen um die nativen controls. Und sendmessage geht sehr wohl!!!

Allerdings werden die messages durch überschreiben jeder einzelnen messageprozedur abgefangen anstatt nur die des hauptfensters zu überschreiben. man muss also direkt die meldungen senden, anstatt WM_COMMAND an das hauptfenster zu senden. Das ist allerdings eher noch einfacher als WM_COMMAND zu verwenden^^

Allerdings gibt es tatsächlich ein problem: Das ab windows vista eingebaute sicherheitsfeature UIPI.

In jedem falle funktioniert sendmessage für winforms-controls aber genauso wie für native!

Jetzt schreib ich aber auch mal, wie man an das consolen-handle kommt:
http://www.pinvoke.net/default.aspx/kernel32.getconsolewindow

Thema: Pakete decodieren
Am im Forum: Netzwerktechnologien

Du kannst mal bei mir reinschauen. Bei tcp decodieren gibt es einiges zu beachten: die pakete kommen nicht unbedingt in der richtigen reihenfolge an (ist eine häufige folge von packetdrops als geschwindigkeitsregulierung)

HTTPSaver (der quellcode ist ganz unten auf der verlinkten seite)

Thema: Hello World kompliziert
Am im Forum: Smalltalk

Zitat
Du hast wohl das C in C#, wohl etwas zu wörtlich genommen..
Ähh nö, das ist in assembler geschriebn. Ok, inline assembler in c++, aber das ist auch nur assembler mit nem rahmen aus c++, den ich aber durch c# ersetzt hab.

Thema: Hello World kompliziert
Am im Forum: Smalltalk

Auch interressant:

using System;
class Program
{
    static unsafe void Main(string[] args)
    {
        if (IntPtr.Size != 4)
            throw new Exception("Ich habe 32 Bit bestellt und nicht "+(IntPtr.Size*4));
        byte[] b =
        {
            0x55, 0x56, 0x8b, 0xec, 0x33, 0xc9, 0x64, 0x8b, 0x71, 0x30, 0x8b, 0x76,
            0x0c, 0x8b, 0x76, 0x1c, 0x8b, 0x46, 0x20, 0x8b, 0x56, 0x08, 0x8b, 0x36,
            0x66, 0x39, 0x48, 0x18, 0x75, 0xf2, 0x33, 0xc0, 0x66, 0x8b, 0x42, 0x3c,
            0x8b, 0x44, 0x10, 0x78, 0x03, 0xc2, 0x8b, 0x58, 0x20, 0x03, 0xda, 0x33,
            0xf6, 0x46, 0x8b, 0x0c, 0xb3, 0x81, 0x7c, 0x11, 0x02, 0x74, 0x53, 0x74,
            0x64, 0x75, 0xf2, 0x81, 0x7c, 0x11, 0x09, 0x64, 0x6c, 0x65, 0x00, 0x75,
            0xe8, 0x8b, 0xfe, 0x46, 0x8b, 0x0c, 0xb3, 0x81, 0x7c, 0x11, 0x03, 0x74,
            0x65, 0x43, 0x6f, 0x75, 0xf2, 0x81, 0x7c, 0x11, 0x0a, 0x6c, 0x65, 0x41,
            0x00, 0x75, 0xe8, 0x8b, 0x58, 0x24, 0x03, 0xda, 0x33, 0xc9, 0x66, 0x8b,
            0x0c, 0x73, 0x8b, 0xf1, 0x33, 0xc9, 0x66, 0x8b, 0x0c, 0x7b, 0x8b, 0xf9,
            0x8b, 0x58, 0x1c, 0x03, 0xda, 0x8b, 0x34, 0xb3, 0x03, 0xf2, 0x8b, 0x3c,
            0xbb, 0x03, 0xfa, 0x33, 0xc9, 0x51, 0x54, 0x6a, 0x0e, 0xe8, 0x0e, 0x00,
            0x00, 0x00, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x57, 0x6f, 0x72,
            0x6c, 0x64, 0x21, 0x00, 0x6a, 0xf5, 0xff, 0xd7, 0x50, 0xff, 0xd6, 0x8b,
            0xe5, 0x5e, 0x5d, 0xc3
        };
        Action a = DoNonsense;
        Vars vars=new Vars{a=a,b=IntPtr.Zero};
        for (int i = 0; i < b.Length; i++)
            ((byte*)(((IntPtr*)((&vars.b)[-1]))[3]))[i] = b[i];
        a();
        Console.ReadLine();
    }

    struct Vars
    {
        public object a;
        public IntPtr b;
    }

    static void DoNonsense()
    {
        GC.KeepAlive('B');
        GC.KeepAlive('y');
        GC.KeepAlive('e');
        GC.KeepAlive(',');
        GC.KeepAlive('W');
        GC.KeepAlive('o');
        GC.KeepAlive('r');
        GC.KeepAlive('l');
        GC.KeepAlive('d');
        GC.KeepAlive('!');
        GC.KeepAlive(0xBADF00DBADF00Du);
        GC.KeepAlive(0xBADABADABu);
        GC.KeepAlive(0xACu);
        GC.KeepAlive("Mir gehen die Ideen aus");
        GC.KeepAlive(0x10000000000001u);
        GC.KeepAlive(0x10000000000010u);
        GC.KeepAlive(0x10000000000011u);
        GC.KeepAlive(0x10000000000100u);
        throw new Exception("Bullshit!");
    }
}
Ich garantiere dafür, das es nichts weiter macht als Hallo Welt auszugeben.

Thema: Wie ist asp.net gesichert?
Am im Forum: Web-Technologien

Es geht eher um shared-server, wo mehrere anwendungen verschidener benutzer drauf liegen. Und meine frage ist eher allegemein nach den technischen hintergründen.

Thema: Wie ist asp.net gesichert?
Am im Forum: Web-Technologien

Ich habe einmal probiert, ob man von einer aspx-seite aus cmd.exe starten kann. Zu meiner großen überraschung ging es bei mir lokal (development server). Ohne es getestet zu heben, gehe ich mal davon aus, das soetwas bei einem anbieter von shared hosting nicht gehen kann.

Und jetzt frage ich mich: Wie begrenzen hoster, die asp.net hosten die rechte ihrer kunden:
-wird für jeden kunden eine virtuelle maschine oder ein eigener benutzeraccount angelegt?
-Wie wird die größe des webspace beschränkt?
-Wie wird verhindert, das programme gestartet werden?
-Wie wird verhindert, das man passwörter aus den quelltesten/scripten anderer leute ausließt?
-Wird eine andere Version des .net frameworks eingesetzt?

Thema: Benachrichtigungen von CD-Laufwerk erhalten
Am im Forum: Rund um die Programmierung

wie registrierst du das fenster für diese meldungen?

Thema: MP3-Server: Welche Software braucht man, um aus einem PC einen MP3-Server zu machen?
Am im Forum: Smalltalk

Shoutcast ist auch bekannt:
http://www.shoutcast.com/broadcast-tools

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Passt, du bist dran.

Zitat
ich ergänze folgenden Code: (nutzt .NET 4.0 Featur für named parameters)
dein code geht mit .net 3

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Da mich jemand per pm gefragt hat:
Ich habe die schließende klammer hinter "Magic" bewusst weggelassen, um zu zeigen, das man auch hinter die Methode noch etwas schreiben kann.

Noch ein Tipp zum Googeln: LayoutKind.Explicit

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Ich hab mir mal ne aufgabe ausgedacht. Wenn man die vorgegebenen zeilen nicht mitzählt, kann man sie in 15 zeilen lösen.

Es ist ohne das wörtchen unsafe und ohne die klasse Marshal lösbar. Wer es nicht ohne hinbekommt, kann es aber trotzdem benutzen.

Aufgabe: Füge dort, wo die fragezeichen stehen code ein, der bewirkt, dass das programm folgendes ausgibt:

method:A, Class:ClassA, filedA:1337
method:B, Class:ClassA, filedB:1337


     class Aufgabe
    {

        class ClassA
        {
            public int fieldA;
            public void Test()
            {
                Console.WriteLine("method:A, Class:" + this.GetType().Name + ", fieldA:" + this.fieldA);
            }
        }

        class ClassB
        {
            public int fieldB;
            public void Test()
            {
                Console.WriteLine("method:B, Class:" + this.GetType().Name + ", fieldB:" + this.fieldB);
            }
        }


        static void Main()
        {
            ClassA a = new ClassA();
            ClassB b = Magic(a);
            a.fieldA = 1337;
            a.Test();
            b.Test();
            Console.ReadLine();
        }

        private static ClassB Magic(ClassA a)
        {

        ??????


    }

Thema: asp.net Teamviewer
Am im Forum: Web-Technologien

anfangen würde ich so: eine url, die einem das aktuelle bildschrimfoto als jpeg sendet
dann kannst du ein javascript schreiben, das im onload des bildes ausgeführt wird und es neu lädt.
Das kann man noch verbessern, indem man das bild in eine matrix aus 16x16 pixel großen bildern unterteilt und diese einzeln mit ajax aktualisierst, und zwar nur wenn sich auch was ändert.

Wenn du echtes video willst, musst du wohl flv oder ähnliches streamen.

Thema: Image (Captcha) von Website downloaden
Am im Forum: Web-Technologien

kannst du die seite mal verlinken?

Thema: asp.net Teamviewer
Am im Forum: Web-Technologien

Soweit ich weiß läuft asp.net in einem seperaten benutzeraccount ohne desktop. Du kannst also keine screenshots machen oder ähnliches, das gild aber nur, wenn du mit iis hostest.
Es gibt kleine server, die dieses sicherheitsfeaturen nicht haben (z.B. den asp.net developmentserver wenn man eine aspseite aus visual studio öffnet). Bei diesen kleinern Servern kann man teilweise auf gdi zugreifen und screenshots machen und so weiter.

Man kann allerdings auch gleich eine desktopanwednung daraus machen, die auf httplistener beruht (ist recht einfach). Damit bist du automatisch die einschränkungen von asp.net los und kannst httpseiten ausliefern.

Thema: Abhängigkeiten nicht einzeln ausliefern? (kein ILMerge)
Am im Forum: Rund um die Programmierung

Assembly.Load(byte[] ) fällt mir dazu ein. Damit kann man eine assembly so wie sie ist aus dem arbeitsspeicher laden (oder mehrere hintereinander). Dann bleiben die signaturen soweit ich weiß erhalten. Ob das allerdings mit multilanguage geht, weiß ich nicht. Das automatische laden aus einem Ordner geht dann auf jeden fall nichtmher, es könnte aber gehen, wenn dein loader die benötigte sprachversion gezielt lädt.

Thema: Unterkl. soll eigene Operationen anbieten, die einheitlich über die Oberkl. aufgerufen werden können
Am im Forum: Rund um die Programmierung

Eigendlich fallen mir je nach deiner Situation eine ganze Reihe von Möglichkeiten ein:
a.)Wenn die Klasseninstanz ihre Operationen selbst bekannt gibt:


class Base
{
    public virtual IList<Action> GetOperations()
    {
        List<Action> result=new List<Action>();
        result.Add(new Action(this.Operation1));
        result.Add(new Action(this.Operation2));
        return result;
    }

    void Operation1()
    {
    }

    void Operation2()
    {
    }
}

class Derived:Base
{
     
    public override IList<Action> GetOperations()
    {
        IList<Action> result=base.GetOperations();
        result.Add(this.Operation3);
        return result;
    }

    void Operation3()
    {
    }
}
Das hat den Vorteil, dass man die Aktionen direkt aufrufen kann (es sind schließlich Delegaten)
Die Namen der jeweiligen Funktion kann man auch ganz einfach rauskriegen:
Delegate.Method.Name

b.)


MethodInfo[] operations=typeof(Somthing).GetMethods().Where((m)=>m.Name.StartsWith("Operation")).ToArray();
kombiniert mit MethodInfo.Invoke
Das ist allerdings bescheuert zu debuggen und noch unsauberer als variante a. Man könnte die Methoden auch mit einem Attribut markieren. Außerdem ist diese Variante von natur aus langsam. Mit etwas trixerei lässt sie sich aber deutlich beschleunigen.
c.)
Dictionary<string,Action>
Vorteil: am felxibelsten, evl. sogar immernoch schneller als die switch-variante

Thema: Unterkl. soll eigene Operationen anbieten, die einheitlich über die Oberkl. aufgerufen werden können
Am im Forum: Rund um die Programmierung

Was hälst du von MethodInfo-objekten/Delegaten?

Thema: Humor: Java Programmierer ... und andere lustige Sachen
Am im Forum: Smalltalk

Zitat von Asp Compilerfeher
c:\Users\0\Desktop\test.aspx(31,27): error CS0123: Keine Überlast für Test stimmt mit dem Delegat ASP.test_aspx.Action überein.

Ok, soein großer Unterschied ist es nicht von Überlast nach Überladung, aber trotzdem...

Thema: Reflection-/unsafe-/SOAP-Hacks in SpaceWarrior verhindern
Am im Forum: Rund um die Programmierung

jup, das ist aber ein Fehler im system, der sich nur schwer lösen lässt. die einzige möglichkeiot wäre, alles auf dem server zu berechnen, was allerdings auch nicht wirklich gut ist, oder das programm zu verschlüsseln und obfuskieren

Thema: Reflection-/unsafe-/SOAP-Hacks in SpaceWarrior verhindern
Am im Forum: Rund um die Programmierung

Zitat
Des weiteren kann man die Silverlight-Binarys auch ohne weiteres herunterladen und in der off-browser-app ausführen.

das machen eh nur freaks und die kennen wohl die gefahren^^

oops: zwei beiträge hintereinander is ned so gut (shit happenz)