Laden...
Avatar #avatar-2584.gif
tscherno myCSharp.de - Member
Staatlich geprüfter Technischer Assistent für Informatik Nürnberger Land Dabei seit 29.04.2007 630 Beiträge
Benutzerbeschreibung

Forenbeiträge von tscherno Ingesamt 630 Beiträge

12.05.2008 - 22:06 Uhr

Hallo,

du kannst TextBoxen genauso in einem Array oder eienr Liste verwenden wie die primitiven Datentypen (int, double..).


TextBox[] boxen = new TextBox[10]; //Array für 10 TextBoxen
List<TextBox> boxen = new List<TextBox>(); //TextBox Liste

Gruss
tscherno

10.05.2008 - 17:52 Uhr

Hallo,


this.DeinEvent=null;

Das geht allerdings nur innerhalb der Klasse welche das Event bereitstellt (this).

...ohne dass ich jetzt weiß welche hinzugefügt worden sind?

Was du nicht weißt mach dich nicht heiß! 😉

Von aussen gibt es so weit ich weiß keine Möglichkeit. Das ist eigentlich auch logisch, weil es eine Verletzung der Kapselung währe. Andere Programmteile auf die du keinen Einfluss hast könnten ja das Event verwenden. Durch das Entfernen aller Eventhandler könntest du diese Programmteile in einen undefinierten Zustand versetzen.

Gruss
tscherno

08.05.2008 - 17:57 Uhr

Hallo,

Ich muss also Pixel für Pixel transformieren, oder einen gratis Encoder (wie libjpeg für linux) finden.

Eine Pixeltransformation sollte möglich sein, allerdings verlierst du dann die Kompressionsfeatures und könntest gleich BMP verwenden. JPEG verwendet das Dateiformat JFIF. Vieleicht hilft es dir irgendwie weiter...

Gruss
tscherno

08.05.2008 - 17:42 Uhr

Hallo,

probier auch mal das Attribut so zu setzen:

[DllImport("blub.dll",EntryPoint="BoxProperties",CallingConvention=CallingConvention.Cdecl)]

Sonst weis die Runtime garnicht welche Funktion Sie aus der DLL verwenden soll.

Edit:

Wenn du den Code von Andreas.May verwendest, musst du CallingConvention auf StdCall setzen.

Edit2:

Oh Sorry, habe das mit dem LoaderLock überlesen...

Gruss
tscherno

08.05.2008 - 17:33 Uhr

Hallo,

um ein byte[] in ein double zu konvertieren brauchst du die BitConverter Klasse.
So müsste es gehen: (nicht getestet!)


            const int DOUBLE_BYTE_SIZE = 8;

            double[] data = new double[((int)view.Length)/DOUBLE_BYTE_SIZE]; //enthält am ende die Daten

            int byte_pointer = 0;  //Zeigt auf das  erste byte des aktuellen doubles
            int data_pointer = 0;  //Zeigt auf das nächste leere Feld im double Array

            byte[] temp= new byte[8]; //Speichert das aktuell double in byte

            while (byte_pointer < view.Length - DOUBLE_BYTE_SIZE) 
            {

                view.Read(temp, byte_pointer, DOUBLE_BYTE_SIZE);    //8 byte aus dem stream lesen...
                data[data_pointer]=BitConverter.ToDouble(temp);     //In double umwandeln

                data_pointer++;                                     //Zum nächsten leeren Feld im double array gehen
                byte_pointer = byte_pointer + DOUBLE_BYTE_SIZE;     //Zum Anfang der nächsten 8 byte im Memfile gehen
            }


Gruss
tscherno

05.05.2008 - 00:22 Uhr

Hallo,

ich glaube da hat sich bei der Beschreibung von Amazon ein Fehler eingeschlichen:

Über das Produkt
"C" stellt ein ausführliches und verständliches Tutorial und Referenzwerk dar, mit dem Sie einen leichten Einstieg in die Programmiersprache C finden. Dabei wird nicht nur auf das .NET Framework von Microsoft eingegangen, alle Beispiele liegen auch in für Mono angepassten Versionen vor, so dass Sie auch unter Linux problemlos für .NET entwickeln können. Zudem deckt dieser "guide to C" auch bereits die Erweiterungen von C 2.0 wie beispielsweise Generics ab, so dass Sie auch für die Zukunft gut gerüstet sind.
Weiterführende Themen rund um das .NET-Framework - wie Datenbankanbindung, XML und Netzwerkzugriff -, die Architektur von Anwendungen und Richlinien für guten Programmierstil in Form eines Styleguides machen "C" zu einem unentbehrlichen Nachschlagewerk für Ihre weitere Programmierpraxis.

Gruss
tscherno

04.05.2008 - 21:55 Uhr

Hallo,


		//ASCIIZeichen
		public string character;
		//Hint
		public string hint;



Öffentliche Felder sollten nicht verwendet werden. Ersetze diese durch Eigenschaften.


CreateFont: //Marke setzen
			try
			{
				//Font mit Style hinter aktuellem Styleindex erzeugen
				font = new Font(name, size, (FontStyle)styles[styleindex]);
			}
			//wenn es knallen sollte, weil diese Schriftart diesen Style nicht unterstützt
			catch (ArgumentException)
			{
				//setzen wir den Styleindex um eins hoch
				styleindex++;

				//und lassen das Spiel von vorne beginnen
				goto CreateFont;
			}

1.) Goto sollte man nicht verwenden. (while-Schleife wenn möglich)

2.) Hier wird IMHO try/catch zum steuern des Programmflusses eingesetzt.
Versuche den "Knall" vorher auszuschließen. Dass selbe gilt für Zeile 76 bis 92 in
sfx.ASCIIChart.Connect. Hier sollte versucht werden eine andere Lösung zu finden.

Mehr dazu hier.

Natürlich habe ich den Code jetzt nur überflogen und sicherlich nicht bis ins letzte Detail analysiert und verstanden. Möglicherweise hast du berechtigte Gründe die Sachen so zu Lösen. Ich habe auch keinen blas
sen Schimmer von Add-In Entwicklung.

Ansonsten sieht der Code sehr gut aus, und ist ungewohnt gut dokumentiert.

Gruss
tscherno

04.05.2008 - 21:18 Uhr

Hallo,

dir wird wohl nichts anderes übrigen bleiben als auf eine Library eines Drittherstellers zurückzugreifen. Diese bietet AFAIK allerdings auch nur einen Wrapper um die native Windows Mobile API an. Könntest ja probieren selber etwas in die Richtung zu entwickeln.

Gruss
tscherno

04.05.2008 - 19:05 Uhr

Hallo,

sieh dir mal in den Projekteigenschaften von Visual Studio die Build Events (Build Ereignisse) an. Dort kannst du festlegen, was vor und nach den Build passieren soll. Von dort aus müsste man auch ein Batch-Skript starten können welches die kompilierte Datei umbenennt.

Gruss
tscherno

04.05.2008 - 13:28 Uhr

Hallo,

sieh dir mal die Präprozessordirektiven an. Hier noch eine ausführlichere Erklärung.

Gruss
tscherno

30.04.2008 - 18:30 Uhr

Hallo svenson,

Die entsprechende Klasse heisst übrigens SslStream und nicht CryptoStream. Leider im CF nicht verfügbar.

Cool, wusste nicht dass es die gibt. Dann ist es natürlich sinniger diese Klasse zu verwenden. Ich hätte jetzt einfach einen CryptoStream durch einen NetworkStream getunnelt. So könnte man ja dann evtl. auch im CF verfahren...

Gruss
tscherno

30.04.2008 - 18:23 Uhr

Hallo,

es ist per Reflection möglich den Konstruktor nochmal aufzurufen. Aber in 99% der Fälle ist meiner Meinung nach irgendetwas am Design faul wenn man sowas verwenden muss.

Hab hier mal schnell was zusammengehackt:


using System;
using System.Reflection;

    class Test
    {
        public Test()
        {
            Console.WriteLine("Default Constructor called!");
        }

        public Test(string message)
        {
            Console.WriteLine("Constructor was called with message: {0}", message);

        }

    }

    class Program
    {
        static void Main(string[] args)
        {

            Test tc = new Test();

            Type typeinfo = tc.GetType();


            ConstructorInfo[] constructors = typeinfo.GetConstructors();
            constructors[0].Invoke(null); //Parameterlosen Konstruktor aufrufen;
            
            /** Konstruktor mit einem String als Prameter, aufrufen **/

            object[] ctor_params = new object[1] { "Hallo Welt!" };
            constructors[1].Invoke(ctor_params);

            Console.ReadLine();
        }
    }


Ausserdem sollte man vermeiden diese Methode bei Objekten anzuwenden die man nicht selber geschrieben hat. Ein erneuter Aufruf des Konstruktors versetzt das Objekt möglicherweise in einen undefinierten Zustand.

Gruss
tscherno

29.04.2008 - 21:16 Uhr

Hallo pezi179,

ergänzend zu dem Post von ikaros will ich auf http://de.wikipedia.org/wiki/X.509 und den Namespace System.Security.Cryptography.X509Certificates hinweisen. Die Clients würden dann ein X.509-Zertifikat haben und sich beim Server authentifizieren. Nach erfolgereicher authentifizierung erlaubt der Server dann eine Verbindung über einen CryptoStream oder einen verschlüsselten Remoting-Kanal. Letzteres ist nur in einem LAN vernüftig einsetzbar.

Zu Kerberos:

Wenn ich richtig verstanden habe wird Kerberos auch automatisch bei einem Remoting-Kanal eingesetzt, wenn man ensureSecurity und impersonate auf true setzt (Siehe Remoting-Helfer).

Das Problem bei Kerberos ist aber dass man ein Key Destribution Center d.h. einen Windows 2003 oder Samba Domain-Controller benötigt.

Ausserdem müssen alle beteiligten User Mitglied in der Domäne sein. Wenn du über so eine Infrastruktur verfügst, dann nutze Sie, ansonsten würde ich mir CryptoStream in Kombination mit X.509 ansehen, oder falls Authentifizierung nicht so wichtig ist, auch ohne X.509.

Gruss
tscherno

29.04.2008 - 20:11 Uhr

Hallo Jack_Al,

in dem Code den SunboX gepostet hat, wird der Initialisierungsvektor zufällig erstellt. Das ist nötig um bei gleichem Klartext, unterschiedliche verschlüsselte Texte zu bekommen. Beim entschlüsseln muss natürlich der selbe IV angegeben werden, der beim verschlüsseln verwendet wurde.

Des Weiteren benutzt das Script leider Rijndael im Modus ECB, während mein C#-Rijndael im Modus CBC ist.

Die Klasse RijandaelManaged hat eine Eigenschaft "Mode", mit der kannst du auf ECB umstellen. ECB ist viel unsicherer, weil Blockweise verschlüsselt wird. (mehr dazu hier.)

Zu dem Datentyp-Problem:

In C hat ein char 127 bzw 255 byte (uchar) in C# dagegen 2 (wegen Unicode-Support). Mir ist bewusst das es in PHP kein byte gibt, aber es könnte helfen wenn du auf PHP-Seite ebenfalls mit den Byte-Werten arbeitest.

Gruss
tscherno

29.04.2008 - 19:16 Uhr

Hallo,

ich kenne mich mit PHP und Verschlüsselung nicht so gut aus, aber gibt es dort eine Möglichkeit dort mit byte-Arrays statt mit Strings zu arbeiten?

Ich könnte mir nähmlich vorstellen dass Informationen beim hin und her konvertieren zu String verloren gehen, weil diese intern möglicherweise anders gespeichert werden.

Gruss
tscherno

27.04.2008 - 20:49 Uhr

Hallo,

ich habe dieses Emoticon das erstemal im Battlenet in Diablo 2 gesehen. Ich verwende es als abgeschwächte Form von 😉. Oder auch wie es YpsilonZet beschrieben hat.

Gruss
tscherno

25.04.2008 - 10:09 Uhr

Hallo,

aber statische Klassen war m.E. eine Neuerung von C# 3.0

Seit 2.0.

Gruss
tscherno

24.04.2008 - 16:46 Uhr

Hallo Golo,

ein gutes Beispiel sind meiner Meinung nach Threads. Diese sind mit dem Betriebssystem und seinem momentanen Zustand so verzahnt, dass eine deserialisieren nicht möglich währe.

Edit:

Ich denke andere Objekt sind nicht serialisierbar, um ineffizientes programmieren zu verhinden. Das beste Beispiel sind Controls. Wenn das ginge, würde es sich manch einer einfach machen, und ganze Formulare über einen NetworkStream senden.

Gruss
tscherno

22.04.2008 - 20:44 Uhr

Hallo,

der austausch der DLL würde erschwert werden, wenn du diese signierst (Strong Name). Das zu schützende Programm lädt dann nur die signierte DLL. Zwar könnte man dass Programm immernoch Patchen, damit es unsignierte DLLs lädt, aber es währe immerhin eine weitere Barriere.

Gruss
tscherno

22.04.2008 - 10:36 Uhr

Hallo,

der Reflektor ist kostenlos.

Gruss
tscherno

21.04.2008 - 21:32 Uhr

Hmmh,

vieleicht suchst du sowas wie einen Callgraph. Schau dir mal die Add-Ins für Reflector an, allem voran Graph und SequenzViz. Wenn es was kosten darf, dann vieleicht noch VTune. Der kann ebenfalls Aufrufdiagramme erstellen.

Gruss
tscherno

21.04.2008 - 21:05 Uhr

Hallo,

für sowas genügt meiner Meinung nach ein UML-Diagramm und die XML-Doc (eingeleitet mit ///), welche die Member der Klassen beschreibt. Eventuell noch eine A4-Seite die grob beschreibt wie das ganze zusammenhängt und funktioniert.

Gruss
tscherno

20.04.2008 - 21:07 Uhr

Hallo squadwuschel,

ich sehe eigentlich nur zwei Gründe die gegen dass speichern von Dokumenten in der DB sprechen undzwar der grössere Ressourceverbrauch und die (minimal) geringere Geschwindigkeit.

Ansosten hat die Filesystem-Lösung nur Nachteile, vorallem was die Konsistzenz der Daten angeht. Stell dir mal vor jemand verschiebt Daten oder fügt neue hinzu ohne die DB-Einträge zu aktualisieren, oder du willst auf einen neuen Fileserver migrieren: Da wünsche ich schonmal viel Spass bei der synchronisation zwischen DB und Dateisystem. 👅

Instinktiv würde ich sagen: Viele kleine Dateien in die Datenbank, wenige grosse ins Dateisystem.

Hier ist noch eine Diskussion dazu:
http://www.mail-archive.com/struts-user@jakarta.apache.org/msg18799.html
Teil2: http://www.mail-archive.com/struts-user@jakarta.apache.org/msg19304.html

Gruss
tscherno

19.04.2008 - 15:01 Uhr

Hallo,

du benutzt den ADO.NET Treiber für den Microsoft SQL-Server. Du musst dir von der MySql Seite den Connector für MySql runterladen und in dein Projekt einbinden.

Gruss
tscherno

15.04.2008 - 22:54 Uhr

Hallo,

fast so zeitlos wie die Bibel sind imho die Bänder aus der Reihe "The Art of Computer Programming" von Donald E. Knuth, erschienen bei Addison-Wesley.

Die Darstellung der Beispielprogramme erfolgt dabei in einer von Knuth entwickelten Assemblersprache für einen von ihm entwickelten fiktiven „idealen“ Computer namens MIX [...], Er verwendet die Assembler-Sprache MIXAL (MIX-Assembler-Language). Knuth begründet den radikalen Schritt der Benutzung einer eigenen Assemblersprache [...] mit der Absicht, ein langfristiges Werk zu schaffen, das nicht von der jeweiligen Modeprogrammiersprache beeinflusst sein soll.

Gruss
tscherno

15.04.2008 - 20:41 Uhr

Hallo,

wenn dein Programm nicht auf externe Dateien zugreift, dürfte es genügen den Compiler auf "Release" zu stellen. Das kannst du im Visual Studio in der Dropdownbox oben in der Symbolleiste machen. Danach wird im bin Ordner ein "Release" Ordner erstellt, der die exe enthält.

Gruss
tscherno

14.04.2008 - 15:54 Uhr

Hallo,

im Prinzip schon. Zumindest wenn Sie sauber geschrieben wurde. (Threadübegriffe etc.)

Gruss
tscherno

13.04.2008 - 23:50 Uhr

Oh mein Gott, und ich habe versucht ein Programm zu schreiben welches den IL-Code aus dem MethodBody herauskopiert, die NOPs entfernt und dann per AssemblyBuilder ein neues Assembly erzeugt. Mir ist es aber nicht gelungen den EntryPoint richtig zu setzen.

Naja, dafür habe ich sehr viel über AssemblyBuilder gelernt 😁

ldc.i4.7 <- ist dass die Zeile?

Gute Nacht
tscherno

13.04.2008 - 20:14 Uhr

ich verwende auch die .NET Runtime. Möglicherweise ist die .zip korrupt?

Gruss
tscherno

13.04.2008 - 20:06 Uhr

Hallo egrath,

ich bekomme eine "InvalidProgramException" 0_o ? Hast du dass etwa in IL geschriebe ? 😜

Gruss
tscherno

13.04.2008 - 19:13 Uhr

Hallo egrath,

saubere Arbeit, jetzt kannst du ja mal eins schreiben. =)

Hallo gurgell,

egrath hat recht, dass ding ist nicht Obfuscated, ich habe nur komische Variablennamen verwendet.

Gruss
tscherno

13.04.2008 - 17:55 Uhr

Hallo,

beim lesen von diesem Thread kam mir die Idee ein HackMe zu schreiben.

Mission zu HackMe.exe (Mission Impossible Musik im Hintergrund)

1.) Durch die Passwortkontrolle kommen.
2.) Im Code der den geheimen Text ausgibt, wird eine Variable deklariert welche
wichtige Informationen enthält. Besorgen Sie sich den Inhalt dieser Variable.

*Regeln**

+Jeder Weg der zum Ziel führt ist erlaubt. Sei kreativ!

*Hinweise*

+Bei eingabe des richtigen Passworts gibt das Programm eine Meldung auf der Konsole
aus und schließt sich sofort wieder.
+Bei falschem Passwort schließt sich dass Programm sofort wieder.
+Bruteforce ist zum lösen der Aufgabe nicht erforderlich.

Viel Erfolg!

Gruss
tscherno

PS: Wer es schafft soll die Lösung und seine Vorgehensweise bitte hier posten!

12.04.2008 - 15:38 Uhr

Hallo,

wenn du auf dieser Seite zu Inheritance Hirarchy runterscrollst findest du eine ganze Menge. Ich weis aber nicht ob dass alle sind.

Gruss
tscherno

12.04.2008 - 15:11 Uhr

Hallo,

verwende aufjedenfall ein normales Array statt List<> oder übergib List<> im Konstruktor die erwartete maximalgrösse der Liste ( z.b. 40.0000). Wenn die List voll ist wird nähmlich intern das ganze Array in ein doppelt so grosses Array kopiert. Desweiteren ist eine normale for-Schleife schneller als eine foreach.

Das dürft die Anwendung etwas beschleunigen.

Ich denke dass Problem liegt aber wahrscheinlich eher im Algorithmus. Kann dazu aber leider nicht mehr sagen weil ich mich auf diesem Gebiet überhaupt nicht auskenne.

Gruss
tscherno

11.04.2008 - 19:59 Uhr

Hallo slickwilly2000,

könnten dir evtl. die Events unter Microsoft.Win32.SystemEvents helfen?
Insbesondere EventsThreadShutdown und SessionEnded?

Gruss
tscherno

08.04.2008 - 23:23 Uhr

Hallo,

noch einfacher geht es so:


byte mybyte=123;
string binary = Convert.ToString(mybyte,2);

Gruss
tscherno

08.04.2008 - 19:09 Uhr

Hallo,

währe AutoIT vieleicht etwas für dich?

Gruss
tscherno

07.04.2008 - 20:14 Uhr

Hallo,

kennt jemand ein Plug-In mit dem man in Visual Studio IL-Code schreiben und Debuggen kann? Sowas gibt es ja bei MonoDevelop, nur würde ich mir ungerne noch eine IDE installieren.

Gruss
tscherno

06.04.2008 - 23:25 Uhr

Beschreibung:

Diese Konsolenanwendung interpretiert ein Brainfuck-Programm welches als Parameter übergen werden muss.


/*
 *  bint - Brainfuck Interpreter
 *  Implements wrap-around for cells (if 255 is increased it becomes 0 and vice-versa)
 * 
 */

using System;
using System.IO;

namespace bint
{
    class Program
    {
         const short TAPE_SIZE=30000;

         static string program_code;                    //The Programcode is saved here
         static byte[] tape = new byte[TAPE_SIZE];      //Represents the Memory
         static short ptr = 0;                          //Memorypointer
         static short loop_ptr = 0;                     //looppointer
         

        static void Main(string[] args)
        {
            
            //***Programfile is passed by arg***

            //Check if any arguments where passed at all
            if (args.Length == 0)
            {
                PrintHelp();
                return;
            }
            else
            {
                //Check if passed file exists
                if (!File.Exists(args[0]))
                {
                    PrintHelp();
                    Console.WriteLine();
                    PrintError("IO_ERROR: Passed programfile not found!");
                    return;
                }
                else
                {   //Read passed programfile
                    program_code = File.ReadAllText(args[0]);

                    //Execute Program
                    //ip = instruction pointer
                    for (int ip = 0; ip < program_code.Length; ip++)
                    {
                        switch (program_code[ip])
                        {
                            case '+':  //Increase value at pointer
                                {
                                    //Implement "Wrap-Around"
                                    if (tape[ptr] == byte.MaxValue)
                                    {
                                        tape[ptr] = byte.MinValue;
                                    }
                                    else
                                    {
                                        tape[ptr]++;
                                    }
                                    break;
                                }
                            case '-': //Decrease value at pointer
                                {
                                    //Implement "Wrap-Around"
                                    if (tape[ptr] == byte.MinValue)
                                    {
                                        tape[ptr] = byte.MaxValue;
                                    }
                                    else
                                    {
                                        tape[ptr]--;
                                    }

                                    break;
                                }
                            case '>': //Increase pointer
                                {
                                    if (ptr == TAPE_SIZE)
                                    {
                                        PrintError("RUNTIME_ERROR: End of Tape.");
                                        return;
                                    }
                                    ptr++;
                                    break;
                                }
                            case '<': //Decrease pointer
                                {
                                    if (ptr == 0)
                                    {
                                        PrintError("RUNTIME_ERROR: Pointer was decreased at Position 0.");
                                        return;
                                    }
                                    
                                    ptr--;
                                    break;
                                }
                            case '[': //jump forward to the command after the corresponding ] if the byte at the pointer is zero.
                                {
                                    if (tape[ptr] == 0)
                                    {
                                        ip++;
                                        while (loop_ptr > 0 || program_code[ip] != ']')
                                        {
                                            if (program_code[ip] == '[')
                                            {
                                                loop_ptr++;
                                            }
                                            if (program_code[ip] == ']')
                                            {
                                                loop_ptr--;
                                            }
                                            ip++;
                                        }
                                    }
                                    break;
                                }
                            case ']': 
                                {
                                    ip--;
                                    while (loop_ptr > 0 || program_code[ip] != '[')
                                    {
                                        if (program_code[ip] == ']')
                                        {
                                            loop_ptr++;
                                        }
                                        if (program_code[ip] == '[')
                                        {
                                            loop_ptr--;
                                        }
                                        ip--;
                                    }
                                    ip--;

                                    break;

                                }
                            case '.': //Print value at pointer
                                {
                                  Console.Write(Convert.ToChar(tape[ptr]));
                                  Console.Out.Flush();
                                  break;
                                }
                            case ',': //Read value from Console and store it at pointer
                                {
                                    tape[ptr]=Convert.ToByte(Console.Read());
                                    break;
                                }
                            default:
                                {
                                    //Discard all other characters
                                    break;
                                }
                        }
                    }
                }
            }
            
        }



        static void PrintError(string errorMessage)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(errorMessage);
            Console.ForegroundColor = ConsoleColor.Gray;

        }

        static void PrintHelp()
        {
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("Brainfuck Interpreter");
            Console.WriteLine();
            Console.WriteLine("USAGE: bint [Programfile]");
        }
    }
}


Schlagwörter: Brainfuck Interpreter BF

05.04.2008 - 14:26 Uhr

Hallo,

leider gibt es keine andere Möglichkeit, du musst die zweite Datei einlesen.

Der performenteste Weg währe imho mit zwei Streams (BinaryReader und BinaryWriter) zu arbeiten. Wobei der Writer die Zieldatei ist und der Reader den Inhalt aus den einzelnen Dateien liefert.

Soweit ich weis hält der Stream nicht die ganze Datei im Speicher sondern nur den teil in der nähe von Position. Weis jemand mehr darüber?

Gruss
tscherno

03.04.2008 - 20:10 Uhr

Hallo,

falls du funktionierende C/C++ beispiele hast, könntest du probieren einen Wrapper in C++/CLI zu schreiben.

Gruss
tscherno

02.04.2008 - 19:53 Uhr

Hallo,

mit CancelAsync() müsstest du den Vorgang abbrechen können.

Gruss
tscherno

01.04.2008 - 23:38 Uhr

Hallo,

das liegt dann daran dass .avi eigentlich ein Containerformat ist und z.b. DivX,XVID,MPEG4,DV [...] streams enthalten kann die wiederrum eigene Header haben.

Gruss
tscherno

30.03.2008 - 10:18 Uhr

Hallo,

hier noch - leider etwas verspätet - der Link zur Quelle. (Sorry, hab nicht mehr dran gedacht...)

http://www.pluralsight.com/blogs/mike/archive/2006/09/25/38697.aspx

Gruss
tscherno

28.03.2008 - 00:02 Uhr

Hallo,

hab auch noch was. Ist aber nicht von mir, bin mal zufällig darauf gestossen. Wenn es jemand rausfindet (ohne es zu kompilieren) dann ist er gut. 😁 (nicht Schummeln!)

Was macht dieses Programm?

using System;
using IAR = System.IAsyncResult;
using IE1 = System.Collections.IEnumerable;
using IE2 = System.Collections.IEnumerator;
using MRE = System.Threading.ManualResetEvent;
using PTS = System.Threading.ParameterizedThreadStart;

class P
{
    static void Main()
    {
        MRE fe = new MRE(false);
        MRE pe = fe;
        foreach( char c in new MSG() )
        {
            MRE ce = new MRE(false);
            PTS m = delegate(object s) { P p = (P)s; p.W.WaitOne(); Console.Write(p.C); p.G.Set(); };
            m.BeginInvoke(new P(c, pe, ce), delegate(IAR ar) { ((PTS)ar.AsyncState).EndInvoke(ar); }, m);
            pe = ce;
        }
        fe.Set();
        pe.WaitOne();
        Console.WriteLine();
    }

    public P(char c, MRE w, MRE g) { C = c; W = w; G = g; }

    char C;
    MRE W;
    MRE G;

    class MSG : IE1
    {
        public IE2 GetEnumerator()
        {
            int i = 0;
            foreach (char ch in new NTE<SM.B>()) yield return (i++ == 0 ? char.ToUpper(ch) : ch);
            yield return (',');
            yield return (' ');
            foreach (char ch in new NTE<SM.A>()) yield return (ch);
            yield return ('!');
        }
    }

    class NTE<PT> : IE1
    {
        public IE2 GetEnumerator()
        {
            foreach (Type t in typeof(PT).GetNestedTypes()) { yield return t.Name[t.Name.Length - 1]; }
        }
    }

    class SM
    {
        internal struct A
        {
            public struct cow { }
            public class too { }
            public interface car { }
            public enum will { }
            public struct pad { }
        }

        internal class B
        {
            public class wish { }
            public struct see { }
            public interface hill { }
            public enum ball { }
            public class boo { }
        }
    }
}

Ich poste morgen die Quelle.

Gruss
tscherno

27.03.2008 - 23:38 Uhr

Hallo Unikum,

ich denke du suchst das is Schlüsselwort.

Gruss
tscherno

25.03.2008 - 21:58 Uhr

Hallo,

wegen den Lambda-Ausdrücken?

Gruss
tscherno

25.03.2008 - 19:33 Uhr

Hallo,

hast du schon probiert mit einem normalen SCP-Client wie WinSCP zu verbinden?

Gruss
tscherno

25.03.2008 - 17:12 Uhr

Hallo,

probier mal einen HRESULT mitzugeben. (Parameter errorCode im Konstruktor). Vieleicht erwartet VB da irgendwas.

HRESULT bei Wikipedia.

Gruss
tscherno

25.03.2008 - 16:50 Uhr

Hallo doudi,

bitte sowas selber in der Doku nachsehen. (Google nach ArgumentException)

Die Ausnahme, die ausgelöst wird, wenn eines der Argumente für eine Methode ungültig ist. ArgumentException-Klasse

Argument ist ein anderes Wort für Parameter.

Gruss
tscherno