Laden...

Forenbeiträge von pdelvo Ingesamt 1.346 Beiträge

14.03.2012 - 22:23 Uhr

Benutze doch Defaultwerte in den parametern

// Class.cs
    public class Class
    {
        public int Property1{ get; set; }
        public string Property2{ get; set; }
        // [...]
        public string PropertyN{ get; set; }

        public Class(int property1 = 12, string property2 = "", ..., string propertyN = "")
        {
                Property1 = property1 ;
                // [...]
        }

    public class Program
    {
        private static void Main()
        {
                Class c = new Class(property1:5, propertyN:"Hallo");
        }
    }

09.03.2012 - 15:22 Uhr

Steht doch alles in der MSDN....

XDocument.Load-Methode (Stream)

09.03.2012 - 15:12 Uhr

Lass den FileStream nach dem laden doch offen. Dann ist sie gesperrt

07.03.2012 - 23:09 Uhr

Ich wüde die variante wie du die version überprüfst ändern. So würde das nicht unter Windows 8 funktionieren. (Auf Grund solcher Fehlerhaften OS Abfragen wurde Wndows 7 übrigens auch Version 6.1 und nicht 7.0

       public static bool IsWin7OrHigher
        {
            get
            {
                return Environment.OSVersion.Version >= new Version(6, 1, 7100);
            }
        }
26.02.2012 - 14:39 Uhr

... ist ein DELETE & INSERT schneller als ein UPDATE ?

Dann wäre doch sicherlich der Updatebefehl so implementiert, oder sehe ich das falsch? 🤔

23.02.2012 - 20:35 Uhr

Zahlen richtig als Zeichenkette auszugeben ist wahrscheinlich nicht ganz so banal wie es sich anhört. Ich habe einmal kurz gegoogelt und einen Artikel dazu gefunden. Er ist zwar für die Englische ausgabe, aber du kannst es dir ja mal durchgucken und versuchen es entsprechend für Deutsch zu ändern.

http://www.blackwasp.co.uk/NumberToWords.aspx

21.02.2012 - 02:52 Uhr

Activator.CreateInstance zusammen mit Type.GetType

17.02.2012 - 17:09 Uhr

Der StreamReader nutzt intern einen Buffer und ließt Blöcke aus. Die buffergröße lässt sich einstellen und beträgt standardmäßig 1024 Bytes

10.02.2012 - 15:21 Uhr

Man kann ja auch mit mehreren tabs auf der selben Seite unterwegs sein, und so würde es dabei zu Problemen kommen

06.02.2012 - 17:14 Uhr

Meine Lösung:

         public static string Pattern2
        {
            get
            {
                // TODO: Pattern fluent deklarieren
                return Pattern.With.Literal("<").WhiteSpace.Repeat.ZeroOrMore.NamedGroup("tag", Pattern.With.Literal("beispiel"))
                    .Group(
                    Pattern.With.WhiteSpace.Repeat.OneOrMore.NamedGroup("key", Pattern.With.Set(Pattern.With.Word).Repeat.OneOrMore)
                    .WhiteSpace.Repeat.ZeroOrMore.Literal("=").WhiteSpace.Repeat.ZeroOrMore
                     .Group(Pattern.With.Choice.Either(
                        Pattern.With.Literal("'").NamedGroup("value", Pattern.With.NegatedSet(Pattern.With.Literal("'>")).Repeat.ZeroOrMore).Literal("'")
                ,
                Pattern.With.NamedGroup("value", Pattern.With.NegatedSet(Pattern.With.Literal("'>").WhiteSpace).Repeat.OneOrMore)
                )
                ).Repeat.Optional).Repeat.Optional.WhiteSpace.Repeat.ZeroOrMore.Literal(">");

            }
        }

Die tests laufen alle durch, allerdings finde ich da den ganz normalen regulären ausdruck einfacher zu lesen

05.02.2012 - 01:19 Uhr

Meinst du vielleicht einen Ringbuffer, bzw eine Queue?

05.02.2012 - 00:11 Uhr

Wo ist denn da ne große Datenmenge? 64mb pro Minute sind doch nicht viel.. (Ich komme beim nachrechnen auch nur auf 7mb/Minute 32(Kanäle) * 1000(Werte) * 4(Bytes bei einem float) * 60(Sekunden in einer Minute) = 7680000 b = 7500 kb = 7,3mb)

Ich verstehe das problem gerade nicht so ganz

04.02.2012 - 14:40 Uhr

Die lassen sich aber auch mit Developer Unlock nicht nutzen. Dazu brauchst du schon einen Interop Unlock. Zu sagen ist noch, dass du einen Developerunlock als Schüler und Student kostenlos bekommst über Dreamspark

01.02.2012 - 23:49 Uhr

Jetzt aber:


        static double Area(double x1, double y1, double x2, double y2, double x3, double y3)
        {
            return 0.5 * ((y3 + y1) * (x3 - x1) + (y2 + y3) * (x2 - x3) - (y2 + y1) * (x2 - x1));
        }

31.01.2012 - 15:12 Uhr

Hab es jetzt wie in der FAQ gelöst, auch wenn mir das ändern der AssemblyInfo Datei nicht gefällt, da die dann immer als Update auf dem Server landet 😕

31.01.2012 - 12:28 Uhr

vertausche mal das allow und das deny. ich könnte mir vorstellen, dass die Liste von oben nach unten abgearbeitet wird, und der erste Punkt der auf den Nutzer passt ist im zweiten Fall das deny, das ja für alle gilt.

31.01.2012 - 00:00 Uhr

Ich hab mir gerade was gebastelt, eher quick & dirty, aber es funktioniert und reicht für mich erst mal. Das ganze aktualisiert jeweils nur die Assembly Version. Ich habe es nicht hinbekommen, die Dateiversion auch zu aktualisieren. Gebraucht wird das ILMerge Tool, sowie die SharpSVN Bibliothek.

    class Program
    {
        static void Main(string[] args)
        {
            string assembly = args[0];
            string repoPath = args[1];
            string ilmerge = @"%PROGRAMFILES(X86)%\Microsoft\ILMerge\ILMerge.exe";
            ilmerge = Environment.ExpandEnvironmentVariables(ilmerge);

            Version version = GetAssemblyVersion(assembly);

            using (SvnClient client = new SvnClient())
            {
                SvnInfoEventArgs info;
                Uri repos = new Uri(repoPath);
                client.GetInfo(repos, out info);
                version = new Version(version.Major, version.Minor, version.Build, (int)info.Revision);
            }
            string param = "";
            if (File.Exists(assembly + "_old.exe"))
                File.Delete(assembly + "_old.exe");
            File.Move(assembly, assembly + "_old.exe");
            Process p = Process.Start(ilmerge, param = string.Format("/ver:{0} /out:{1} {2}", version, assembly, assembly + "_old.exe"));
            p.WaitForExit();
            File.Delete(assembly + "_old.exe");
        }

        private static Version GetAssemblyVersion(string assembly)
        {
            Assembly asm = Assembly.Load(File.ReadAllBytes(assembly));
            return asm.GetName().Version;
        }
    }

Dann als Postbuildereignis

"H:\Pfad\zum\Tool.exe" $(TargetPath) "https://schlag-mich-tod/svn/wasweissich/"

Wie gesagt eine Fehlerbehandlung fehlt, aber da hab ich aktuell keine Lust zu. Wer es benutzen will kann das ja noch einbauen. Wenn trotzdem jemand etwas eleganteres kennt, würde ich mich über weitere Antworten freuen! 😃

30.01.2012 - 19:48 Uhr

Hallo!

Ich benutze aktuell AnkhSVN, um einen SVN Support für mein Visual Studio 2010 Professional zu bekommen. Nun brauche ich das aktuell für eine Software, von der ich regelmäßig einen Build auf den Server ziehe, wo das programm dann drauf läuft. Nun möchte ich wissen, zu welcher Revision die Version gehört, also die aktuelle Revision Nummer in die Datei & Assembly Version mit einbeziehen. Ich habe da schon etwas länger gesucht, aber noch nichts gefunden. Es geht mir hierbei um die SVN Revision Nummer, also einfach einen * benutzen funktioniert nicht.

Lieben Gruß

pdelvo

26.01.2012 - 07:16 Uhr

Der reguläre Ausdruck passt da nicht. Versuch mal, ob das einen Match liefert:

href="http://www.mycsharp.de/wbb2/newthread.php"

24.01.2012 - 16:17 Uhr

Vielleicht liegt es an der falschen Adresse, wenn du IPV6 verwendest

net.tcp://[ipv6-adresse]:port/ClientService.

Die IP muss in eckige Klammern, damit eindeutig ist, welche teile zur IP, und welche zum Port gehören

22.01.2012 - 01:13 Uhr

Oder füg es zur Form hinzu, öffne die Form.Designer.cs Datei und guck was die anders macht als du

20.01.2012 - 15:32 Uhr

Habe es mir eben schon angesehen. Die Texte zu den Achievments sind echt lustig. 😁

Interrupting Cow
Have 10 breakpoints in a file. Where's that bug? Could here, could be there, could be anywhere!

👍

19.01.2012 - 00:42 Uhr

Wenn ich das Ausrechne komme ich auf eine zahl mit 13743895347 Stellen bei einem Verbrauch von 4 GB. Die größte Darstellbare Zahl ist dabei (wenn man vom Speicherplatz für Verwaltung absieht:

Bytes pro GB = 230 = 1073741824
Bytes für 4GB = 4 * 2
30 = 232 = 4294967296
In Bits = 8 * 2
32 = 2^35 = 34359738368

Also ist die Größte darstellbare Zahl = 2^34359738368 - 1

Ich hoffe ich habe mich nirgendwo verrechnet. Was noch sein kann ist, dass die Ansteuerung der Bytes durch einen integer passiert, dass würde die Größe des Speichers auf 4GB begrenzen.

18.01.2012 - 22:42 Uhr

Ob das funktioniert hängt von der NAT Einstellung des Routers ab. Aber wenn das Hole Punching an sich funktioniert sollte das dann auch für einen anderen Client funktionieren.

17.01.2012 - 16:39 Uhr

Du kannst doch den scale Parameter benutzen um den Text zu skalieren

13.01.2012 - 15:35 Uhr

Überlege dir wie viel Platz pro Eintag gebraucht wird. Wenn man von grob 1kb/pro Objekt ausgeht, was vermutlich vollkommen übertrieben ist landest du bei schlappen 24mb. also noch lange nicht besorgniserregend

08.01.2012 - 19:42 Uhr

0xafffffff ist definiert, und zwar als -1342177281. Und schneller bekommt man mMn aus einem Byte Array kein Integer Array. Mein Code hat den Vorteil, das nichts kopiert wird, und das das Zurückkonvertieren, wie das hinkonverteren keine Resourcen kostet. Um Audio Daten zu bearbeiten hat es sich bei mir als Vorteilhaft gezeigt. Ich konnte in meinem Fall mit den Shorts schnell arbeiten und hatte die Daten sofort wieder als byte Array zum weiterschicken

08.01.2012 - 12:26 Uhr

Ich habe mir für sowas nen kleinen Hack gebaut. Ob es das performanteste oder beste ist um sowas zu machen weis ich nicht. PCM Daten sollten doch aber shorts sein(?) Genau für sowas hab ich das nämlich gebaut. Für integers kannst du das aber genau so umbauen

    /// <summary>
    /// You must not use Array.Length! Use AudioBuffer.GetLength instead.
    /// </summary>
    [StructLayout(LayoutKind.Explicit, Pack=2)]
    public class AudioBuffer
    {
        [FieldOffset(0)]
        int _length;
        
        [FieldOffset(8)]
        byte[] _byteBuffer;

        [FieldOffset(8)]
        short[] _shortBuffer;

        public AudioBuffer(byte[] allocate)
        {
            if (allocate == null)
                throw new ArgumentNullException("allocate");
            if (allocate.Length % sizeof(short) != 0)
                throw new ArgumentOutOfRangeException("allocate");
            _byteBuffer = allocate;
        }

        public byte[] ByteBuffer { get { return _byteBuffer; } }
        public short[] ShortBuffer { get { return _shortBuffer; } }

        public int GetLength()
        {
            return _byteBuffer.Length /  sizeof(short);
        }
    }

Wichtig dabei ist, dass du ShortBuffer.Length nicht benutzt, sonodern Die GetLength Methode. Sonst bekommst du eine falsche Länge

//Edit Blöd wenn man beim kurzen Überarbeiten des Codes Fehler einbaut

27.12.2011 - 14:16 Uhr

Für Einstellungen finde ich IsolatedStorageSettings besser geeignet. Da braucht man sich nicht um das Serialisieren zu kümmern

21.12.2011 - 17:44 Uhr
public class ClassA
{
    public ClassB OtherClass{ get; set; }
}
public class ClassB
{
    public ClassA OtherClass{ get; set; }
}

Wo ist das Problem?

19.12.2011 - 17:49 Uhr

Wenn es um Debugdaten geht benutze ich immer Debug.WriteLine(...). Dann bekommt man die infos schön in der Ausgabe im VS angezeigt. Dazu muss die Anwendung aber mit angeschaltetem Debugger laufen. Sonst halt wenn es um kleine Dinge geht kurz ne MessageBox anzeigen, oder Breakpoints setzen. Mir kommt gerade aber die dee, ob man sowas nicht übers Netzwerk machen kann. Müsstest du dich halt kurz ransetzen und einen Client + Serverbibliothek schreiben und darüber in eine Datei schreiben. Das kann man ja dann später wiederverwenden

22.11.2011 - 17:31 Uhr

Stichwort Range Requests

15.11.2011 - 20:41 Uhr

AppDomainSetup.ShadowCopyFiles

Typ: System.String
Der Zeichenfolgenwert "true" für aktiviertes Erstellen von Schattenkopien oder "false" für deaktiviertes Erstellen von Schattenkopien.

Also ich bin da ganz der selben Meinung. Immer dieser neumodische Kram. Wer braucht schon 'Booleans'.

08.11.2011 - 18:46 Uhr

chars sind auch Zahlen. und klar kommt wenn du sie addierst wieder eine zahl raus.

08.11.2011 - 18:41 Uhr

Single = float. float ist das Schlüsselwort. Der passene Typ ist System.Single 😉

Das Argumen, dass 2 bytes addiert schnell was größeres gibt halte ich für nicht Aussagekräftig. Das selbe Spiel kann man mit nem int auch machen. Das ergibt auch schnell ne größere Zahl. Der Grund ist, mMn, dass CPUs nicht mit bytes rechnen können. Sie rechnen mit Integers (32bit) oder Longs(64bit). Aber auch unter 64bit macht .net ein integer draus.

Nachtrag: na toll. gfoidl war schneller^^

07.11.2011 - 00:17 Uhr

Warum nicht so?


//min ist inklusiv, max ist exklusiv
public static int GetRandomNumber(byte min, byte max)
{
            if(min >=max) throw new ArgumentOutOfRangeException("'min' must be smaler then 'max'");
            RNGCryptoServiceProvider csp = new RNGCryptoServiceProvider();
            byte[] numbers = new byte[1];
            csp.GetBytes(numbers);
            return min + (numbers[0] % (max- min));
}

Warum machst du dort überhaupt eine Unterscheidung?

04.11.2011 - 09:56 Uhr

Das stimmt allerdings nicht. Man kann sich eine lokale Datenbank im Issolated Storage erstellen und dort drauf zugreifen. Ein Beispiel ist im Mango Trainings Course. In den Offlinedaten ist ein entsprechendes Beispiel mit einer ToDo-Liste

25.10.2011 - 09:53 Uhr

Nein. Es funktioniert nicht, wenn der NAT Typ des Routers Strict ist. Dann nimmt er keine Udp Packete einer anderen IP, und einem anderem Port an, als die, zu denen er sie gesendet hat. Dann kannst du von dem anderen Rechner so viele Packete schicken wie du willst. Der Router blockiert sie. Teamviewer, Skype und co. leiten den Traffic dann über einen Server. Das ist dann entsprechend langsam. In Skype erscheint dann zB bei einem Filetransver dieses Schnecken-Symbol und es gibt im Tooltip den Hinweis darauf.

20.10.2011 - 22:29 Uhr

Die serielle Schnittstelle anzusteuern ist kein problem. Gibt es denn eine Dokumentation für das gerät, wo beschrieben wird, wie es über die serielle Schnittstelle kommuniziert?

lg pdelvo

11.10.2011 - 16:25 Uhr

Ich bekomme beim starten eine OverflowException

Fehlermeldung:
System.OverflowException: Der Wert für einen Int32 war zu groß oder zu klein.
bei System.Convert.ToInt32(UInt64 value)
bei System.UInt64.System.IConvertible.ToInt32(IFormatProvider provider)
bei System.Convert.ToInt32(Object value)
bei EnergySettings.Computer.AddElement(String library, String keyword, Boolean ram) in C:\Users\blr.TGW\documents\visual studio 2010\Projects\EnergySettings\EnergySettings\Computer.cs:Zeile 45.
bei EnergySettings.Computer.GetInformations() in C:\Users\blr.TGW\documents\visual studio 2010\Projects\EnergySettings\EnergySettings\Computer.cs:Zeile 22.
bei EnergySettings.Form1.SetInformations() in C:\Users\blr.TGW\documents\visual studio 2010\Projects\EnergySettings\EnergySettings\Form1.cs:Zeile 50.
bei EnergySettings.Form1.Form1Load(Object sender, EventArgs e) in C:\Users\blr.TGW\documents\visual studio 2010\Projects\EnergySettings\EnergySettings\Form1.cs:Zeile 82.
bei System.Windows.Forms.Form.OnLoad(EventArgs e)
bei System.Windows.Forms.Form.OnCreateControl()
bei System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
bei System.Windows.Forms.Control.CreateControl()
bei System.Windows.Forms.Control.WmShowWindow(Message& m)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ScrollableControl.WndProc(Message& m)
bei System.Windows.Forms.Form.WmShowWindow(Message& m)
bei System.Windows.Forms.Form.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

edit: windows 7 ultimate. 2 bildschirme. der primärbildschirm ist rechts(weiss nicht ob es daran liegen könnte). 8GB Ram(vllt verstuchst du den ram in einem integer zu speichern(?)

10.10.2011 - 22:05 Uhr

vorallem braucht man kein hole punch wenn man den port mit upnp aufbekommt. wenn das nicht geht und man holepunch versucht funktioniert das aber auch nicht mit jedem router. ich zB habe einen, der auf strict eingestellt ist. der lässt nichts durch was nicht von da kommt wo er es erwartet

28.09.2011 - 23:57 Uhr

Dazu kommt ja noch, dass ein Rechner auch mehrere IPs haben kann. Über mehrere Adapter. Welche willst du genau wissen?

27.09.2011 - 07:07 Uhr

Wenn dir das zu ungenau ist, kannst du auch eine eigene Lösung benutzen. Habe mal kurz Google angeworfen und das hier gefunden. Die Zeiten, die der Author angibt sehen jedenfalls vielversprechend aus.

Simple Network Time (NTP) Protocol Client

16.09.2011 - 20:16 Uhr

Sieht echt schick aus. Wenn du einstellen lässt, diedie Logfiles geparsed werden, werde ich es benutzen 😃 Sollte doch relativ einfach sein, so das ich einen regulären Ausdruck angeben kann. Das wäre das beste 😃

12.09.2011 - 21:40 Uhr

Stimmt. Dann fang ich mal an 😛

Solche Systeme muss man ja dann auch vor etwaigen Hackern schützen. Was ist, wenn eine terrorgruppe das System anzapft und alle Fahrzeuge plötzlich vollgas auf die nächste Wand nehmen?

Ich vertraue einem menschlichen Fahrer mehr als einem anderen System. Es braucht nur mal irgendwo ein Bug drinnen sein und so ein Auto macht Dinge, die ein Mensch niemals tun würde, egal wie fahrtauglich er ist. Einen Rechner interessiert das wenig

10.09.2011 - 11:40 Uhr

Sei doch nicht so bescheiden. Was du hier auf die Beine gestellt hast ist echt unglaublich. Niemand sonst verfasst hier so wertvolle Beiträge wie du. Mein Respekt!