Laden...
S
snoopy
myCSharp.de - Member
65
Themen
204
Beiträge
Letzte Aktivität
vor 13 Jahren
Dabei seit
19.05.2005
Alter
38
Beruf
IT-Systemelektroniker
Herkunft
NRW Minden
Website
Erstellt vor 14 Jahren

Hi,

ich habe ein kleines Problem. Und zwar möchte ich testen, ob meine COM Komponenten funktionieren.

Ich möchte ganz gerne eine Testanwendung schreiben, in der ich Word mittels COM aufrufe, so dass ich WORD "steuern" kann.

Kennt hier jemand ein kleines Tutorial, oder Beispielcode? ( Der Aufruf reicht mir hier vollkommen )

Danke.

Erstellt vor 16 Jahren

mh.. hat niemand eine idee ?
vom prinziep her geht es ja rein um die logik. eine lösung in c# würde mir auch weiterhelfen 8)

Erstellt vor 16 Jahren

Hallo,
ich habe eine kleine Frage zu einer Routine. Es geht nicht um C# oder .Net, sondern eine Interne Sprache einer Entwicklungsumgebung für erp systeme.

Es geht heir rein um die Logik.

Folgendes Problem. Ich habe eine Tabelle für Artikel

zur zeit wird die linenumber so ausgegeben.


linenumber  itemcode  itemdescription
1                 3456       artikel 1
2                 4543       artikel 2
                                einfacher text
4                 5454       artikel 3


ich möchte aber gerne das bei einer textzeile( da wo zur zeit keine linenumber steht) die linenumber nicht automatisch addiert wird.

das heißt es soll aso aussehen


linenumber  itemcode  itemdescription
1                 3456       artikel 1
2                 4543       artikel 2
                                einfacher text
3                 5454       artikel 3


Ich habe eine Methode, die bei RowOutput aufgerufen wird. Das bedeutet, jedesmal wenn eine Zeile hinzugefüg, oder gelöscht wird, die die tabelle refresht und für jede zeile wird die methode dcDocumentsOnRowOutput() aufgerufen

zur zeit sieht der code so aus.


If ( TreeControl.Columns.Find("LineNumber") <> Undefined ) Then
			strNumber = "";
			CurrRow = RowData;
			While True Do  
				if CurrRow._RowType <> 2 then
					strNumber = String(CurrRow.Parent.Rows.IndexOf(CurrRow) + 1) + strNumber;
				else
					strNumber = "";
				endif;
				CurrRow = CurrRow.Parent;
				If ( CurrRow = Undefined Or CurrRow._IsFirstRow = True ) Then
					Break;
				Else
					strNumber = "." + strNumber;
				EndIf;
			EndDo;
			
			RowAppearance.Cells.LineNumber.SetText(strNumber);
			RowAppearance.Cells.LineNumber.Align = HorizontalAlign.Right;
			RowAppearance.Cells.LineNumber.ReadOnly = True;
		EndIf;

Hat jemand eine idee, wie ich sinnvoll die logik anpassen kann, das die linenumber nicht addiert wird, wenn es eine textzeile ist?

Bei fragen zu Variablen oder so kann ich natürlich auskunft geben, aber der code müsste eigentlich selbsterklärend sein.

Erstellt vor 16 Jahren

hatte die letzten Wochen nicht wirklich viel Zeit gehabt.
Aber habe mir die Lösungen mal durchgeschaut und ich empfinde es als ziemlich kompliziert für einen laien ^^

Eine einfachere Lösung gibt es nicht, oder?

Ist es denn möglich, wenn ich in meiner Hauptanwendung ein Ereigniss auslöse und der Clientthread abonniert das ereigniss und sobald das ereigniss eintritt, wird die methode aufgerufen? Würde dies klappen?

Erstellt vor 16 Jahren

Guten Abend,

mein Problem steht darin, ich möchte gerne von einem Thread über hinweg auf einen anderen Thread eine Methode aufrufen. Hoffe das hat jeder verstanden 😁

Habe für jeden Thread eine Klasse erstellt.

Hintergrund der Anwendung:

Mainklasse startet thread für isdn handlunden, Klasse: ISDN

Mainklasse Startet thread für Networkserver, Klasse Networkhandler und öffnet einen TCP Port.

Networkhandler startet einen Thread, sobald sich ein Client verbindet, Klasse Clienthandler.
Mit der Klasse Clienthandler soll die kompeltte kommunikation mit dem Client ablaufen.

Der Networkhandler soll nur immer im listenmodus laufen und warten das sich clients verbinden.

Nun möchte ich entweder aus der Mainklasse heraus, allen Clients eine Nachricht per TCP schicken, oder aus der ISDN Klasse heraus. D.h. sobald ein anruf in der isdnklasse registriert wird, sollen alle Clients eine tcp nachricht erhalten.
Oder anderherum, sobald der client eine meldung an den server schickt soll die mainklasse, oder die isdn klasse den "Befehl" ausführen. Wie stelle ich dies nun am besten an?

folgender code erstellt mir den thread für den networkhandler


NetworkHandler nwhandler = new NetworkHandler(settings.serverport);
                Thread handler = new Thread(new ThreadStart(nwhandler.Start));
                handler.IsBackground = true;
                handler.Start();

folgender code ruft den Clienthandler auf



public void Start()
        {
            int clientNum = 0;
            while (true)
            {
                
                // Auf eingehende Verbindungsanforderung warten 
                // und einen für die Kommunikation initalisierten TcpClient zurückgeben. 

                TcpClient client = listener.AcceptTcpClient();

                // Ein neues Objekt erstellen, um diese Verbindung zu bearbeiten.
                clientNum++;
                ClientHandler handler = new ClientHandler(client, "Client " +
                    clientNum.ToString());

                // Dieses Objekt in einem anderen Thread ausführen.
                Thread handlerThread =
                    new Thread(new ThreadStart(handler.Start));
                handlerThread.IsBackground = true;
                handlerThread.Start();
                Clients.Add(handler);
                
            }
        }

Wie man sieht, ich füge die Clients alle einer arrayListe hinzu.
Nur wie greife ich z.b. per foreach schleife auf die client-handler zu und rufe eine publicmethode aus der Clienthandler Klasse auf?
Ich hoffe ihr habt mich verstanden 🤔

Danke für die Hilfe

Erstellt vor 16 Jahren

wow, der tester ist ja echt klasse.
habe damit die straße gefunden.
aber hast du eine bessere idee, als das mit den regex zu machen?

Erstellt vor 16 Jahren

Guten Abend,
ich versuche mich grad schwer in RegEx einzuarbeiten, bzw. eine html datei mit regex auseinander zu pflücken.

der wichtige Teil der html datei sieht so aus:


<SPAN id=invers0 style="LEFT: 10px; VISIBILITY: hidden; POSITION: absolute; TOP: 27px"></SPAN></SPAN></DIV>Ramstr.&nbsp;2,&nbsp;32427&nbsp;Minden<BR><INPUT type=hidden

Dort steht nun die Straße Ramstr. und die Plz 32427 und der Ort Minden.

Nun habe ich bei einem javamodul folgenden regex ausdruck gefunden.


repository.www.DasOertliche.de\:regexp.street\:value=([^,>]*)&nbsp;[^,>]*,&nbsp;[^<]*&nbsp;[^<]*<br/>


habe diesen regex ausdruck nun für mein c# projekt genommen.
udn auf meinen string, der den kompletten bodyteil der webseite enthält losgelossen.


HtmlDocument doc = webBrowser1.Document;
            HtmlElement elem = doc.Body;
            string html = elem.OuterHtml;

            Regex regex = new Regex(@"([^,>]*)&nbsp;[^,>]*,&nbsp;[^<]*&nbsp;[^<]*<br/>");

            Match m = regex.Match(html);
            string street = "";
            if (m.Length != 0)
                street = m.Value;

            MessageBox.Show(street);

            StreamWriter sw = new StreamWriter(@"d:\test\output.html");
            sw.WriteLine(html);
            sw.Flush();
            sw.Close();


Wie man sieht, versuche ich über die messagebox die straße auszugeben. die Ausgabe bleibt leer.

Am ende lasse ich mir nochmal die htmlseite in eine testdatei schreiben. Dies klappt einwandfrei, die webseite lässt sich später "offline"betrachten, wo dann die straße auch drin zu finden ist, siehe oberer html auszug.

was ist an dem regex falsch?

Erstellt vor 16 Jahren

Habe das auch mal versucht, weil es mich auch interessiert.



        private void button1_Click(object sender, EventArgs e)
        {
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www1.dasoertliche.de/Controller?form_name=search_inv&ph=05718294560");
            req.Method = "POST";
            WebResponse response = req.GetResponse();

            // den korrekten stream laden
            Stream dataStream = response.GetResponseStream();
            // stream via streamreader laden
            StreamReader reader = new StreamReader(dataStream);
            // den Inhalt lesen
            string responseFromServer = reader.ReadToEnd();
            // den inhalt darstellen
            textBox1.Text += responseFromServer;
            // streams schließen
            reader.Close();
            response.Close();
        }

allerdings, wenn ich die telefonnummer in der url mitangebe, bekomme ich nur
folgende html ausgabe


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>&Ouml;TB-Relaunch Exception</title>
</head>
<body>
<br/>
&Ouml;TB-Relaunch Exception:
<br/>
For input string: ""</body>
</html>

nehme ich die telefonnummer raus, erhalte ich die komplette webseite, wo ich dann die nummer eingeben kann.

wie muss ich den webrequest denn nun richtig formulieren?

Wenn man die url mit der telefonnummer so im browser angibt, erhält man einen gültigen eintrag.

Wichtig, die Telefonnummer ist frei ausgewählt und vom zufall ausgewählt.

Erstellt vor 16 Jahren

ah habs gefunden. Problem war das rechte problem...

Erstellt vor 16 Jahren

autsch, mh ok, ja verweis hinzugefügt. nun lässt er sich installieren.
Aber wenn ich ihn starte, beendet er sich wieder sofort.

kommentier ich die zeile system.serviceprocess.... nciht aus, lässt er sich nichtmal starten.

muss ich einen extra thread für den service erstellen ?
Oder wieso läuft der service nicht weiter?

mein dienst sieht so aus


 public partial class main : ServiceBase
    {
        public main()
        {
            InitializeComponent();
            //System.ServiceProcess.ServiceBase.Run(new main());
        }

        protected override void OnStart(string[] args)
        {
            StreamWriter sw = new StreamWriter(@"c:\text.txt");
            sw.WriteLine("Dies ist ein test");
            sw.Flush();
            sw.Close();
        }

10 von 204 Beiträgen