Laden...
Avatar #avatar-1979.jpg
YLIREBUS myCSharp.de - Member
Softwareentwickler Wolfsburg Dabei seit 11.01.2006 56 Beiträge
Benutzerbeschreibung

Forenbeiträge von YLIREBUS Ingesamt 56 Beiträge

06.07.2016 - 14:34 Uhr

Hallo zusammen,

es ist zwar schon etwas her, aber nun brauche ich so etwas in ähnlicher Weise wieder.
Hierbei sollte es nur zusätzlich möglich seien bei den Verbindungslinien noch eine Bezeichnung mit einzugeben.

@tom-essen: hast Du was Brauchbares gefunden, was man verwenden kann?
Danke im Voraus!

Gruß

Ylirebus

05.12.2014 - 09:45 Uhr

Danke Dir Abt,

aber die Aufrufende Komponente ist nun mal JAVA und das kann ich nicht ändern auch nicht die Technologie.

Meine Aufgabe ist nur dem Aufruf gerecht zu werden und das zurück zu geben, was verlangt wird.

Nochmals Danke für Eure Hilfe.

Gruß

Ylirebus

05.12.2014 - 07:52 Uhr

Hallo zusammen,

irgendwie drehe ich mich seit 4 Tagen im Kreis und bekomme es nicht hin den Webservice so zu bauen, das der aufrufende Client das bekommt, was er verlangt.

Mir ist auch völlig unklar, ob man einfach den Node mit der Security weg lassen kann oder nicht und ob und wie ich das mustUnderstand="1" weg lassen kann.

Mann findet zwar einiges im Netz, aber vieles funktioniert nicht wirklich.

Da der aufrufende Client ja mit Java gemacht wurde habe ich mich nun dazu entschlossen einen Apache aufzusetzen und das ganze einfach mit JAVA zu machen.

Danke für Eure Hilfe an dieser Stelle.

Gruß

Ylirebus

04.12.2014 - 13:13 Uhr

Kann mir jemand sagen, wie dich das


Action s:mustUnderstand="1" u:Id="_2" xmlns="http://www.w3.org/2005/08/addressing" 

weg bekomme?
Habe schon einiges probiert, bin aber noch neu in WCF.


  [DataMember]
            [MessageHeader(
     Name = "FileData",
     Namespace = "http://www.examples.com",
     MustUnderstand = false
   )]
        public string FileData
        {
            get { return _fileData; }
            set { _fileData = value; }
        }

03.12.2014 - 15:42 Uhr

Hallo gfoidl,

danke für Deine Hilfe.

Ich hatte schon gegooglt, und den Artikel hatte ich auch gefunden.
Ich dachte mir nur:"das kann doch nicht soooo "kompliziert" sein" 😉.

Nach langem probieren habe ich es hin bekommen, das ich meinen Webservice aufrufen kann, aber das was da zurück kommt ist nun gar nicht mehr das was ich erwarte 😭.

Das sieht so aus:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:arc="http://irgendwas/ArchiveWS">
  <s:Header xmlns:s="http://www.w3.org/2003/05/soap-envelope">
    <Action s:mustUnderstand="1" u:Id="_2" xmlns="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">http://tempuri.org/IArchiveWS/retrieveDocumentFilesResponse</Action>
    <RelatesTo u:Id="_3" xmlns="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">urn:uuid:6fa0eb78-92e5-400c-9e4b-e7660f780692</RelatesTo>
    <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
      <u:Timestamp u:Id="uuid-06b9411e-f350-4bda-89fc-334b4d2fea9a-7" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <u:Created>2014-12-03T14:27:04.537Z</u:Created>
        <u:Expires>2014-12-03T14:32:04.537Z</u:Expires>
      </u:Timestamp>
      <c:DerivedKeyToken u:Id="uuid-06b9411e-f350-4bda-89fc-334b4d2fea9a-5" xmlns:c="http://schemas.xmlsoap.org/ws/2005/02/sc" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <o:SecurityTokenReference>
          <o:Reference URI="urn:uuid:2c273821-4755-4669-8099-a58a1103d2b7" ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct" />
        </o:SecurityTokenReference>
        <c:Offset>0</c:Offset>
        <c:Length>24</c:Length>
        <c:Nonce>+OvrJu/lqRTQTrtoG2L0Vg==</c:Nonce>
      </c:DerivedKeyToken>
      <c:DerivedKeyToken u:Id="uuid-06b9411e-f350-4bda-89fc-334b4d2fea9a-6" xmlns:c="http://schemas.xmlsoap.org/ws/2005/02/sc" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <o:SecurityTokenReference>
          <o:Reference URI="urn:uuid:2c273821-4755-4669-8099-a58a1103d2b7" ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct" />
        </o:SecurityTokenReference>
        <c:Nonce>QCn8g/gvyYQZw1ZgI1mrPQ==</c:Nonce>
      </c:DerivedKeyToken>
      <e:ReferenceList xmlns:e="http://www.w3.org/2001/04/xmlenc#">
        <e:DataReference URI="#_1" />
        <e:DataReference URI="#_4" />
      </e:ReferenceList>
      <e:EncryptedData Id="_4" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns:e="http://www.w3.org/2001/04/xmlenc#">
        <e:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
        <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
          <o:SecurityTokenReference>
            <o:Reference ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/dk" URI="#uuid-06b9411e-f350-4bda-89fc-334b4d2fea9a-6" />
          </o:SecurityTokenReference>
        </KeyInfo>
        <e:CipherData>
          <e:CipherValue>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</e:CipherValue>
        </e:CipherData>
      </e:EncryptedData>
    </o:Security>
  </s:Header>
  <soap:Body u:Id="_0" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <retrieveDocumentFilesResponse xmlns="http://tempuri.org/">
      <retrieveDocumentFilesResult xmlns:a="http://schemas.datacontract.org/2004/07/ArchiveWS" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
        <a:DocumentFile>
          <a:FileData>77u/T3B0aW9uIGV4cGxpY2l0DQoNCkRpbSBmc28sIGZzb0ZpbGUNCkRpbSBpLCBqLCBzdHJQYXJhbSwgUGZhZA0KRGltIEZlaGxlcg0KQ29uc3QgVGVtcG9yYXJ5Rm9sZGVyID0gMg0KDQoJJ1VtZ2VidW5nc3ZhcmlhYmxlbiBhdWZsb2VzZW4NCgknUGZhZCA9IENyZWF0ZU9iamVjdCgiV1NjcmlwdC5TaGVsbCIpLkV4cGFuZEVudmlyb25tZW50U3RyaW5ncygiJVRFTVAlIikNCgkgU2V0IGZzbyA9IENyZWF0ZU9iamVjdCgiU2NyaXB0aW5nLkZpbGVTeXN0ZW1PYmplY3QiKQ0KCSBQZmFkID0gZnNvLkdldFNwZWNpYWxGb2xkZXIoVGVtcG9yYXJ5Rm9sZGVyKQ0KDQoJaWYgUGZhZCA9ICIiIHRoZW4NCgkJUGZhZCA9IkM6XHRlbXAiDQoJZW5kIGlmDQoNCgknU3RhbmRhcmRuYW1lIGRlciBEYXRlaSwgd2lyZCBiZWltIG5hZWNoc3RlbiBBdWZydWYgd2llZGVyIG5ldSBlcnN0ZWxsdA0KCScgWnUgdGVzdHp3ZWNrZW4gLS0+IA0KCSdQZmFkPVBmYWQgJiAiXGQzVGVtcC50eHQiDQoJUGZhZD1QZmFkICYgIlxkM1RlbXAuZDNsIg0KDQoJJ2FrdHVlbGxlciBlcnN0ZXIgUGFyYW1ldGVyDQoJc3RyUGFyYW0gPSB3c2NyaXB0LkFyZ3VtZW50cygwKQ0KCQ0KCQ0KCSdkb2MtSURzIGF1c3dlcnRlbg0KCWNhbGwgYnVpbGRJZExpc3QgKHN0clBhcmFtKQ0KDQp3c2NyaXB0LlF1aXQNCic9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBFTkRFID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KUHJpdmF0ZSBTdWIgYnVpbGRJZExpc3QgKGJ5VmFsIHBhcmFtZXRlcikNCglEaW0gUG9zMQ0KCURpbSBUZXh0MiwgVGV4dA0KCWRpbSB3c2hTaGVsbA0KCWRpbSBSZXR1cm4NCg0KCSdPYmpla3RlIGVyc3RlbGxlbg0KCXNldCBmc28gPSBDcmVhdGVPYmplY3QoIlNjcmlwdGluZy5GaWxlU3lzdGVtT2JqZWN0IikNCglzZXQgZnNvRmlsZSA9IGZzby5DcmVhdGVUZXh0RmlsZShQZmFkLCB0cnVlKQ0KCSdUZXh0IGluIERhdGVpIHNjaHJlaWJlbg0KCWZzb0ZpbGUuV3JpdGVMaW5lKCJpZGxpc3QiKQ0KDQoJZnNvRmlsZS5Xcml0ZUxpbmUocGFyYW1ldGVyKQ0KDQoJJ1RleHREYXRlaSBzY2hsaWVzc2VuIHVuZCBPYmpla3RlIHRlcm1pbmllcmVuDQoJZnNvRmlsZS5jbG9zZQ0KCXNldCBmc29GaWxlPW5vdGhpbmcNCglzZXQgZnNvID0gbm90aGluZw0KDQoJJ1N0YXJ0IGRlciBuZXVlbiBEYXRlaQ0KCVNldCBXc2hTaGVsbCA9IFdTY3JpcHQuQ3JlYXRlT2JqZWN0KCJXU2NyaXB0LlNoZWxsIikNCglSZXR1cm4gPSBXc2hTaGVsbC5SdW4oUGZhZCkNCglTZXQgV3NoU2hlbGwgPSBub3RoaW5nDQplbmQgc3ViDQoNCg==</a:FileData>
          <a:Name>test001.txt</a:Name>
        </a:DocumentFile>
      </retrieveDocumentFilesResult>
    </retrieveDocumentFilesResponse>
  </soap:Body>
</soap:Envelope>

Die Antwort soll aber nur so aussehen:


<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:arc="http://irgendwas/ArchiveWS">
   <soap:Header/>
   <soap:Body>
      <arc:retrieveDocumentFilesResponse>
         <DocumentFiles>
            <DocumentFile>
               <Name>CD3.d3l</Name>
               <FileData>77u/T3B0aW9uIGV4cGxpY2l0DQoNCkRpbSBmc28sIGZzb0ZpbGUNCkRpbSBpLCBqLCBzdHJQYXJhbSwgUGZhZA0KRGltIEZlaGxlcg0KQ29uc3QgVGVtcG9yYXJ5Rm9sZGVyID0gMg0KDQoJJ1VtZ2VidW5nc3ZhcmlhYmxlbiBhdWZsb2VzZW4NCgknUGZhZCA9IENyZWF0ZU9iamVjdCgiV1NjcmlwdC5TaGVsbCIpLkV4cGFuZEVudmlyb25tZW50U3RyaW5ncygiJVRFTVAlIikNCgkgU2V0IGZzbyA9IENyZWF0ZU9iamVjdCgiU2NyaXB0aW5nLkZpbGVTeXN0ZW1PYmplY3QiKQ0KCSBQZmFkID0gZnNvLkdldFNwZWNpYWxGb2xkZXIoVGVtcG9yYXJ5Rm9sZGVyKQ0KDQoJaWYgUGZhZCA9ICIiIHRoZW4NCgkJUGZhZCA9IkM6XHRlbXAiDQoJZW5kIGlmDQoNCgknU3RhbmRhcmRuYW1lIGRlciBEYXRlaSwgd2lyZCBiZWltIG5hZWNoc3RlbiBBdWZydWYgd2llZGVyIG5ldSBlcnN0ZWxsdA0KCScgWnUgdGVzdHp3ZWNrZW4gLS0+IA0KCSdQZmFkPVBmYWQgJiAiXGQzVGVtcC50eHQiDQoJUGZhZD1QZmFkICYgIlxkM1RlbXAuZDNsIg0KDQoJJ2FrdHVlbGxlciBlcnN0ZXIgUGFyYW1ldGVyDQoJc3RyUGFyYW0gPSB3c2NyaXB0LkFyZ3VtZW50cygwKQ0KCQ0KCQ0KCSdkb2MtSURzIGF1c3dlcnRlbg0KCWNhbGwgYnVpbGRJZExpc3QgKHN0clBhcmFtKQ0KDQp3c2NyaXB0LlF1aXQNCic9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBFTkRFID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KUHJpdmF0ZSBTdWIgYnVpbGRJZExpc3QgKGJ5VmFsIHBhcmFtZXRlcikNCglEaW0gUG9zMQ0KCURpbSBUZXh0MiwgVGV4dA0KCWRpbSB3c2hTaGVsbA0KCWRpbSBSZXR1cm4NCg0KCSdPYmpla3RlIGVyc3RlbGxlbg0KCXNldCBmc28gPSBDcmVhdGVPYmplY3QoIlNjcmlwdGluZy5GaWxlU3lzdGVtT2JqZWN0IikNCglzZXQgZnNvRmlsZSA9IGZzby5DcmVhdGVUZXh0RmlsZShQZmFkLCB0cnVlKQ0KCSdUZXh0IGluIERhdGVpIHNjaHJlaWJlbg0KCWZzb0ZpbGUuV3JpdGVMaW5lKCJpZGxpc3QiKQ0KDQoJZnNvRmlsZS5Xcml0ZUxpbmUocGFyYW1ldGVyKQ0KDQoJJ1RleHREYXRlaSBzY2hsaWVzc2VuIHVuZCBPYmpla3RlIHRlcm1pbmllcmVuDQoJZnNvRmlsZS5jbG9zZQ0KCXNldCBmc29GaWxlPW5vdGhpbmcNCglzZXQgZnNvID0gbm90aGluZw0KDQoJJ1N0YXJ0IGRlciBuZXVlbiBEYXRlaQ0KCVNldCBXc2hTaGVsbCA9IFdTY3JpcHQuQ3JlYXRlT2JqZWN0KCJXU2NyaXB0LlNoZWxsIikNCglSZXR1cm4gPSBXc2hTaGVsbC5SdW4oUGZhZCkNCglTZXQgV3NoU2hlbGwgPSBub3RoaW5nDQplbmQgc3ViDQoNCg==</FileData>
            </DocumentFile>
         </DocumentFiles>
      </arc:retrieveDocumentFilesResponse>
   </soap:Body>
</soap:Envelope>

Kann ich den Rest irgendwie abstellen?

Danke im Voraus.

Gruß

Ylirebus

02.12.2014 - 14:05 Uhr

Hallo zusammen,

ich würde gerne eienn Webservice erstellen, der folgenden Aufruf beantwortet:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:arc="http://irgendwas/ArchiveWS">
   <soap:Header/>
   <soap:Body>
      <arc:retrieveDocumentFiles>
         <Request>
            <DocumentId>123</DocumentId>
         </Request>
      </arc:retrieveDocumentFiles>
   </soap:Body>
</soap:Envelope>

Wie bekomme ich den zweiten Namesapce hinzugefügt ?
Hier mein aktueller Code:


namespace ArchiveWS
{
    [ServiceContract(
   Name = "soap",
   Namespace = "http://www.w3.org/2003/05/soap-envelope"
 )]
    public interface IArchiveWS
    {
        [OperationContract]
        DocumentFile[] retrieveDocumentFiles(int DocumentId);
    }
}

Danke im Voraus!

Gruß

Ylirebus

27.11.2014 - 09:57 Uhr

@Ahrimaan Weil ich es nicht besser wusste 😉.

An der aufrufenden Technologie kann ich nichts ändern.

Ich darf nun nur etwas etwickeln das auf den Aufruf s.o. die entsprechende Antwort gibt.

dann schaue ich mir nun mal WCF SOAP an ...

27.11.2014 - 08:30 Uhr

Hallo zusammen,

es gibt einen Aufruf aus Java z.B.

http://test/WebserviceName
dieser ruft eine Action auf holeDokument.

Der Request sieht folgender maßen aus:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:arc="http://irgendwas/holeDokument">
   <soap:Header/>
   <soap:Body>
      <arc:holeDokumentFiles>
         <Request>
            <DocumentId>dokID1</DocumentId>
         </Request>
      </arc:holeDokumentFiles>
   </soap:Body>
</soap:Envelope>

Nun habe ich einen Webservice geschrieben, welcher das Dokument zurückgeben soll.
Dieser heißt in .NET :

holeDokument**.asmx**

Wie bekomme ich es hin, daß mein Webservice wie oben aufgerufen werden kann.

  1. Versuch:
    Ermöglicht, das das Dokument aufgerufen wird auch ohne die Endung
<webServices>
      <protocols>
        <add name="HttpSoap" />
		<add name="HttpGet" />
		<add name="HttpPost" />
      </protocols>
    </webServices>
<system.webServer>
    <defaultDocument>
      <files>
               
        <add value="holeDokument.asmx" />
      </files>

Wenn ich jetzt den Aufruf tätige, bekomme ich folgende Meldung:

System.Web.Services.Protocols.SoapException: Die Anforderung kann ohne gültigen action-Parameter nicht behandelt werden. Geben Sie ein gültiges SOAPAction-Objekt an.
bei System.Web.Services.Protocols.Soap12ServerProtocolHelper.RouteRequest()
bei System.Web.Services.Protocols.SoapServerProtocol.Initialize()
bei System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean&amp; abortProcessing)</soap:Text>

Meine Funktion in C# sieht so aus:


 [WebMethod]
        public XmlDocument retrieveDocumentFiles(string DocumentId)
        {

            XNamespace soap = "http://www.w3.org/2003/05/soap-envelope";
            XNamespace arc = "http://irgendwas/holeDokument";
            XElement root = new XElement(soap + "Envelope",
                new XAttribute(XNamespace.Xmlns + "soap", soap.NamespaceName),
                new XAttribute(XNamespace.Xmlns + "arc", arc.NamespaceName),
                new XElement(soap + "Header"),
                new XElement(soap + "Body",
                 new XElement(arc + "holeDokumentFiles", 
                     new XElement("DocumentFiles", 
                         new XElement("DocumentFile", 
                             new XElement("Name", "cd3.d3l"), 
                             new XElement("FileData", "77u/T3B0aW9uIGV4c=="))))
                     )
                
                );

           
            var xmlDocument = new XmlDocument();
            using (var xmlReader = root.CreateReader())
            {
                xmlDocument.Load(xmlReader);
            }

            //StringWriter sw = new StringWriter();
            //XmlTextWriter xw = new XmlTextWriter(sw);
            //xmlDocument.WriteTo(xw);
            //return sw.ToString();

            return xmlDocument;
  }

Kann mir jemand sagen was ich falsch mache bzw. machen muß?

Danke im Voraus!

Ylirebus

12.05.2014 - 10:00 Uhr

Ja, aber die habe allen den modifier protected bekommen, wenn Du das meinst?

12.05.2014 - 08:50 Uhr

Hallo zusammen,

ich habe eine DLL erstellt, welche eine Form enthält. //Edit : die Form erbt von einer RibbonForm
Die Modifier für die Steuerelemente habe ich alle auf protected eingestellt (auch schon mit public probiert).

Nun habe ich in einem anderen Projekt die DLL eingebunden und eine Form erbt von der Form aus der DLL.
Wenn ich nun ein Steuerelement auf die Form ziehe, kann ich sie nicht mit der Maus vergrößern.
(es erscheint entweder nur ein normaler Pfeil kein Doppelpfeil zum Vergrößern oder ein kleines weißes Quadrat unter dem Pfeil).
alle anderen Einstellungen in den Eigenschaften kann ich machen.
Auch das Ändern der Größe in den Eigenschaften ist möglich.

Was kann ich tun, dass das wieder per Maus geht?

Danke Euch im Voraus!

Ylirebus

19.03.2014 - 07:05 Uhr

Hallo tom-essen,

gibt es da was an UML-Tools, die ich mit C# bedienen kann?

Gruß

Ylirebus

17.03.2014 - 22:08 Uhr

@MrSparkle:

Super, das habe ich gesucht 😉 - danke Dir.

Viele Grüße

Ylirebus

17.03.2014 - 16:02 Uhr

Hallo herbivore,

danke für deien Antwort.
sorry - was ich bei der Aufgabenstellung nicht bedacht habe:

es gibt Mehrfachabhängigkeiten.

ID | Child   
1  | Raum 001   
2  | Verwendetes Betriebssystem
3  | Herr Müller
4  | Herr Meyer

Tabelle Beziehungen
ref 1  | ref 2
1      | 4
2      | 4
1      | 3
2      | 3

Hier ein Beispiel:

17.03.2014 - 15:46 Uhr

Hallo zusammen,

gibt es eine einfache lösung Abhängigkeiten grafisch darzustellen?

Im Prinzip so etwas wie das Klassendiagramm unter Visual Studio anzeigt.
Nur ich möchte Abhägigkeiten darstellen, die ich z.B. in einer Datenbank habe.

z.B.

ID | Child   | parent
1  | Tier    | 0
2  | Katze   | 1
3  | Hund    | 1

evtl sogar mit Bild.

Ich suche nun ein Tool etc. welchem ich die Daten übergebe und ich bekomme ein grafische Darstellung. Ähnlich wie das Klassendiagramm unter Visual Studio.

Danke im Voraus!

Ylirebus

28.02.2014 - 09:44 Uhr

Hallo chilic,
danke für Deine Antwort.
Gestern war ich wohl etwas geistig umnachtet.
Natürlich ist 0213 eine gültige Jahreszahl und richtig der SQL-Server mag die Jahreszahl nur nicht.
Und Ja ich werder einfach schauen ob das Datum > 1800 ist.

Das ist die Lösung.

Danke nochmal für den Denkanstoß 😉 👍

27.02.2014 - 16:54 Uhr

MS-SQL Server 2012 / Visual Studio 2010

Hallo zusammen,

Folgende Situation:
Ich lese ein Datum aus einer Datei: '0213-01-01' ich Parse es mit:

DateTime.TryParse ('0213-01-01', out aktDate) oder TryparseExact... ist egal.

Beide male erkennt C# das Datum als gültig, und macht daraus '01.01.2013'

Wenn ich nun an eine StoredProcedure den Wert als DateTime übergebe sagt mir die StoredProc,
das das Datumsformat außerhalb des gültigen Wertes liegt, weil MS-SQL es etwas genau nimmt.

Wie kann ich es in C# hinbekommen, dass er nur 100% genaue Datumsangaben akzeptiert
(So wie in MSSQL)?


Meine aktuelle Lösung ist:

Ich übergebe die Werte als varchar und Parse sie in der StoredProc mit TRY catch und im Catch setze ich das Datum bei einem Fehler auf '31.12.3999'.

Ich möchte aber eigentlich for dem Aufruf der StoredProc wissen ob das Datum in der Stored Proc gültig wäre.

Danke im Voraus!

Ylirebus

23.10.2013 - 08:13 Uhr

Hallo zusammen,

ich werde es in eine Erweiterungsmethode auslagern und auch nicht in der Modell-Klasse Ändern.

Danke Euch

Viele Grüße

Ylirebus

22.10.2013 - 14:23 Uhr

Hallo zusammen,

ein String soll immer eine feste Länge haben.
Z.B. 30 Zeichen

a) ist er kürzer soll mit Leerzeichen aufgefüllt werden
b) ist er länger einfach hinten abschneiden.

Meine Idee:

Im Setter:


  public string Temp
        {
            get { return m_temp; }
            set
            {
                m_temp = value;
                m_temp = m_temp.PadRight(30, ' ');
                m_temp = m_temp.Substring(0, 30); 
            }
        }


Gibt es dafür etwas fertiges oder einfacheres?

Danke im Voraus!

Viele Grüße

Ylirebus

11.09.2013 - 15:40 Uhr

Hallo weismat,

danke für die Hinweise.

Was genau meinst Du mit Terminal Server? Citrix?

--> ja, es läuft dann auf citrix.

Du solltest Deine Software so entwickeln, als würde Deine Software auf zwei Rechnern verteilt laufen. Logisch ist dies die Sicht, physikalisch sorgt dann der Terminalserver dafür, dass es nur eine Maschine ist.

--> ok das erklärt wohl dann, warum man nicht mit Events arbeiten sollte (wie mir gesagt wurde)

Beim Terminalserver ist sonst wichtig, dass Deine sauber installierbar ist und das die Pfade mit Umgebungsvariablen für den Benutzernamen arbeiten.

--> ok werde ich beachten vielen Dank.

Zur Zeit schwebt mit der Informationsaustausch über ein Austauschverzeichnis vor...

Ich stelle die Informationen in das “User-Austausch-Verzeichnis“ und starte ein Programm, welches dann die Informationen verarbeitet, welche Zielanwendung gestartet werden soll, ob Zusatzdaten aus einer extra Datei gelesen werden sollen, etc.

Für den Fall, das die Zielanwendung aber läuft, würde ich bei einer Desktopanwendung ein Event schicken z.B. Tab-Reiter [Adresse] anzeigen mit den Daten aus der Zusatzdatei.
Hier sollte ich dann eher in dem Verzeichnis in Intervallen schauen, ob Daten für mich da sind.

Danke Für die Unterstützung.

Viele Grüße

Ylirebus

10.09.2013 - 13:21 Uhr

Hallo zusammen,

einfach gesagt, möchte ich etwas entwickeln, dass man aus einem beliebigen Programm auf Grund von bestimmten Kriterien ein anderes Programm aufruft. Das Ganze soll auf einem Terminal Server laufen

Im Detail:

Das aufrufende Programm ist bedingt programmierbar
(z.B. kann man ein Button hinzufügen, welches dann eine Exe aufruft,etc.)

Das Zielprogramm kann frei umprogrammiert werden.
D.h. ich könnte auf Events reagieren, eine Socket Verbindung bauen, die Aufrufparameter abfragen in einer Datenbank nachschauen, die Zwischenablage überwachen etc.

Einfaches Beispiel:
Ich habe ein Programm in dem ich einen Namen eingebe. Hier könnte ich einen Button neben den Namen bauen.
Wenn ich hier drauf klicke öffnet sich ein Adressbuchprogramm und zeigt mir alles was ich zu dem Namen habe.
Von solchen Änderungen / Aufrufen / Datenübergaben sollen später die Unterschiedlichsten Varianten hinzu programmiert werden können.

Die „Grauzone“ die ich habe ist, dass Ganze auf einem Terminalserver laufen zu lassen.
Hier habe ich nahezu keine Erfahrungswerte.

  1. Ich habe mir nur sagen lassen, dass man hier Probleme bekommt, wenn man mit der Zwischenablage arbeitet.
    Ein Ansatz war z.B. Daten in die Zwischenablage zu schreiben und dies von einem Dienst überwachen zu lassen.

  2. Wo wir bei der nächsten Grauzone sind, kann ich einen Dienst auf einem Terminal Server laufen lassen?
    Für jede Session?

Nun zu meinen Frage:
Hat jemand etwas in der Art schon einmal gemacht?
Welches wäre die beste Technik um Daten zwischen den Programmen auszutauschen.
Wo kommen Probleme auf mich zu? Events/Dienste/Zwischenablage

Danke für Eure Hilfe

Ylirebus

06.01.2013 - 16:12 Uhr

Ok, so etwas in der Art habe ich mir schon gedacht.
Danke Dir.

05.01.2013 - 19:23 Uhr

verwendetes Datenbanksystem: MS-SQL

Hallo zusammen,

Ich habe ein Klasse:

public partial class Projekt
    {
        public Projekt()
        {
            this.Position = new [B]List[/B]<Position>();
        }
    
        public int ProjektID { get; set; }
        public string Name { get; set; }
    
        public virtual [B]List[/B]<Position> Position { get; set; }
    }

nach dem Erstellen der DB mit Hilfe des Entity Frameworks wurde List ausgetauscht.
Einmal Durch HashSet und einmal durch ICollection.

Eigentlich erst mal egal, läuft ja alles.

Num möchte ich die Klasse aber zu XML Serialisieren.
Nur jetzt mag er ICollection nicht, da ein Interface nicht serialisiert werden kann.

Was mache ich falsch ?

14.02.2012 - 23:12 Uhr

Hallo zusammen,

Ich möchte gerne einen Brief erstellen und dann drucken.
Also Empfänger und Absender kommen aus der Datenbank und die Inhalte auch.

Was würdet ihr empfehlen mit was man das macht?

* Reporting service?
* Word "anzapfen" (kommen hier kosten auf mich zu, kann man ein Worddokument erstellen ohne das der Benutzer dann Word installiert hat)?
* einfach eine Richbox befüllen?
* oder was ganz anderes.

Ich möchte am keine zusätzlichen Installationen und keinen Drittanbieter.
Ganz einfach Dokument erstellen und drucken.

Danke im Voraus!

Ylirerbus

14.10.2010 - 15:04 Uhr

Hallo zusammen,

wir haben eine Entwicklungsumgebung (MS VS2008 ASP.Net-Anwendung Framework 3.5
) auf einer VM-Ware Maschine (Windows 7 Prof. 32Bit) eingerichtet.

Der Hostrechner läuft auch auf Windows 7 (Ultimate 64Bit).

Jetzt möchten wir von der Entwicklungsumgebung auf den Quellcode zugreifen, der auf dem Host -Rechner liegt (über den „Shared Folder“ den man zum Austausch zwischen den Beiden Systemen nutzt).

Wenn wir das Projekt starten bekommen wir folgende Fehlermeldung:

Konfigurationsfehler
Beschreibung: Fehler beim Verarbeiten einer Konfigurationsdatei, die für diese Anforderung erforderlich ist. Überprüfen Sie die unten angegebenen Fehlerinformationen, und ändern Sie die Konfigurationsdatei entsprechend.

Parserfehlermeldung: Beim Laden einer Konfigurationsdatei ist ein Fehler aufgetreten.: Das Überwachen der Änderungen von \vmware-host\Shared Folders\TEST\TestProjekt\TestProjekt konnte nicht gestartet werden.

Quellfehler:

[Keine relevanten Quellzeilen]

Quelldatei: \vmware-host\Shared Folders\TEST\TestProjekt\TestProjekt\web.config Zeile: 0

Weiss jemand woran das liegt ?

Weitere info:
ASP.Net-Config:

Es gibt ein Problem mit dem ausgewählten Datenspeicher. Ursachen können ein ungültiger Servername, ungültige Anmeldeinformationen oder eine unzureichende Berechtigung sein. Möglicherweise ist auch der Rollen-Manager nicht aktiviert. Klicken Sie auf die Schaltfläche unten, um auf eine Seite umgeleitet zu werden, auf der Sie einen neuen Datenspeicher auswählen können.

Die folgende Meldung kann bei der Problemdiagnose hilfreich sein: Das Überwachen der Änderungen von \vmware-host\Shared Folders\TEST\TestProjekt\TestProjekt konnte nicht gestartet werden.

Danke im Voraus!

Ylirebus

03.08.2010 - 15:28 Uhr

Das reicht doch schon danke 😉.

teststring += new String('X', 10);

03.08.2010 - 15:22 Uhr

z.B.


Sring teststring = "Hallo";

teststring.Add(5,'X');

Inhalt des Strings:
HalloXXXXX

im Moment mache ich das mit einer "for" schleife, aber mich interessiert, ob es das fertig gibt.

Im Moment



private void button1_Click(object sender, EventArgs e)
        {
            String teststring = "Hallo";
            teststring = StrAdd(teststring, 5, 'X');
            label1.Text = teststring;
        }

        public String StrAdd(String str, int count, Char chr)
        {
            if (count < 1)
                return str;

            for (int i = 1; i <= count; i++)
            {
                str += chr;
            }
            return str;
        }


16.10.2009 - 17:33 Uhr

Hallo zusammen,

ich habe da mal was gefunden open source:

http://capi.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=17089

Genau das was ich brauche:

DTFM Erkennung 😉 , C#

Hier kann man zu mindest sehen wie der Hase läuft 😉.

Da dies sicherlich nur der Anfang ist werden wir sicher noch einiges voneinander hören 😉.

Gruß

Ylirebus

14.10.2009 - 16:32 Uhr

OK, prima werde ich machen,

ich bin allerdings gerade dabei die Grundlagen zu erforschen und wie ich am Besten vorgehe.

Eigentlich haben wir ein Asterisk Telefonanlage, die mit dem SIP-Protokoll arbeitet, aber da etwas über MFV zu finden ist mir nicht gelungen.
Nun versuche ich an der Telefonanlage vorbei über ISDN zu gehen und dann mit der CAPI-Schnittstelle zu arbeiten.

Werde mir wohl auch nochmal VS-2005 installieren, da ich das Projekt nicht übersetzen kann in VS-2008

Ich werde meine Erkenntnisse gerne mit Euch teilen 😉.

bis dann

Ylirebus

14.10.2009 - 15:48 Uhr

Hallo zusammen,

ich befasse mich nun auch aus beruflichen Gründen mit der Thematik.
Leider kommt bei der "testcapi.zip" eine Fehlermeldung:

Lock System

Your expiration date is reached! You need to purchase a license to run this software.

Hmm... habe ich doch erst heute installiert 😉.

Gibt es aktuellere Erkenntnisse zu dem Thema CAPI ?
Gibt es Bibliotheken, die man direkt in C# verwenden kann ?

Ich bin in Begriff ein Programm zu schreiben, welches einen ankommenden Ruf entgegen nimmt und dann auf die Eingabe eines Tastendrucks wartet (MFV-Töne).

Da die Posts schon etwas älter sind:Ist jemand von Euch aktuell noch dabei etwas in der Richtung zu programmieren ?

Evtl. kann man sich zusammen tun 😉.

Viele Grüße

Ylirebus

12.10.2009 - 13:58 Uhr

Hallo zusammen,

ich möchte gerne so eine Art Anrufbeantworter schreiben, damit meine ich das jemand anruft und ein Programm steuert das Gespräch.

z.B. sagen sie "Service" um zum Service weitergeleitet zu werden....

Ich habe schon eine Menge im Netz gefunden, aber die Beiträge bzw. der gefunden Quellcode ist meist schon an die 2-3 Jahre alt (kaputte links 😭 ).
Z.B. gibt es Beispiele für die "RTC Client SDK 1.2" mit C++
Es gibt aber schon die "RTC Client SDK 1.3".
Also das Freeware-Programm phoner --> http://www.phoner.de/
macht eigentlich das was ich brauche, es nimmt nach einer gewissen Zeit das Gespräch entgegen. Genau das möchte ich und dann soll im Prinzip mein Programm das Gespräch leiten (ab hier habe ich schon ein Programm geschrieben, allerdings über das angeschlossene Mikrofon).

Hat jemand aktuelle Beispiele für Telefonie(mit SIP Protokoll) in C# geschrieben ?

Vielen Dank für Eure Hilfe

Ylirebus

13.04.2007 - 10:20 Uhr

Hallo zusammen,

im folgenden Listing wird eine Ordner Freigabe erstellt ("VOLL ZUGRIFF").
(Listing ist aus dem Buch "C# Codebook 2005" [leicht abgeändert] ).


private void Freigabe_erstellen()
        {
             rtbAusgabe.Clear();  
          
             ManagementClass mc = new ManagementClass("Win32_Share");
            
             string share = "c:\\TEST";
             string name = "Test-Ordner";
             int type = 0; // Festplattenlaufwerk
             object result = mc.InvokeMethod("Create", new Object[] { share, name, type });
             if (Convert.ToInt32(result) == 0)
             {
                rtbAusgabe.Text+="Freigabe erfolgreich erzeugt\r\n";
             }
             else
             {
                rtbAusgabe.Text+="Freigabe konnte nicht erzeugt werden." +
                   "Möglicher Grund: Es existiert bereits eine identische Freigabe\r\n";
             }
        
        }

Ich möchte aber nur eine "lese freigabe" haben.

Kann mir jemand sagen , wie ich das mache ?

Danke Euch

Gruß

Ylirebus

20.03.2007 - 09:53 Uhr

Erst einmal danke für die zahlreichen Antworten .
Werde mir mal alles in Ruhe anschauen 😉.

16.03.2007 - 16:34 Uhr

Ich weiss , ich weiss, es ist Jahre her, dass Du diesen Beitrag geschrieben hast 😉.

Hast Du eine Lösung gefunden ?
Wenn ja welche ?

Ich stehe jetzt nemlich vor dem gleichen Problem 😉

01.08.2006 - 10:09 Uhr

Ich freue mich schon auf das erweiterte TUT 😉.
😁

//Edit

Interessant fände ich z.B. wie ich größere, binäre Datein verschicke (mehrere hintereineander) und die Gegenstelle diese ordnungsgemäss empfängt und speichert 😉.

Ich habe einfach mal folgendes probiert :


if (mem.Length>0)
				{
					if (mem.Length==4)
						if (System.Text.Encoding.ASCII.GetString(mem.ToArray(),0,4)=="quit")
						{
							instanceOfClass.closeConnection();
							break;
						}
					//Console.WriteLine("send {0} bytes",mem.Length);
					instanceOfClass.Receive(mem.ToArray());

                    // Von mir------------------------------------
                    image = Image.FromStream(mem);
                    image.Save(@"F:\TESTBILD.jpg"); //ca 2,5MB
                    // Von mir ENDE ------------------------------

					mem.Seek(0,SeekOrigin.Begin);
					mem.SetLength(0);
					TimeOut=0;
				} 

und auf client Seite :



 private void SendeBild_Click(object sender, EventArgs e)
        {
            MemoryStream mem = new MemoryStream();
            BilderBox1.Image.Save(mem,ImageFormat.Jpeg );
            byte[] rawData = mem.ToArray();
            client.send(rawData);
        }


Das Bild kommt nur teilweise an 😭.

Wie kann man sowas ralisieren ?

Später sollen dann auf Client seite in einer Schleife mehrere Bilde hintereinander geschickt werden.

Wie halte ich die Streams auseinander ?
In einem Buffer, der gesendet wird kann doch auch mal das Ende des Einen Bildes und der Anfang des nächsten Bildes sein oder sehe ich da was falsch ?

Habe mal irgend was aufgeschnappt, das man dann erst die Größe schickt und dann
den Stream.

Dann schicke ich die Größe meinetwegen '20000000' , danach das Bild , so jetzt kommt ein Buffer an , wo 20000000 drinn steht und danach die Bildinformation wie weiss ich wie weit meine Größe in dem Buffer geht ?

Baue ich mir selber Trennzeichen ein ?
Mache ich auf Client Seite eine Pause, damit ich in den Timeout vom Server laufe ?

Danke

Ylirebus

25.07.2006 - 14:53 Uhr

Alles klar es funktioniert danke 😉

25.07.2006 - 11:49 Uhr

In Konsolenanwendungen schon , aber ein Dienst hat in der Regel keine Form.

/Edit : "System.Environment.CurrentDirectory" ist aber gefählich, besonders wenn ich es nicht nach dem Start abfrage .

25.07.2006 - 11:35 Uhr

Hallo zusammen,

ich weiss, das ich mit


System.Windows.Form.Application.ExecutablePath

den Pfad meiner Anwendung heraus bekomme.

Aber was mache ich , wenn ich keine Form habe , weil ich einen Dienst habe ?

Dann habe ich ja


System.Windows.Form nicht ?

Danke für Eure Hilfe

25.07.2006 - 10:54 Uhr

Hallo sheitman,

genau das war der punkt 😉.

Ich habe jetzt einfach den Aufruf


m_clientSocket.Send(BitConverter.GetBytes(len));

Weg gelassen .

Vorher war es ja so, das er übergeben hat wieviele Daten kommen und danach wurde die entsprechende Menge reserviert.
Jetzt empfängt er solange Daten, bis keine mehr kommen.

Also brauche ich den Aufruf nicht - hoffe ich .

Auf alle Fälle kommt das Bild jetzt an 👍.

P.S. Ich werde mich demnächsat mehr mit den Grundlagen von C# befassen , im Moment ist alles von mir noch sehr stümperhaft und ich muss erstmal nur schauen ob wir das alles jetzt in C# realisieren , wielange sowas dauert (die Übertrtaung) und wenn das so sein soll beschäftige ich mich intensive mit C#.

Was ich damit sagen möchte:
Nicht böse sein, wenn Ihr eigendlich sagen möchtet : "Beschäftige Dich erstmal mit den Grundlagen 😉 "

Danke Nochmals

25.07.2006 - 09:49 Uhr

Ich frage einfach mal anders 😉.

Hat schonmal jemand Bilder per Socket übertragen ?
Wenn ja wie ?

als Stream ?
als Bytearray ?

Egal welches von beiden, könnte ich den Entsprechenden Code sehen , wie das Bild in ein Stream gewndelt , übertragen , empfangen und wieder als Bild gespeichert wird ?
😉.

Danke

P.S. Bitte nicht wieder antworten :
Das ist doch das selbe wie eine Binäre datei senden , dass ist mir schon klar.
Nur es funktioniert irgendetes nicht 😉.

24.07.2006 - 10:25 Uhr

Hallo zusammen,

nach meinem ersten Beitrag "Socket mit C# " und dem verzweifeln an der übergabe einer information an die Form aus einem Tread jetzt ein neuer versuch.

Ich habe eine Socket-verbindung und möchte an eine Anwendung ein Bild schicken.

hier der Aufruf von Client:


private void button1_Click(object sender, EventArgs e)
        {
            /* Use the following code to send bytes*/
            MemoryStream mem = new MemoryStream();
            BilderBox.Image.Save(mem,ImageFormat.Jpeg );
            byte[] rawData = mem.ToArray();
            int len = IPAddress.HostToNetworkOrder(rawData.Length);
                    
            if (m_clientSocket != null)
            {
                //m_clientSocket.Send(byData);
                
                m_clientSocket.Send(BitConverter.GetBytes(len));
                m_clientSocket.Send(rawData);
                
                
            }
            /* ENDE */
        }		

Der server sieht im Moment so aus:


if (mem.Length>0)
				{
					if (mem.Length==4)
						if (System.Text.Encoding.ASCII.GetString(mem.ToArray(),0,4)=="quit")
						{
							instanceOfClass.closeConnection();
							break;
						}
                        instanceOfClass.Receive(mem.ToArray());
                        mem.Position = 0;
                                            
                        try
                        {
                            //Hier scheitert er mit der Meldung ungültiger Parameter !!!
                            Image image = Image.FromStream(mem);
                            image.Save("c:\\test.jpg");
                            m_form.Invoke(m_form.m_ZeigeBild, new Object[] { image });
                           
                        }
                        catch (Exception e)
                        {
                            MessageBox.Show(e.Message.ToString());
                        }

                        mem.Seek(0, SeekOrigin.Begin);
                        mem.SetLength(0);
                        TimeOut = 0;
                                   
				} 
				else 
				{
                   
                    // Alles zurücksetzen
					TimeOut++;
					Thread.Sleep(SleepTime);
				}



Der Großteil ist von diesem Beispiel :
[Tutorial] Client-/Server-Komponente über TCP-Sockets

(Welches auch alles super funktioniert.)
Jetzt wollte ich mit derm Code ein Bitmap schicken und anzeigen.

an der Stelle :
Image image = Image.FromStream(mem);

kommt eine Meldung "ungültiger parameter.

Ich habe schon einiges probiert, aber ich komme leider nicht weiter 😭.

Kann mir jemand helfen ?

20.07.2006 - 13:50 Uhr

Sorry .aber ich habe irgendwie nicht so den Durchblick 😭.


 static class Program
    {
        /// <summary>
        /// Der Haupteinstiegspunkt für die Anwendung.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }

Da wird sie erzeugt ...
Muss ich das irgendwie umbauen ?


....
            Form1 *newForm = new Form1();
            Application.Run(newForm);
......

Oder so ? ^^

Und kann dann auf newForm zugreifen ?

EDIT :

So wie ich dachte geht es nicht 😉.

20.07.2006 - 12:17 Uhr

Ich möchte gerne in der server.cs
die Daten , die in mem stehen der Form übergeben,

Dazu habe ich in der Form1 folgendes gemacht :


public void ZeigeBild(MemoryStream mem)
        {
            
            BilderZielAusgabe.Image = new Bitmap(mem);
        }

und in der server.cs den Verweis


using ServerGui;

gemacht .

Wenn ich jetzt in der server.cs


Form1.ZeigeBild(mem);

kommt :
Fehler 1 Für das nicht statische Feld, die Methode oder die Eigenschaft "SocketServer10.Form1.ZeigeBild(System.IO.MemoryStream)" ist ein Objektverweis erforderlich. F:\ProjekteCVS_CSharp\SocketServer10\Server.cs 126 21 SocketServer10

was bedeutet das im Klartext ?

20.07.2006 - 11:44 Uhr

Ich muss noch dazu sagen das ich mit dem "C++ Builder 5" gearbeitet habe.

Der Satz bedeutet, das ihr mir nicht böse sein sollt wenn ich manches nicht gleich verstehe ^^ .

Ich denke noch in Borland C++ 😉

Das mit der GUI war Quatsch (ich habe mir vorher eine Andere Variante angeschaut die Consolenausgaben gemacht hat 😉 )

20.07.2006 - 11:26 Uhr

Oder anders gefragt:

Hat das schon einer in "Visual Studio 2005" umgesetzt mit GUI und ist so lieb und stellt es mir zur verfügung ?

20.07.2006 - 11:17 Uhr

Hallo zusammen ,

ich habe mir mal den Beitrag :
[Tutorial] Client-/Server-Komponente über TCP-Sockets

angeschaut , der mit übrigens sehr gut gefällt und habe auch schon einiges begriffen.
Mein Problem ich wechsele gerade auf C# von C++ und habe
"Visual Studio 2005" und möchte das ganze in eine GUI packen.

Irgendwei habe ich aber sachen doppelt 😭

Davon meckert er so ziemlich alle an in der Form kann das sein das ich das nicht mit kopieren dar,
ist das anders Weil der Code damals nicht in VisualStudio 2005 geschrieben wurde,
Oder verstehe ich nur was nicht ?


/// <summary>
		/// Die verwendeten Ressourcen bereinigen.
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null)
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Vom Windows Form-Designer generierter Code
		/// <summary>
		/// Erforderliche Methode für die Designerunterstützung.
		/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
		/// </summary>
		private void InitializeComponent()
		{
			//
			// Form1
			//
			this.AutoScaleBaseSize = new System.Drawing.Size(6, 15);
			this.ClientSize = new System.Drawing.Size(292, 268);
			this.Name = "Form1";
			this.Text = "Server-GUI";

		}
		#endregion

		/// <summary>
		/// Der Haupteinstiegspunkt für die Anwendung.
		/// </summary>
		[STAThread]
		static void Main()
		{
			Application.Run(new Form1());
		}

EDIT:
Das hat er schon alles in der Datei Form1.Designer.cs 😭

Und das finde ich in der Neuen Form Nicht :

/// <summary>
        /// Der Haupteinstiegspunkt für die Anwendung.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }

18.07.2006 - 15:09 Uhr

Schönen Dank es geht 😉

👍 😁

18.07.2006 - 11:53 Uhr

Eigendlich an der Stelle was ich von dem Image senden soll und auf der Gegenstelle die "binärdaten" wieder in ein Image bekommen.

Das war mein Versuch :


byte[] rcvBuffer = new byte[BUFSIZE];
int bytesRcvd;
MemoryStream mem = new MemoryStream();// Empfangspuffer
mem.Seek(0, SeekOrigin.Begin);
mem.SetLength(0);
      

........
 mem.Write(theSocPkt.dataBuffer, 0, theSocPkt.dataBuffer.Length);
 theSocPkt.dataBuffer.Length);
 if(mem.Length>0)
 {
     try
     {
             ZielBild.Image.Save(mem, System.Drawing.Imaging.ImageFormat.Jpeg);
             ZielBild.Refresh();
     }    
     catch{;}
}



18.07.2006 - 11:27 Uhr

Hallo zusammen,

ich bin noch neu in C# (umgetiegen von C++) und sockets kannte ich bis vorgestern auch nur vom hörensagen.

Ich habe mir u.a. folgendes toutorial angeschaut und erfolgreich umgesetzt:

http://www.codeguru.com/csharp/csharp/cs_network/sockets/article.php/c8781/#Client3

[was nicht heißt, dass ich alles 100% verstanden habe 😭. ]

Aber wie kann ich hiermit ein Bild übertragen und beim Client anzeigen ?

ICh raffe es nicht 😭.

Kann mir jemand helfen ?

Danke

12.07.2006 - 14:57 Uhr

Hmmm. ich dachte jetzt eigendlich da gibt es eine Einstellung.
So wie -> Kommponenten einbetten in Anwendung oder so 😭.
Geht das wirklich nur so ???

Warum sind die Anderen Komponenten wie z.B. Editfelder , Labels mit in der Exe ?

Gruß

Ylirebus

12.07.2006 - 14:30 Uhr

Hallo zusammen,

Nachdem ich eine neue Komonente entwickelt habe und diese erfolgreich in einem Projekt verarbeitet habe, versuchte ich meine Anwendungs exe weiter zu geben.
Nachdem ich sie auf einem anderen Rechner laufen ließ, kam eine hässliche Fehlermeldung.
Diese tut eigendlich nichts zur Sache , da ich herausgefunden habe, das nach dem übertragen der Komponentenexe alles einwandfrei lief.

Meine Frage was muß ich einstellen, dass die Komponentenexe mit in die Eigendliche Anwendung aufgenommen wird ?

Das geht doch sicher irgendwo 😉

Vielen lieben Dank an die Helfer ^^

CU

Ylirebus