Laden...

Forenbeiträge von David_Ilm Ingesamt 82 Beiträge

26.05.2012 - 14:45 Uhr

Hallo Leute,

ich habe hier ein PDF File welches Felder zum ausfüllen hat. Jedes dieser Felder hat eine ID damit das feld eindeutig zugewiesen werden kann. Gibt es mit C# eine Möglichkeit diese ID's auszulesen?

Ich dacht das an etwas wie ich markiere eine Feld und ein Tooltip zeigt mir die ID des Feldes an.

05.10.2011 - 14:30 Uhr

Hallo rongchaua

an diese Idee hab ich auch schon gedacht. Nachteil ist aber dabei das der User angemeldet sein muss aber ich werde es glaube ich erstmal so Probieren und später dann mal schauen ob ich eine besser Lösung finde.

05.10.2011 - 13:12 Uhr

Hallo BerndFfM

danke schon mal für deine Antwort. Ein Faxware oder ähnliches benutze ich nicht wenn dann wollte ich es direkt an den FaxDrucker senden.

Ich kram nun auch schon seit Stunden auf diesen Seiten rum https://www.developers.canon-europa.com/ aber bis jetzt hab ich dort noch nichts wirklich brauchbares gefunden.

05.10.2011 - 11:18 Uhr

Hallo Leute

ich habe hier einen Cannon Drucker der unter anderem auch als FAX Verwendet werden kann. Also Fax Treiber installiert und schon ist auch ein Fax Drucker vorhanden. Nehme ich jetzt eine Dokument und drucke dies auf den Fax Drucker öffnet sich ein Dialog in dem ich die Empfängernummer angeben muss.

Jetzt würde ich das ganze gerne Programm gesteuert mach und die Nummer gleich mitgeben so das sich nicht erst dieser Dialog des Druckers öffnet.

Hat so etwas schon mal jemand gemacht? Wie ich ein Dokument mit C# Drucke ist keine Problem aber wie gebe ich zb.: die Empfängernummer mit an den Drucker?

23.05.2011 - 13:39 Uhr

Hallo gfoidl

gesucht hab ich schon aber nicht wirklich eine Lösung gefunden.

Auch diese Beispiel hier habe ich bereits versucht

Console als Steuerelement einbinden

zusätzlich hab ich noch den RedirectStandardError hinzugefügt.

Dennoch hab ich die selben Problem bei zb: ftp.exe

23.05.2011 - 11:10 Uhr

Hallo

ich beschaftige mich gerade ein wenig mit RedirectStandardInput/ RedirectStandardOutput. Am Anfang hatte ich als Process cmd.exe genommen dabei ist mir bereits aufgefallen das immer die letzte Zeile der Ausgabe fehlte.

Wenn ich ftp.exe nehme ist es noch schlimmer.

Gleich nach dem Start fehlt schon "ftp>" lasse ich mir dann die Befehlsliste mit Hilfe von "?" anezeigen kommt nur "Befehle können abgekürzt werden. Befehle sind:" aber die Befehlsliste wird abgeschnitten.

Womit hängt das zusammen?


        ProcessStartInfo psi = new ProcessStartInfo("ftp.exe");
        Process p = new Process();
        StreamWriter myStreamWriter;

        public Form1()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            StartProcess();
        }

        private void StartProcess()
        {
            psi.RedirectStandardOutput = true;
            psi.UseShellExecute = false;
            psi.RedirectStandardInput = true;
            p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
            p.StartInfo = psi;
            p.Start();
            p.BeginOutputReadLine();
            myStreamWriter = p.StandardInput;
         }

        void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
        {
            if (e.Data != null)
            {
                TextBoxOutputText(e.Data.ToString());
                Console.WriteLine(e.Data);
            }
        }

        private delegate void TextBoxOutputTextDelegate(string Data);
        private void TextBoxOutputText(string Data)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new TextBoxOutputTextDelegate(TextBoxOutputText), new object[] { Data });
                return;
            }

            textBox1.AppendText(Data + "\r\n");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            myStreamWriter.WriteLine(textBox2.Text);
            
        }

07.01.2011 - 15:40 Uhr

Hallo Leute,

ich habe mir eine Setup zusammengestellt was mehrere einzelne Anwendungen beinhaltet.
Bisher war diese Setup nur für WinXp doch nach und nach hält Win7 auch bei uns Einzug.
Also hab ich mich daran gemacht das Setup so aufzubereiten das es unter Win7 x86 als auch x64 Funktioniert. Bis auf eine Kleinigkeit ich muss immer erst Rechte Maustaste auf das Setup und dann als Administrator ausführen kann ich nicht irgendwie dem Setup schon von vorne rein sagen du Funktionierst nur mit dieser Option? So das der Anwender nicht erst Explizit auf Ausführen als Admin klicken muss?

10.11.2009 - 09:40 Uhr

Da beide auf die gleiche Hardware und die gleiche Schnittstelle zugreifen sage ich mal ja.

10.11.2009 - 08:58 Uhr

Mein Problem liegt im Aufruf einer Funktion von einer C++ Dll. Wenn ich die Funktion „G_Can_Monitor_BufferMode_GetItems“ aufrufe wird beendet sich die Anwendung
mit folgender Meldung im Ausgabefenster.

„...Verwaltet" wurde mit Code -1073740791 (0xc0000409) beendet.“

Bin so langsam am verzweifeln. Was mach ich Falsch?



        public enum G_Can_Monitor_BufferItem_Flags_t : ushort
        {
            NONE = 0x0000,
            EXTENDED_ID = 0x0001,
            TRANSMIT = 0x0002,
            ERROR_FRAME = 0x0004,
            EVENT = 0x0010,
            BUFFER_OVERRUN = 0x0080,
            DLL_BUFFER_OVERRUN = 0x8000
        }

        [StructLayout(LayoutKind.Explicit)]
        public unsafe struct G_Can_Monitor_BufferItem_t
        {
            [FieldOffset(0)]
            public UInt64 TimeStamp;
            [FieldOffset(8)]
            public uint Id;
            [FieldOffset(12)]
            public G_Can_Monitor_BufferItem_Flags_t BufferItemFlag;
            [FieldOffset(14)]
            public byte Dlc;
            [FieldOffset(15)]
            public byte reserved;
            [FieldOffset(16)]
            public fixed byte Data[8];
        }

        [DllImport("g_api_can.dll")]
        internal static extern uint G_Can_Monitor_BufferMode_GetItems(uint PortHanlde, uint bufferSize, ref uint numberOfItems,
           ref G_Can_Monitor_BufferItem_t[] cBufferItems);


private void Run()
{
               uint NumberOfItems = 0;
                G_Can.G_Can_Monitor_BufferItem_t[] BufferItems = new G_Can.G_Can_Monitor_BufferItem_t[5000];

                uint Buffersize = Convert.ToUInt32(BufferItems.Length*24);

                while (m_run)
                {
                    Error = G_Can.G_Can_Monitor_BufferMode_GetItems(m_uintPortHandle, Buffersize, ref NumberOfItems, ref BufferItems);
                    Console.WriteLine(NumberOfItems.ToString());
                    if (Error != 0) { Console.WriteLine(G_Api_Functions.G_GetLastErrorDescription()); }
                }
}
[

So schaut es in C++ wo es Funktioniert



typedef u16_t G_Can_Monitor_BufferItem_Flags_t;

#define G_CAN__MONITOR__BUFFER_ITEM__FLAG__NONE \
	((G_Can_Monitor_BufferItem_Flags_t) 0x0000)

#define G_CAN__MONITOR__BUFFER_ITEM__FLAG__EXTENDED_ID \
	((G_Can_Monitor_BufferItem_Flags_t) 0x0001)

#define G_CAN__MONITOR__BUFFER_ITEM__FLAG__TRANSMIT \
	((G_Can_Monitor_BufferItem_Flags_t) 0x0002)

#define G_CAN__MONITOR__BUFFER_ITEM__FLAG__ERROR_FRAME \
	((G_Can_Monitor_BufferItem_Flags_t) 0x0004)

#define G_CAN__MONITOR__BUFFER_ITEM__FLAG__EVENT \
	((G_Can_Monitor_BufferItem_Flags_t) 0x0010)

#define G_CAN__MONITOR__BUFFER_ITEM__FLAG__BUFFER_OVERRUN \
	((G_Can_Monitor_BufferItem_Flags_t) 0x0080)

#define G_CAN__MONITOR__BUFFER_ITEM__FLAG__DLL_BUFFER_OVERRUN \
	((G_Can_Monitor_BufferItem_Flags_t) 0x8000)

typedef struct {
	u64_t  Timestamp; //ns
	u32_t  Id;

	G_Can_Monitor_BufferItem_Flags_t  Flags;
	u8_t  Dlc;
	u8_t  reserved;

	u8_t  Data[8];
} G_Can_Monitor_BufferItem_t;

Sample_Monitor(
	const G_PortHandle_t  portHandle
)
{
	G_Error_t  rc;
	G_Can_Monitor_BufferItem_t  bufferItems[1000];
	rc =
		G_Can_Monitor_BufferMode_GetItems(
			portHandle,
			sizeof(bufferItems),
			&numberOfItems,
			bufferItems
		);
}

25.02.2009 - 22:39 Uhr

Ich lese derzeit mit Hilfe eine SerialPorts und eine IRDA Schnittstelle die gesendeten Daten meiner Mufu. Fernbedienung ein. Das klappte alles recht gut. Bis auf das ich in den eingelesenen Daten keine Muster erkennen kann welche Taste gedrückt wurde.

Villeicht gehe ich auch ganz Falsch an die Sache ran. Was sagt ihr dazu oder erkennt ihr ein Muster?

Jede Zeile ist ein kurzer Tasten druck.

Daten für Taste 1



 243 179 251 187 251 251 251 243 243 243 243 243 179 243
 251 251 243 179 179 187 251 251 251 243 243 243 251
 179 179 179 251 243 243 179 179 179 179 187 251 179
 187 251 243 179 179 179 179 251 251 251 251 243 243 187
 243 243 251 251 251 251
 179 179 251 243 243 179 179 179 179 187 251 251 251 179


Daten für Taste 2



 179 179 179 251 243 243 179 179 179 179 251 179 251
 243 179 251 251 243 243 243 243 179 179 179 187 179 251
 243 243 179 243 251 243 243 243 243 179 179 179 179 251
 251 251 243 179 179 251 251 251 251 243 243 243 251 243
 179 179 187 243 179 179 179 179 179 187 251 251 179 251
 243 179 251 251 251 243 243 243 179 179 179 179 179 251


18.12.2008 - 11:59 Uhr

Habe mal mit Robert G seinem Beispiel meine eigene DLL zu laden.

Code meiner DLL nichts großes nur mal zum Testen


    public class Class1
    {
        public int Zahl()
        {
            return 123;
        }
    }

Dann mein aufruf


delegate int Test();
private void simpleButton1_Click(object sender, EventArgs e)
{

            Library finalizedLib = Library.Load("Test.dll");
            Test test;
            test = finalizedLib.WrapFunction("Zahl", typeof(Test)) as Test;

            test();
}

Beim Aufruf test() bekomme ich immer wieder diese Exception.

Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.

Nun weiß ich nicht so richtig was ich falsch mache.
Wird die DLL nicht geladen?
Wird die Funktion nicht gefunden?

23.10.2008 - 13:20 Uhr

Ja ist ja richtig herbivore hat mir ja auch alles schon ein wenig weitergeholfen.

  • Die Aktualiesierung der TextBox macht jetzt ein Tmer alles 100ms.
  • Application.DoEvents() ist auch rausgeflogen.
  • Der ThreadRefreshTextBox auf weg wird ja jetzt durch den Timer gemacht.

Dennoch ist so das wenn die tag’s schneller als 40ms ankommen wird die Textbox nicht mehr aktualisiert bzw. erst dann wenn keine tag’s mehr gesendet werden.

Ich glaube langsam das ich an die Leistungsgrenze von PocketPc’s gerade.

23.10.2008 - 10:41 Uhr

Ja im Moment findet keine Datenauswertung statt. Da ich Erstmal schauen will das ich schnell genug die Daten in die Anwendung bekomme.

Application.DoEvents(); <-- Sorry mein Fehler hatte ich nur mal kurz zu Testzwecken eingebaut

Der Thread der da läuft soll mir ja nur die TextBox in einem bestimmten Intervall Aktualisieren. Dachte es wäre die beste Möglichkeit für das Aktualisieren unabhängig vom lesen des sockets.
Aber ich lasse mich gerne eines besseren belehren . 😉

Ich kann auch mal das Komplette Projekt anhängen. Ist aber wie schon gesagt eine Pocket PC Anwendung.

23.10.2008 - 09:33 Uhr

Ich hab mir jetzt mal eine kleine Anwendung gebaut welche ausschließlich den Stream in eine String variable schreibt und ein anderer Thread diesen String in einer Textbox anzeigt.
Ein XML tag ist ca. 120byte lang ich schaffe es aber nicht diese tag’s schneller als 40ms einzulesen. Sowie ich diese schneller als 40ms bekomme gerät erstmal alles in stocken.

Ich weiß nun aber auch so langsam echt nicht mehr weiter.
Habt ihr eventuell noch eine Idee?

Hier mal der Code meiner Test App.


delegate void AddMessage(string sNewMessage);

    public partial class Form1 : Form
    {
        // My Attributes
        private Socket m_sock;						
        private byte[] m_byBuff = new byte[256];	
        private event AddMessage m_AddMessage;		
        private string fMessage;
        private Thread cThread;
        public double Time;
        
        public Form1()
        {
            InitializeComponent();

            m_AddMessage = new AddMessage(OnAddMessage);
        }

        private void m_btnConnect_Click(object sender, System.EventArgs e)
        {
            Cursor cursor = Cursor.Current;
            Cursor.Current = Cursors.WaitCursor;
            try
            {
               
                if (m_sock != null && m_sock.Connected)
                {
                    m_sock.Shutdown(SocketShutdown.Both);
                    System.Threading.Thread.Sleep(10);
                    m_sock.Close();
                }

                
                m_sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                
                IPEndPoint epServer = new IPEndPoint(IPAddress.Parse(m_tbServerAddress.Text), 1600);

                // m_sock.Connect( epServer );
                // SetupRecieveCallback( m_sock );

                m_sock.Blocking = false;
                AsyncCallback onconnect = new AsyncCallback(OnConnect);
                m_sock.BeginConnect(epServer, onconnect, m_sock);

                cThread = new Thread(ThreadRefreshTextBox);
                cThread.Start();


            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "Server Connect failed!");
            }
            Cursor.Current = cursor;
        }

        public void OnConnect(IAsyncResult ar)
        {

            Socket sock = (Socket)ar.AsyncState;

            try
            {
                //sock.EndConnect( ar );
                if (sock.Connected)
                    SetupRecieveCallback(sock);
                else
                    MessageBox.Show("Unable to connect to remote machine Connect Failed!");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "Unusual error during Connect!");
            }
        }

        public void OnRecievedData(IAsyncResult ar)
        {
            
            Socket sock = (Socket)ar.AsyncState;
           
            try
            {
                int nBytesRec = sock.EndReceive(ar);
                if (nBytesRec > 0)
                {
                    
                    string sRecieved = Encoding.ASCII.GetString(m_byBuff, 0, nBytesRec);

                 
                    fMessage = sRecieved;

                    
                    SetupRecieveCallback(sock);
                    Application.DoEvents();
                }
                else
                {
                    
                    Console.WriteLine("Client {0}, disconnected", sock.RemoteEndPoint);
                    sock.Shutdown(SocketShutdown.Both);
                    sock.Close();
                }
                
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "Unusual error druing Recieve!");
            }
            
        }

        public void OnAddMessage(string sMessage)
        {
            textBox1.Text = sMessage;
        }

        public void SetupRecieveCallback(Socket sock)
        {
            try
            {
                AsyncCallback recieveData = new AsyncCallback(OnRecievedData);
                sock.BeginReceive(m_byBuff, 0, m_byBuff.Length, SocketFlags.None, recieveData, sock);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "Setup Recieve Callback failed!");
            }
        }

        private void FormMain_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            if (m_sock != null && m_sock.Connected)
            {
                m_sock.Shutdown(SocketShutdown.Both);
                m_sock.Close();
            }
        }


        private void m_btnSend_Click(object sender, System.EventArgs e)
        {
          
            if (m_sock == null || !m_sock.Connected)
            {
                MessageBox.Show("Must be connected to Send a message");
                return;
            }

            try
            {
               
                Byte[] byteDateLine = Encoding.ASCII.GetBytes(m_tbMessage.Text.ToCharArray());
                m_sock.Send(byteDateLine, byteDateLine.Length, 0);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "Send Message Failed!");
            }
        }

        private void ThreadRefreshTextBox()
        {
            while (true)
            {
                Invoke(m_AddMessage, new string[] { fMessage });
                Thread.Sleep(10);
            }
        }
    }

[/code]

19.10.2008 - 15:41 Uhr

Ja das könnte auch sein. Ich denke auch mal mein Code ist nicht wirklich performant. Weiß aber auch nicht genau wie jetzt anders herangehen soll(Baustelle im Kopf).

Wäre schön wenn ihr mir schildern könnte wie ihr herangehen würdet.

Socket Klasse


       public void MyTCPListen()
        {
            byte[] buffer = new byte[0];
         
                while (recSocket.Connected)
                {
                    try
                    {
                        Send("");
                        if (recSocket.Available > 0)
                        {
                            int AnzahlDaten = recSocket.Available;
                            byte[] recBytes = new byte[AnzahlDaten];

                            recSocket.Receive(recBytes, 0, AnzahlDaten, SocketFlags.None);

                            if (data == "")
                            {
                                buffer = new byte[recBytes.Length];
                                recBytes.CopyTo(buffer, 0);
                            }
                            else
                            {
                                byte[] dummy = buffer;
                                buffer = new byte[recBytes.Length + dummy.Length];
                                dummy.CopyTo(buffer, 0);
                                recBytes.CopyTo(buffer, dummy.Length);
                            }

                            data += Encoding.Default.GetString(recBytes, 0, AnzahlDaten);
                            int firstindex = data.LastIndexOf("<Seite>");
                            int lastindex = data.LastIndexOf("</Seite>");
                            if (lastindex > 0 && firstindex < lastindex && firstindex >= 0)
                            {
                                if (Regex.IsMatch(data, "</Seite><Seite>"))
                                {

                                    string[] arrData = Regex.Split(data, "<Seite>");
                                    data = "<Seite>" + arrData[arrData.Length - 1];
                                    byte[] dummy = buffer;
                                    buffer = new byte[data.Length];
                                    Array.Copy(dummy, dummy.Length - data.Length, buffer, 0, buffer.Length);
                                    firstindex = data.LastIndexOf("<Seite>");
                                    lastindex = data.LastIndexOf("</Seite>");
                                }

                                if (data.Length > lastindex + 8) { data = data.Remove(lastindex, data.Length - lastindex + 8); }
                                if (firstindex > 0) { data = data.Remove(0, firstindex); }

                                if (Regex.IsMatch(data, "<Werte Position"))
                                {
                                    OnNewMessages(7, data, buffer);
                                }

                                if (Regex.IsMatch(data, "<Hande"))
                                {
                                    OnNewMessages(0, data, buffer);
                                }
                                if (Regex.IsMatch(data, "<Anmelden>"))
                                {
                                    OnNewMessages(1, data, buffer);
                                }
                                if (Regex.IsMatch(data, "<Masch>"))
                                {
                                    OnNewMessages(2, data, buffer);
                                }

                                if (Regex.IsMatch(data, "<Anzeige"))
                                {
                                    OnNewMessages(3, data, buffer);
                                }

                                if (Regex.IsMatch(data, "<Fehler"))
                                {
                                    OnNewMessages(4, data, buffer);
                                }

                                if (Regex.IsMatch(data, "<Nachricht"))
                                {
                                    OnNewMessages(5, data, buffer);
                                }

                                if (Regex.IsMatch(data, "<BildData>"))
                                {
                                    OnNewMessages(6, data, buffer);
                                }

                                lastindex = -1;
                                firstindex = -1;
                                data = "";
                                buffer = null;

                          }

                      }
                      Thread.Sleep(2);
                    }
                    catch (Exception ex)
                    {
                        if (!bAbort)
                        {
                            OnNewMessages(60, "aus", null);
                            Stop();
                            Start();
                        }
                    }
             
            }
        }

Formular


      private delegate void AnmeldungShowDelegate(int Formular,string Daten,byte[] recByte);
        private void AnmeldungShow(int Formular,string Daten,byte[] recByte)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new AnmeldungShowDelegate(AnmeldungShow),new Object[] {Formular,Daten,recByte});
                return;
            }
            Exit = true;
            bool picture = false;
            XmlDocument XMLData = new XmlDocument();
            if ( Formular != 6 && Daten != "aus") { XMLData.Load(new StringReader(Daten)); }

            switch (Formular)
            {
                case 0:
                    EnablePanles();
                    setValuesHandeingabe(XMLData);
                    uc_Handeingabe1.Visible = true;
                    pictureBox2.Visible = picture;
                    break;
                case 1:
                    EnablePanles();
                    setValuesAnmeldung(XMLData);
                    uc_Anmeldung1.Visible = true;
                    pictureBox2.Visible = picture;
                    break;
                case 2:
                    EnablePanles();
                    setValuesStart(XMLData);
                    uc_Start1.Visible = true;
                    pictureBox2.Visible = picture;
                    break;
                case 3:
                    setValuesPruefung(XMLData);
                    uc_Pruefung1.Visible = true;
                    pictureBox2.Visible = picture;
                    break;
                case 4:
                    EnablePanles();
                    setValuesFehler(XMLData);
                    pictureBox2.Visible = picture;
                    if (XMLData.GetElementsByTagName("Fehlercode").Count > 0)
                    {
                        uc_FehlerCode1.Visible = true;
                    }
                    else
                    {
                        uc_Fehler1.Visible = true;
                    }
                    break;
                case 5:
                    EnablePanles();
                    setValuesNachricht(XMLData);
                    pictureBox2.Visible = picture;
                    uc_Nachricht1.Visible = true;
                    break;
                case 6:
                    Cursor.Current = Cursors.WaitCursor;
                    Cursor.Show();
                    m_strXMLDataString = Daten;
                    if (Daten.EndsWith("</BildData></BildData></Seite>"))
                    {
                        XMLData.Load(new StringReader(Daten.Substring(Daten.IndexOf("<Bild width"), Daten.IndexOf("</Bild>") - Daten.IndexOf("<Bild width") + 7)));
                        try
                        {
                            bmp = new Bitmap (cPicture.getBitmap (XMLData.GetElementsByTagName ("Bild").Item (0).InnerText.ToString (), recByte, Daten));
                        }
                        catch { }
                        pictureBox2.Image = (bmp);
                        SizeBitmapSmall();
                        pictureBox2.Visible = true;
                        picture = true;
                        m_bWaitForPicture = false;
                    }
                    Cursor.Current = Cursors.Default;
                    break;
                case 7:
                    uc_Pruefung1.setAnzeigerValues(XMLData);
                    break;
                case 60:
                  //  timer1.Enabled = true;
                    pictureBox2.Visible = picture;
                    Standby();
                    break;
            }
}

18.10.2008 - 11:33 Uhr

Hab eine Anwendung geschrieben für einen Pocket PC welche XML Daten über TCP/IP Empfängt und visualisiert. Derzeit wirft mehr der Thread welcher die Daten vom Socket holt eine Event „NewMessages“ auf welches im Form reagiere und die XML Daten auswerte und anzeige. Leider ist es so das es mit der Zeit immer langsamer wird, sich die Daten an dem Socket stauen und die Anwendung nicht mehr hinterher kommt um die Daten auszuwerten. Gibt es eine schnellere Methode als die Lösung mit dem Event händler?

public void MyTCPListen()
        {
            byte[] buffer = new byte[0];
            try
            {

                while (recSocket.Connected)
                {
                        if (recSocket.Available > 0)
                        {
                            int AnzahlDaten = recSocket.Available;
                            byte[] recBytes = new byte[AnzahlDaten];

                            recSocket.Receive(recBytes, 0, AnzahlDaten, SocketFlags.None);

                             //Do Somthing
                             {
                               ......
                              }
                              OnNewMessages(buffer);                            

                          }
                  }
        }
21.05.2008 - 15:44 Uhr

Problem hat sich erledigt.

Für die auf das selbe Problem mal stoßen sollten.
Folgendes habe ich gemacht.
Microsoft ReportViewer Installiert Microsoft ReportViewer Upgrade Installiert Microsoft ReportViewer LanguagePack Installliert

21.05.2008 - 14:52 Uhr

Jungs ich habe eine Probleme 😦. Habe eine Windows Forms Anwendung welche mir einen Report anzeigt. Der Report besteht derzeit nur aus einem Bild also keine große Sache. Auf meinem Lokalen Rechner auf dem auch die Entwicklungsumgebung Installiert ist Funktioniert es einwandfrei. Auf einem weiteren WinXP Rechner musste ich erst noch den ReportViewer von Microsoft nachträglich installieren aber dann lief es auch. Nun arbeite ich auf einem Windows Server 2003. ReportViewer Installiert und wenn ich nun die Anwendung starte kommt der Report Viewer hoch zeigt seinen Wait Couror mit dem Hinweis „Report is being generated“ und dann stürzt die Komplette Anwendung ab ohne Fehlermeldung oder ähnliches.

Hat vielleicht schon mal jemand das selbe Problem gehabt?

26.09.2007 - 09:43 Uhr

Ich habe hier ein DataSet welche über ODBC auf Access schaut. Die Tabellen Strucktur schaut so aus.

ID
Vorname
Name

In einem DataSet ist es ja so das man für Spalte ein Caption und ein Source definieren kann. Genau darum geht es mir kann ich diese Zuordnung aus einer Textdatei einlesen?

So könnte die txt aussehen:

Caption | Source

ID | IDDB
Vorname | VornameDB
Name | NameDB

Zu welchem Zweck will ich das machen? Es ist so das ich einen Abzug der Tabelle in Access bekommen hab sowie eine Tabellen Definition des eigentlichen Datenbank Servers an den ich später via ODBC andocken soll. Nun ist es so das in Access die spalten der Tabelle anders heißen als auf dem Datenbank Server. Wenn ich nun die Möglichkeit hätte diese Tabellen def. einzulesen und somit die Zuordnung zwischen Caption und Source im DataSet machen könnte würde mir das die Arbeit sehr erleichtern.

Hoffe ich hab mich so einigermaßen verständlich ausgedrückt 😉

17.07.2007 - 14:13 Uhr

Habe vor mit C# .net2.0 E-Mails zu versenden und zu Empfangen.
Zum versenden hab ich die SMTP Klasse gefunden. Aber zum Empfangen wollte ich gerne den POP3 Zugang gibt’s dafür auch im Framework bereits eine Klasse oder sollte ich anders herangehen? Wie würdet ihr den Empfang verwirklichen?

18.04.2007 - 09:32 Uhr

Ich bin mir nicht zu 100% sicher aber ich denke nicht.

11.04.2007 - 12:32 Uhr

Nein lieder nicht von Haus aus ist auf den Geräten nur 1.0 drauf deswegen ja auch die extra Anwendung die dann 2.0 Installiert und die anderen Anwendungen welche ich bereits geschrieben habe.

11.04.2007 - 11:18 Uhr

Ich stehe hier vor einem kleinen Problem möchte gerne eine Anwendung mit .net1.0 schreiben welche ein Programm von der Speicherkarte nach einem Cold Reset auführt.
Der Automatische Programm start ist kein Problem da ich ide Anwendung im Autoinstall Ordner auf dem PocketPC ablegen werde.
Viel mehr liegt mein Problem darin das bei .net 1 und PocketPC kein System.Diagnostics.Process gibt.

Gibt es noch eine Andere möglichkeit ein externe Programm aufruf zu machen?

25.12.2006 - 15:38 Uhr

Hab bisher immer nur mit MSSQL gearbeitet das ging ja wunderbar. Nun wollte ich mal mit MySQL Arbeiten und da geht’s schon los.

Hab mir erstmal einen MySql Connector.Net runter geladen und diesen installiert. Nun habe ich gelesen das man ihn in der Toolbox wieder findet. Da gibt’s aber nix was nur im geringsten MySQL heißt.

Wäre nett wenn mir mal jemand ein kleines HowTo geben könnte damit ich mit diesem Connector arbeiten kann.

19.11.2006 - 23:29 Uhr

Ja so ähnlich meine ich das nur das die ausgabe so aussehen sollte


MaschinenNr        |    Fehlercode   |    Fcodestelle1 | Fcodestelle2 | Fcodestelle3 |
---------------------------------------------------------------------------------------------
450                        ABC                     Fehler A         Fehler B          Fehler C

19.11.2006 - 11:32 Uhr

Wie es die Überschift schon sagt möchte ich gerne eine SQL mit substring machen.
Die Anweisung sieht bis jetzt so aus:


SELECT     PRUEFUNGEN.MASCHINENNR, 
                PRUEFFEHLER.FEHLERCODE,    
                FCODELISTE.BEZEICHNER,
FROM        PRUEFUNGEN INNER JOIN
                FCODELISTE ON SUBSTRING(PRUEFFEHLER.FEHLERCODE, 1, 1) = FCODELISTE.CODE AND FCODELISTE.VORIGECODESTELLE = '0'
WHERE     (PRUEFUNGEN.MASCHINENNR = @Maschinennr)

Soweit funktioniert das ganze auch das Problem ist nur das "PRUEFFEHLER.FEHLERCODE" 3 stellen haben kann zb.: ABC so nun müßte ich den Teil der Abfrage mit dem Substring drei mal einsetzen und die substring stelle anpassen.
So und nun kommt auch mein Problem, ich muss der Abfrage jetzt irgendwie beibringen das ich noch 2 weitere spalten hab durch die anderen zwei stellen im Fehlercode. Aber wie?

19.10.2006 - 13:15 Uhr

Ja so ungefähr hab ich auch schon darüber nachgedacht nur das ich mich eventuell der XMLDocument Klasse bedienen wollte um es mir zu vereinfachen.

19.10.2006 - 12:52 Uhr

Hab im Moment voll die Baustelle im Kopf. Weiß nicht so richtig was die beste Herangehensweise ist.
Habe einen TCP Listener über welchen ich einen XML-String übermittelt bekomme.
In diesem XML-String ist beschrieben welches Formular eingeblendet werden soll und wie die einzelnen Element z.B. Labels beschriftet sind.

Nun hatte ich es so versucht ich habe mir für jedes Formular ein DataSet gemacht die Daten aus dem XML-String an das DataSet Übergeben und dann per Databindings an die einzelnen Element gebunden. Das geht leider vorn Baum da es viel zu langsam ist.

Wie würdet ihr herangehen?

22.09.2006 - 15:44 Uhr

habe mir eine Anwendung geschrieben die auf beiden Platformen laufen soll.
Leider ist es so das bei WinCe der Formular etwas ander ist als bei Win Mobile 2003

Nun dachte ich mir ich frage einfach vorher ab welches OS nun mach ich das auch mit folgendem Code


  textBox1.Text += Environment.Version.ToString()

Und jetzt kommt mein Problem

Gerät mit Windows Mobile 2003 Ausgabe in der TextBox:
"Microsoft Windows CE 4.21.1088"

Gerät mit Windows CE Ausgabe in der TextBox:
"Microsoft Windows CE 5.0.1400"

Wie stelle ich denn nun fest um welche OS es sich Handelt? an den Versionen kann ich das jawohl nicht wirklich fest machen, denn wenn dann jemand mal eine neuerer Version von CE oder Mobile hat, dann hab ich ja wieder nen Problem.

17.07.2006 - 11:40 Uhr

Wie es schon die Überschrift sagt möchte ich gerne einen String Konvertieren hab es so Probeirt

Convert.ToByte(stringtest)

aber sowie in dem String zum Beispiel ein J drin steht bekomme ich einen Fehler

Input string was not in a correct format.

13.07.2006 - 08:58 Uhr

Wie man in folgendem Code sieht hole ich mir mit MPI.ReadMem dir Werte in mein char[]


               char[] pt = new char[187];
               GCHandle h_MAR = GCHandle.Alloc(pt, GCHandleType.Pinned);
               IntPtr p = h_MAR.AddrOfPinnedObject();
                            
               MPIRet = MPI.ReadMem(MPI_MEMORY_NR1, 0, 187, p);


funktionieren tut das ganze ja soweit auch. NUr leider ist es jetzt so immer 2 byte und dazu noch verdreht an einer stelle im char-Array stehen.

Zum Beisepiel dieser Wert steht drin
pt[0] = 754a;
eigentlich sollte 4a75 drin stehen. Leider hab ich keinen einfluß darauf wie die Funktion ReadMem arbeitet als werde ich mir wohl selber die Werte in di Richtige Rheinfolge bringen müßen.

Und genau heir brauch ich mal nen Denkanstoß ich weiß noch nicht so richtig wie ich heran gehen soll.

22.06.2006 - 17:23 Uhr

Wie schon die Überschrift sagt ich hab mir ein Datenbank Sicherung wiederhergestellt. Nun läuft eine Anwendung nicht mehr welche auf die Datenbank zu greift.

Nun hab ich mir mal SQL Server Managment Studio ein SQL Query gemacht und die Abfrage ausgeführt:

"SELECT *FROM Test"

Beim Prüfen gab es keine Fehler beim Auführen schon:

"Meldung 208, Ebene 16, Status 1, Zeile 1"
"Invalid object name 'BENUTZER'."

Nun hab ich mal die Abfrage umgebaut auf

"SELECT *FROM Tester.Test"

und siehe da es funtzt. Aber so läuft die Anwendung nicht kann ich das irgenwie umstellen das er nicht diesen Benutzer davor haben will?

09.06.2006 - 10:49 Uhr

Danke erstmal für deine Antwort leider ist mein Chef dagegen er will das wir den Installer benutzen welcher von Visual Studio 2005 mitgebracht wird.

09.06.2006 - 10:03 Uhr

Wie schon im Titel geschrieben hab ich mit Visual Studio 2005 .net ein Installer Projekt gemacht um mein C# Anwendungen zu Installieren. Nun ist es leider so das ich noch ein anderes Programm mit Installieren muß(ActiveSync). Jetzt passiert folgendes Starte ich von meiner Installation aus die Installation von ActiveSync bekomme ich eine Fehler das der Microsoft Installer bereits eine andere Installation ausführt.

Nun wollte ich es gerne so machen das am Ende meiner Installation ich ein Programm starte und diese dann Entscheidet ob ActiveSync Installiert wir oder nicht.

Nur leider weiß ich nicht wie ich dem Installer das beibringen soll das er am Ende bevor er schließt noch die Anwendung startet.

02.06.2006 - 11:09 Uhr

Benutze Visual Studio 2005 wenn ich MessagBox.Show( schreib öffnet sich die register karte und da steht diese Überladung auch mit drin ?

02.06.2006 - 10:57 Uhr

Kann mir Jemand sagen was an diesem Coder falsch ist???


MessageBoxButtons buttons = MessageBoxButtons.YesNo;
MessageBox.Show("Keine Verbindung! Fehler: " + ex.Message, "Verbindung fehlgeschlagen!", buttons);

Bekomme immer folgenden Fehler:

No overload for method 'Show' takes '3' arguments

In der MSDN steht aber :
MessageBox.Show (String, String, MessageBoxButtons) Displays a message box with specified text, caption, and buttons.

Was mache ich denn da bitte Falsch

30.05.2006 - 15:42 Uhr

Naja ich lese die Datei auf diese Art und weiße ein. Aber irgenwie haut das ganz nicht hin es fehlen immer ein paar Zeilen am schluß


 FileInfo fi=new FileInfo("c:\\text.txt");       
 FileStream fs=fi.OpenRead();
            
            int nBytes= Convert.ToInt32(fs.Length);
            byte[] ByteArray = new byte[nBytes];
                    
                    fs.Read(ByteArray, 0, nBytes);
               
                    
30.05.2006 - 15:23 Uhr

Also wie es die Überschrift schon sagt bekomme ich mit FileStream. length irgendwie die falsche länges des Stream. Lese ich zu Bsp.: eine Textdatei ein dann Fehlen immer die letzten Zeilen oder bei einem Bild dasselbe.
Habt ihr auch schon solche Probleme gehabt?

29.05.2006 - 14:59 Uhr

Also wie es die Überschirft shon sagt hab ich einen in einem Integer Wert ein Binär stehen
zB.:


 int bin = 101000; //decimal = 40

Nun wollte ich gerne Wissen ob es in C# Klasse gibt an welche ich "bin" übergeben kann und denn decimal Wert zurück erhalt?

20.05.2006 - 13:43 Uhr

Ne so meinte ich das nicht ganz.
Wenn ich jetzt eine Verbindung aufbau dann läuft der thread an welcher oben im Code zu sehen ist(MyTCPListen()). Dieser läuft solange in der while schleife wie "recSocket.Connected" true ist und list die Daten aus welche vom Client gesendet wurden. Nun passiert z.B.: folgendes die Internet Verbindung wird getrennt(Backer hats Kabel zerhackt).
Jetzt sollte eigentlich "recSocket.Connected" false sein und die while schleife wird beendet doch leider ist das nicht der fall "recSocket.Connected" bleibt true.

20.05.2006 - 12:27 Uhr

Habe mir einen Server Erstellt welcher auf Verbindungen warten und Nachrichten asugibt.
Das ganze funktioniert einwandfrei ich Verbinde mich mit dem Server schicke Nachrichten der Server gibt diese auf der Console aus.

Nur leider gibt es ein Problem wenn ich als Client zb.: einfach die Client Anwendung schließe dann ist beim Server "recSocket.Connected" immer noch true.

Hier Code Auschnitt vom Sever:

 
        private static void Start()
        {
          myListener = new TcpListener(1400);
            myListener.Start();

            recSocket = myListener.AcceptSocket();
            if(recSocket.Connected){Console.WriteLine("Connect");}
            //MyTCPListener startnow = new MyTCPListener();
            MyThread = new Thread(new ThreadStart(MyTCPListen));
            MyThread.Start();
        }

        private static void Stop()
        {
            Console.WriteLine("Disconnect");
            MyThread.Abort();
            recSocket.Close();
            myListener.Stop();
        }

        public static void MyTCPListen()
        {
          while (recSocket.Connected)
            {
                if (recSocket.Available > 0)
                {
                    int AnzahlDaten = recSocket.Available;
                    byte[] recBytes = new byte[AnzahlDaten];
                    recSocket.Receive(recBytes, 0, AnzahlDaten, SocketFlags.None);
                    data = Encoding.ASCII.GetString(recBytes, 0, AnzahlDaten);
                   
                    Console.WriteLine(data.ToString());
                    
                    
                }
            }

            Stop();
        }

13.05.2006 - 12:18 Uhr

Hab da mal eine Frage versuche bei Visual Studio im Designer Modus eine Raster einzublenden um die Elemente auf meinem Form auszurichten nur ich finde nirgendwo die Option für den Raster.

10.05.2006 - 14:30 Uhr

Probiers mal so


if(e.KeyCode == Keys.Escape)

10.05.2006 - 13:55 Uhr

Schau mal in der MSDN nach "keyboard input" dort ist auch ein einfaches Bsp. dabei.

04.05.2006 - 10:36 Uhr

Danke herbivore diese Bsp. hab ich mir mal zu angeschaut und ausprobiert.
Doch leider bleiben die Instancen weiter bestehen.

04.05.2006 - 09:54 Uhr

Hab eine geschrieben in welcher ich eine Funktion haben will, mit der man die Instance auf die Klasse zerstören kann. Hab das bis jetzt so Probiert


 public class CMyClass:IDisposable
    {
      public void Dispose()
        {
            Dispose();
        }
    }

Leider bekomme ich immer Folgenden Fehler beim Aufruf der Methode Dispose

An unhandled exception of type 'System.StackOverflowException' occurred in AQIs_Pocket.exe

02.05.2006 - 14:35 Uhr

Wie kann ich am einfachsten bei negative Zahlen das Vorzeichen wechseln also aus -5.0 soll 5.0 werden? Datentyp ist double.

18.04.2006 - 16:36 Uhr

Bekomme immer wieder diesen Fehler in der 3.Zeile

"Die angeforderte Adresse ist in diesem Kontext ungültig"


System.Net.IPAddress ipAddress = System.Net.IPAddress.Parse("192.168.1.104");
 myListener = new TcpListener(ipAddress,1400);
 myListener.Start();

06.04.2006 - 11:56 Uhr

Super jetzt funtzt es mein Problem lag noch nichmal in der Berechnung. Ich hab mir immer meinen Berechneten Wert Anzeigen lassen und diesem mit Wert im Telegramm vergliechen und mich gewundert warum sie sich unterscheiden.

Berechneter Wert = 134
Wert im Telegramm = 86

Nun hab ich's gefunden. decimal 134 = hex 86.

hab vergessen den decimal wert in den hex umzurechnen 😭.

Glaub ich sollte heute mal früher Feierabend machen 🙂