AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Netzwerk-Kommunikation zwischen C# und Delphi-Programm
Thema durchsuchen
Ansicht
Themen-Optionen

Netzwerk-Kommunikation zwischen C# und Delphi-Programm

Ein Thema von hsg · begonnen am 22. Nov 2011 · letzter Beitrag vom 22. Nov 2011
Antwort Antwort
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

AW: Netzwerk-Kommunikation zwischen C# und Delphi-Programm

  Alt 22. Nov 2011, 09:59
Ist es nicht so das .NET Unicode kann dann müssten die Strings doch WideStrings sein oder ?
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.779 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Netzwerk-Kommunikation zwischen C# und Delphi-Programm

  Alt 22. Nov 2011, 10:04
.. und in Delphi besser TLagerInfo = packed record verwenden.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Netzwerk-Kommunikation zwischen C# und Delphi-Programm

  Alt 22. Nov 2011, 10:11
Warum eigentlich nicht einen stinknormalen Webservice nehmen und diesen ganzen Kommunikationsoverhead den Frameworks überlassen? Damit hätte man die komplette Problematik innerhalb einer halben Stunde erschlagen...
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Netzwerk-Kommunikation zwischen C# und Delphi-Programm

  Alt 22. Nov 2011, 10:29
So, wo fange ich an?

Mit dem SmallInt und int habe ich lange experimentiert. Ich bekomme im Server genauso viel Bytes, wie mein Record groß ist. Habe vorher auch andere Kombinationen ausprobiert, dann waren aber Anzahl der im Server ankommenden Zeichen unterschiedlich zu meiner Record-Länge. (ReceiveLength <> sizeof(TLagerInfo).

Die Urpsrungsstruktur im C#-Teil war mal char, das ist aber Unicode und damit doppelt so groß wie im Delphi. Freund google lieferte mir dann die Konvertierung
Code:
cText = new System.Text.ASCIIEncoding().GetBytes(User);
Damit habe ich hier tatsächlich "normale" ASCII-Zeichen (und damit kein WideString)

Packed Record ändert die Ausrichtung der einzelnen Felder und damit auch die Größe des Records (bei meinen Experimenten hatte ich auch packed Records verwendet, aber dann war die Größe statt 96 Bytes 95 und da wusste ich nicht, wie ich das C# beibringe.

Wie gesagt: Im Ausgehenden Buffer auf der Client-Seite finde ich auch meine Eingaben wieder (wenn auch als ASCII-Werte), nur der Eingang sieht sie nicht

Warum kein Webservice: Das ganze wird eine eigenständige Applikation auf einem speziellen Pocket-PC (Motorola MC75A) sein, welche die Entnahme von Lagerteilen mit dem ERP-System synchronisiert. Mit einer sehr bunten Oberfläche
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Netzwerk-Kommunikation zwischen C# und Delphi-Programm

  Alt 22. Nov 2011, 10:31
Hast du dir auch mal die Bytes angeschaut, die du auf der Delphi-Seite kriegst? Passen die? Also sprich: Ist die Übertragung fehlerhaft, oder das wandeln in den Record?


@Webservice

Es ging um einen Service, nicht um eine Web-Anwendung. Stichworte SOAP, REST
  Mit Zitat antworten Zitat
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#6

AW: Netzwerk-Kommunikation zwischen C# und Delphi-Programm

  Alt 22. Nov 2011, 10:33
[...] Warum kein Webservice: Das ganze wird eine eigenständige Applikation auf einem speziellen Pocket-PC (Motorola MC75A) sein, welche die Entnahme von Lagerteilen mit dem ERP-System synchronisiert. Mit einer sehr bunten Oberfläche
Ähm, aber genau dafür sind die doch absolut prädestiniert?
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#7

AW: Netzwerk-Kommunikation zwischen C# und Delphi-Programm

  Alt 22. Nov 2011, 10:39
In Pascal wird in den Shortstrings auch die Längenangabe gespeichert. Sinnvolle Deklarationen wären also (nachdem die Ausrichtung geklärt ist):
Delphi-Quellcode:
TLagerInfo = record
    Befehl : longint;
    login : array[0..24] of byte;
    passwd : array[0..24] of byte;
    pool : array[0..39] of byte;
  end;
//oder
TLagerInfo = record
    Befehl : longint;
    login : array[0..24] of ansichar;
    passwd : array[0..24] of ansichar;
    pool : array[0..39] of ansichar;
  end;
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Netzwerk-Kommunikation zwischen C# und Delphi-Programm

  Alt 22. Nov 2011, 11:09
In Pascal wird in den Shortstrings auch die Längenangabe gespeichert. Sinnvolle Deklarationen wären also (nachdem die Ausrichtung geklärt ist):
Delphi-Quellcode:
TLagerInfo = record
    Befehl : longint;
    login : array[0..24] of ansichar;
    passwd : array[0..24] of ansichar;
    pool : array[0..39] of ansichar;
  end;
Ich habe die Ansichar-Variante ausprobiert. Damit funktioniert es. Danke für den Hinweis.

Noch mal das Thema Webservice:
Ich muss gestehen, dass ich mich mit diesem Thema nicht groß auseinander gesetzt habe. Damit wäre das Thema genauso Neuland für mich, wie es das C# und Compact-Framework sowieso schon ist. Falls ich demnächst Zeit finde, werde ich mich eventuell auch mit dem Thema Webservice beschäftigen, aber im Moment wollte ich mich auf das eine Thema konzentrieren.

Gruß
Jörg
  Mit Zitat antworten Zitat
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#9

AW: Netzwerk-Kommunikation zwischen C# und Delphi-Programm

  Alt 22. Nov 2011, 11:51
[...] Noch mal das Thema Webservice:
Ich muss gestehen, dass ich mich mit diesem Thema nicht groß auseinander gesetzt habe. Damit wäre das Thema genauso Neuland für mich, wie es das C# und Compact-Framework sowieso schon ist. Falls ich demnächst Zeit finde, werde ich mich eventuell auch mit dem Thema Webservice beschäftigen, aber im Moment wollte ich mich auf das eine Thema konzentrieren. [...]
Ok, ein Neueinsteiger braucht 'ne Stunde bis er das ganze gelöst hat. Nein ehrlich, alleine mit dem Aufwand, den Du in diesen Thread hier investiert hast, hättest Du die ganze Kommunikation mit einem 08/15-SOAP-WebService vollständig erschlagen.

Von der Wartungsfreundlichkeit und Zukunftssicherheit einer standardisierten Kommunikation gar nicht erst zu reden...
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#10

AW: Netzwerk-Kommunikation zwischen C# und Delphi-Programm

  Alt 22. Nov 2011, 12:51
@vagtler

Naja, schon ein bisschen länger Man muss ja mal das Prinzip verstanden haben.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz