Laden...
T
Tom myCSharp.de - Member
Datawarehouse Architect / Business Intelligence Specialist Home is where my notebook is Dabei seit 16.06.2006 433 Beiträge

Forenbeiträge von Tom Ingesamt 433 Beiträge

15.11.2009 - 16:21 Uhr

Hallo zusammen,

wir nutzen derzeit eine propritäre 2D DirectX Engine um Sprites darzustellen.

Ich suche nun eine Möglichkeit um animierte Sprites schnell zu erstellen bzw. zu ändern.
Aktuell nehmen wir für Sprites einfache Bilder die wir in Tiles unterteilen.

Die Animationen an sich sollen recht einfach sein. So ungefähr wie die Einblendung in TV Nachrichten. Z.B. bei N-TV der Ticker der unten läuft und vielleicht mal zusammenklappt, oder halt auf und zu geht. Alles recht simple Animationen.

Das Problem ist nur das wir immer wieder unterschiedliche Sprites benötigen und ich deshalb die Animationen nur ungern hardcoden wollte.

Ich suche deshalb nach einer Möglichkeit animierte Sprites vllt durch ein Skripting Modul oder externes Tool zu erstellen. Vielleicht geht das mit einem Video Editor Tool von Premiere.

Hat jemand von euch eine Lösung oder Idee parat?

Gruß,
Tom

13.11.2009 - 13:13 Uhr

Hm....

lies doch mal den StandardOutput und StandardError aus.

Gruß,
Tom

13.11.2009 - 12:21 Uhr

Hallo,

bei deinem ersten Codeteil nutzt du @ um Escape Zeichen als strings zu interpretieren.
Deshalb darfst du nicht \\ anstatt \ nehmen.
Bei 'net use' wird dir höchstwahrscheinlich das "" dazwischen funken.

Bei deinem zweiten Codeteil machst du das wieder richtig, aber vor dem /user Argument fehlt ein Leerzeichen.

Gruß,
Tom

12.11.2009 - 08:29 Uhr

Nur mal zur Info.

Folgender Code geht bei mir:


string dt = "05/05/2009 14:29:46";

DateTime MyDateTime;
MyDateTime = new DateTime();
MyDateTime = DateTime.ParseExact(dt, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);

Meiner Meinung nach geht das weil InvariantCulture die Trennzeichen / und : kennt.

Gruß,
Tom

11.11.2009 - 17:11 Uhr

Hallo BK01,

setz mal CultureInfo.InvariantCulture beim parsen.

Ich kenn das gar nicht ohne Provider.

Gruß,
Tom

11.11.2009 - 17:05 Uhr

Hallo Steini_666,

du hast kein FtpWebRequest.Method gesetzt.

Beispiele sind zu genüge in der MSDN FtpWebRequest.

Gruß,
Tom

06.11.2009 - 11:46 Uhr

Naja ich hatte das mal vor Jahren probiert und leider keine guten Erfahrungen damit gemacht. Das hatte in meinem Umfeld jede Hardware Firewall geblockt gehabt.

Aber heutzutage geht man da eher auf hole punching.

Gruß,
Tom

06.11.2009 - 11:23 Uhr

Hallo mrdjoker,

mittels Sockets sollte das möglich sein.

Du musst dabei beachten das du SocketType.Raw und ProtocolType.Icmp verwendest.
Das ICMP Paket musst du dann selbst erstellen und kannst somit Nutzlast mitschicken.

Gruß,
Tom

06.11.2009 - 09:26 Uhr

Hallo,

du kannst z.B. mit dem ProcessExplorer von Sysinternals nachschauen welcher Prozess die Datei gesperrt hat. (Menu - Find -> Find Handle or DLL...)

Gruß,
Tom

05.11.2009 - 14:15 Uhr

Das Gerät mag es nicht wenn man es ständig an und ausschaltet.
Da ich es aber zum entwickeln benötige muss ich das aber relativ häufig machen.

Also ich stecks halt so gefühlte 5mal pro Stunde aus und wieder ein?

Ist halt nichts im Gegensatz zu ner Decklink Karte, da merkt man den preislichen Unterschied 😉

Gruß,
Tom

05.11.2009 - 13:56 Uhr

Hallo,

Also mit dem WMC hab ich keine Erfahrung, aber mit dem VLC kannst du DirectShow Devices ansprechen.
Die meisten Grabber solltest du darüber ansprechen können.

Ich hab z.B. den Hama USB 2.0 Video Editor am Rechner und damit klappt das gut. Auch wenn der USB Grabber ab und an abraucht.

Gruß,
Tom

05.11.2009 - 11:44 Uhr

Aber dann hat das ja nichts mit dem Transfer sondern der Verarbeitung der Daten zu tun.

So wie ich das sehe sollte der Scanner, nachdem er die Daten verarbeitet hat, sich bei der Awnendung irgendwie bemerkbar machen.

05.11.2009 - 11:16 Uhr

Hallo,

bei File.Delete musst du direkt die Datei angeben nicht den Ordner.
Leider gehen dabei keine Wildcards, weshalb du dabei eine Schleife verwenden musst.

Alternativ könntest du natürlich auch den Ordner mit Directory.Delete löschen und anschliessend neu erstellen, falls ersteres zu langsam wäre.

Gruß,
Tom

05.11.2009 - 11:00 Uhr

Arbeit doch einfach asynchron und schick eine Nachricht vom Scanner an dein Programm wenn alles abgearbeitet wurde.

Gruß,
Tom

04.11.2009 - 23:34 Uhr

Hallo cordell,

ich habe dir mal einen funktionierenden Ansatz erstellt.
Alle Informationen dazu habe ich der MSDN entnommen, NetworkStream.BeginRead und NetworkStream.EndRead.


using System;
using System.Net.Sockets;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DicaClient dicaClient = new DicaClient();
            dicaClient.GetDicaData();

            Console.ReadLine();
        }
    }

    public class DicaClient
    {
        private string _dicaIp = "pop.gmx.net"; // "192.168.2.173";
        private int _dicaPort = 110; // 2001; //COM1
        private byte[] _bufferData = new byte[1024];
        private TcpClient _tcpClient;

        public string DicaString = String.Empty;

        public void GetDicaData()
        {
            try
            {
                _tcpClient = new TcpClient(_dicaIp, _dicaPort);

                NetworkStream stream = _tcpClient.GetStream();

                stream.BeginRead(_bufferData, 0, _bufferData.Length, OnReadFinished, stream);

            }
            catch (Exception e)
            {
                Console.Write(e.Message);
            }
        }

        private void OnReadFinished(IAsyncResult asyncResult)
        {
            NetworkStream stream = (NetworkStream) asyncResult.AsyncState;
            int bytesCount = stream.EndRead(asyncResult);

            DicaString = String.Concat(DicaString, Encoding.ASCII.GetString(_bufferData, 0, bytesCount));

            while(stream.DataAvailable)
                stream.BeginRead(_bufferData, 0, _bufferData.Length, OnReadFinished, stream);

            Console.WriteLine(DicaString);
        }
    }
}

Damit solltest du schon einmal weiter kommen.

Gruß,
Tom

03.11.2009 - 15:41 Uhr

Ich glaub so auf die schnelle wird das nichts was du da umsetzen willst.

Du arbeitest hier synchron. Soll heissen dein komplettes Programm steht wenn nichts geschickt wird. Es wird kein Code ausgeführt.

Du solltest dir aber wirklich die Zeit nehmen um Sachen nachzulesen von denen du offen gestanden nicht weisst was sie bewirken.

Am besten implementierst du den TCPClient asynchron. Dann kannst du auch vernfünftig abbrechen und auf die Daten reagieren.

Nachzulesen im Forum oder in der MSDN 😉

Gruß,
Tom

03.11.2009 - 14:17 Uhr

Was willst du denn jetzt genau machen?
Und hast du dir in der MSDN durchgelesen was Stream.ReadTimeout macht?

03.11.2009 - 12:41 Uhr

Hallo WienX,

du musst dich ans Form.Closed Event dranhängen. Siehe Doku.

Gruß,
Tom

03.11.2009 - 12:33 Uhr

Ja du musst schauen das dein Programm lang genug läuft damit der asynchrone Aufruf auch abgearbeitet werden kann.

Gruß,
Tom

03.11.2009 - 12:32 Uhr

Ähm zommi, er nimmt doch den TCPClient und verbindet sich zur Box.

03.11.2009 - 12:13 Uhr

Bis der Server halt sagt das die Nachricht zu Ende ist. Wenn er das nie sagt dann hockst du da in einer Endlossschleife.

Kannst ja mal zum testen ein Console.Write in die while Schleife reinstellen, dann siehst alles was du bekommst.

Gruß,
Tom

03.11.2009 - 11:13 Uhr

Ausser das die Namensgebung verwirrend ist, müsste es so theoretisch funktionieren.
Aber du nutzt derzeit synchrone Übertragung, soll heissen deine komplette Applikation steht so lange bis Daten von dem Gerät kommen.

Die Frage ist nun ob du evtl noch etwas zum Gerät schicken musst damit es etwas schickt?

Gruß,
Tom

03.11.2009 - 10:25 Uhr

Was nun, TCPClient oder Listener? 😉

Also horchst du, oder willst du dich auf einen verbinden?

Das mit UDP hab ich auch völlig überlesen.

03.11.2009 - 10:03 Uhr

Hallo cordell,

das Problem ist dein Socket.Bind. Das bindet den Socket zu der lokalen IP, und nicht die Remote IP.

Zu dem Thema ist auch [Tutorial] Client-/Server-Komponente über TCP-Sockets sehr interessant.

Gruß,
Tom

02.11.2009 - 16:08 Uhr

Hallo,

ab Vista kann man per SetCurrentConsoleFontEx den Font für die Console setzen.
Aber bei vorherigen Versionen kommt man nur per Registry dran: CONSOLE: howto change console font programmatically

Gruß,
Tom

02.11.2009 - 08:53 Uhr

Hallo jegetro,

wir nutzen zur Videokomprimierung das FFmpeg (aber nativ). Es gibt aber auch einige C# Wrapper dafür, z.B. hier FFlib.
Leider habe ich keinen grossen Überblick über die Wrapper, aber ich denke irgendeiner wird da sicherlich vernünftig funktionieren.

Gruß,
Tom

23.10.2009 - 10:40 Uhr

Hallo,

für einen schnellen Überblick schau ich immer auf SteveX Compiled >> String Formatting in C#.

Gruß,
Tom

22.10.2009 - 10:31 Uhr

Also da muss ich FZelle widersprechen.

Es gibt schon Szenarien wo es sinnvoll ist Entitäten in den Cache zu legen.

Solange du aber kein Performance Problem hast, solltest du den 0815 Stil verfolgen und den SQL Server abfragen.

Man muss halt die Vor- und die Nachteile abwägen. Caching heisst das die Daten sehr schnell zur Verfügung stehen. Das geht aber auch zu lasten des Anwendungsservers.
Ferner musst du dich auch noch um die Datensynchronität zwischen dem Anwendungs- und Datenbankservers kümmern.

Aber bei flachen, gut indizierten Tabellen wirst du kaum einen Performanceschub erleben.

Gruß,
Tom

21.10.2009 - 14:45 Uhr

Hallo,

bei mir geht das einwandfrei. Hast du vielleicht eine Firewall dazwischen?

Kannst du per telnet auf pop.gmx.com zugreifen?

Gruß,
Tom

21.10.2009 - 12:54 Uhr

Hallo,

hab mir jetzt dein Code nicht genauer angeschaut, aber ich vermute mal das die LegalBlocksize zu klein ist?

Schau mal auf CodeProject: All about Cryptography in .NET, da wird das ganze Thema Verschlüsselung recht gut erklärt.

Gruß,
Tom

20.10.2009 - 10:51 Uhr

SHGetFileInfo gab es schon lange vor dem .NET Framework und unsauber ist das in keinster Weise.

Icon.ExtractAssociatedIcon kann halt durchaus andere Ergebnise liefern als vielleicht erwartet (siehe remarks)

Gruß,
Tom

20.10.2009 - 10:42 Uhr

Hallo,

Icon.ExtractAssociatedIcon gibt aber evtl auch die Miniaturansicht der Datei wieder (wenn verfügbar).

Ich geh da über SHGetFileInfo siehe: How to use the SHGetFileInfo function to get the icons that are associated with files in Visual C# .NET

Gruß,
Tom

19.10.2009 - 18:54 Uhr

Hallo,

du kannst dir auch Bibliothek für ID3v1/ID3v2 Tags in mp3-Dateien anschauen.

Und wenn es nicht zum lernen ist, würde ich auf schon bestehende libs zurückgreifen.

Gruß,
Tom

19.10.2009 - 12:54 Uhr

Hallo,

Keine Ahnung ob man die abstellen kann, wieso auch?

Die entsteht durch C++ Projekte, siehe: Managed Extensions for C++-Projekte erstellte Dateitypen

Gruß,
Tom

19.10.2009 - 12:14 Uhr

Hallo MacThemAlll,

und willkommen im Forum.

Siehe: [FAQ] Textbox: Signalton nach drücken der Eingabetaste unterdrücken

Gruß,
Tom

18.10.2009 - 22:02 Uhr

Hier eine Fassung die funktioniert.


    class Program {
        static void Main(string[] args) {
            Connect("localhost");
        }

        static void Connect(string server) {
            int port = 51234;
            string saPass = "password";

            List<byte[]> cmdList = new List<byte[]>();

            cmdList.Add(Encoding.ASCII.GetBytes("sl\r\n")); // Send 1st command twice, because 1st command will throw an error at the server
            cmdList.Add(Encoding.ASCII.GetBytes("sl\r\n"));
            cmdList.Add(Encoding.ASCII.GetBytes("sel 8767\r\n"));
            cmdList.Add(Encoding.ASCII.GetBytes("slogin superadmin " + saPass + "\r\n"));
            cmdList.Add(Encoding.ASCII.GetBytes("msg Test\r\n"));

            using (TcpClient client = new TcpClient(server, port))
            {
                using (NetworkStream stream = client.GetStream())
                {
                    byte[] recdata = new byte[client.ReceiveBufferSize];

                    foreach (byte[] cmd in cmdList)
                    {
                        Console.WriteLine("Send " + Encoding.ASCII.GetString(cmd));

                        stream.Write(cmd, 0, cmd.Length);

                        if (stream.CanRead)
                        {
                            stream.Read(recdata, 0, recdata.Length);

                            Console.WriteLine("Received " + Encoding.ASCII.GetString(recdata));
                        }
                    }
                }
            }

            Console.WriteLine(Environment.NewLine + "Press Enter to continue...");
            Console.Read();
        }
        }

Du hast vergessen die CRLFs mit zu schicken. Du hast auch die Befehle hintereinander geschickt und dann liest du am Schluss 3mal vom Stream was überhaupt kein Sinn macht.

Du solltest ein Befehl abschicken, und anschliessend das Ergebnis vom Server auswerten und entsprechend darauf reagieren.

Gruß,
Tom

18.10.2009 - 19:31 Uhr

Bitte beachte Punkt 5: [Hinweis] Wie poste ich richtig?

Was geht wo nicht? Ich hab kein Zugriff auf ein Teamspeak Server.
Von daher kann ich das auch nicht ausprobieren, deshalb ist es wichtig konkrete und auch verständliche Fehlermeldungen zu posten.

Wo bleibt er hängen, und was spuckt er aus?

Gruß,
Tom

15.10.2009 - 22:39 Uhr

Hallo,

das ist die implizierte Konvertierung, er wandelt das Ergebnis deiner Multiplikation in Int32 um, d.h. du musst noch auf short casten.

Siehe:*short (C#) *Umwandlung und Typkonvertierungen *Tabelle für implizite numerische Konvertierungen

Gruß,
Tom

14.10.2009 - 22:55 Uhr

Ah ok jetzt versteh ich dich.

Gut zu wissen!

Gruß,
Tom

14.10.2009 - 16:38 Uhr

Also das mit den DCOMs verstehe ich immer noch nicht.

Wieso verwendest du nicht z.B. MSDN: How to: Read Event Log Entries, oder z.B. hier beschrieben How to manage event logs using Visual C# .NET or Visual C# 2005.

Gruß,
Tom

14.10.2009 - 15:10 Uhr

Hallo ai.se,

das steht auf der Seite die ich weiter oben schon gepostet habe.
CheckedItems ist eine Collection die du durchgehen kannst.

Das sind aber Basics!
Geh doch einfach mal das Beispiel in der MSDN durch.

Gruß,
Tom

14.10.2009 - 15:06 Uhr

Hallo Kaltar,

was genau willst du denn machen, und wieso nutzt du DCOM dafür und nicht die Standard Mittel vom Framework?

Gruß,
Tom

14.10.2009 - 15:01 Uhr

Du erstellst den Client bei dir, und versuchst in mit der IP Adresse 10.10.140.2 und dem Port 21 bei dir lokal zu binden.

Bitte lies dir MSDN: TcpClient und MSDN: IPEndPoint mal durch.

Auch müsstest du mit einer Suche im Forum einiges finden können. FTP Verbindungen sind oft gefragtes Thema 😃

Gruß,
Tom

14.10.2009 - 14:46 Uhr

Hallo tom-essen,

ich hab jetzt da nur so 'Halbwissen' in dem Bereich, aber ich versuch es trotzdem mal.

Soviel ich weiss wird der Zwischenraum als Durchuss bezeichnet. Bei Wikipedia schreiben die auch von 20% und das habe ich auch noch in dunkler Erinnerung.

Aber das solltest du dir am Besten selbst durchlesen 😃*Zeilenabstand *Durchuss *Letter

Gruß,
Tom

14.10.2009 - 14:29 Uhr

Hallo,

an was happert es denn genau? Hast du dir mal die Beispiele in der MSDN: CheckedListBox angeschaut, da greifen die auf die aktivierten CheckBoxen zu.

Was hast du denn bisher probiert?

Gruß,
Tom

13.10.2009 - 10:20 Uhr

Auf genau das wollte ich dich hinweisen.

Gehe nie davon aus, dass der Anwender auch genau das eingibt was du gerne haben möchtest.
Prüfe immer alle Eingaben!

Gruß,
Tom

13.10.2009 - 09:45 Uhr

Hallo TheCoon,

Probier mal folgendes in deinem Programm:

Wieviele URIs möchten sie eingeben?
Fuenf

Bitte eine URI eingeben:
google.de

Gruß,
Tom