![]() |
UDP-Probleme bei Delphi2009 und Windows XP Embedded
Hallo an Alle!
Ich habe folgendes Problem. Seit ich von Delphi 2007 auf Delphi 2009 umgestiegen bin (auf Grund dessen, dass ich Unicode-fähige Standardelemente benötige) habe ich das Problem, dass meine Anwendung zwar lokal auf meinem Laptop unter Standard-Windows-XP korrekt funktioniert, jedoch auf Windows XP Embedded der integrierte XML-Parser nicht korrekt läuft. Ich habe noch nicht im Detail herausgefunden woran es liegt (müsste mal Delphi dort installieren und debuggen) aber vielleicht kann mir wer von euch einen Rat geben. Beim Googeln nach Änderungen von Delphi 2007 auf 2009 bin ich auch auf die Aussage gestoßen, dass mit Delphi 2009 entwickelte Programme auf Win9x nicht korrekt funktionieren. Das Embedded-XP, welches ich verwende ist sehr abgespeckt und hat nur die notwendigsten Module integriert. Kann es sein, dass ich hier ein wichtiges Modul weggelassen habe und wenn ja, welches könnte das sein? Ich verwende MSXML zur Kommunikation. Beim Öffnen des Delphi-Projektes mit D2009 wurde lediglich das Projektfile (.dproj) geändert, dort habe ich jedoch noch nichts aussagekräftiges gesehen, was sich geändert hat. Wenn ich das Delphi-Projekt mit 2007 compiliere (ist gsd noch immer bei mir installiert) und am Embedded-Rechner ausprobiere funktioniert die Kommunikation wieder einwandfrei. |
Re: Probleme mit Delphi2009 und Windows XP Embedded
Installiert doch den Remote Debugger und verbinde dich mit diesem.
Welche Fehlermeldung kommt denn auf XP Embedded? |
Re: Probleme mit Delphi2009 und Windows XP Embedded
Zitat:
Es erscheint keine Fehlermeldung: Ich schicke mit meiner Delphi-Anwendung eine Anfrage über UDP (in xml-Form) und erwarte mir eine Antwort. Die Anfrage wird geschickt, jedoch kommt anscheinend keine Antwort an. |
Re: Probleme mit Delphi2009 und Windows XP Embedded
Zitat:
Zitat:
|
Re: Probleme mit Delphi2009 und Windows XP Embedded
Zitat:
Edit: Remote-Debugger gibts anscheinend nicht in der Professional-Version :-( |
Re: Probleme mit Delphi2009 und Windows XP Embedded
Zitat:
muss aber separat installiert werden. |
Re: Probleme mit Delphi2009 und Windows XP Embedded
Zitat:
![]() |
Re: Probleme mit Delphi2009 und Windows XP Embedded
kommisch, konnte ihn runterladen ... :drunken:
aber du hast ja noch den remotedebugger von D2007, oder? |
Re: Probleme mit Delphi2009 und Windows XP Embedded
Zitat:
|
Re: Probleme mit Delphi2009 und Windows XP Embedded
tja, der ist auf der auslieferungscd vorhanden, von dort musst du ihn erst mal installieren...
aber mal eine andere frage, kann es sein, dass dein XP und dein embeddedXP mit unterschiedlichen codepages laufen? |
Re: Probleme mit Delphi2009 und Windows XP Embedded
Zitat:
|
Re: Probleme mit Delphi2009 und Windows XP Embedded
So, habe das Problem nun ein bißchen "eingegrenzt". Nach dem Einbau einiger Debugausgaben habe ich fesgestellt dass die Applikation aus dem Funktionsaufruf
Delphi-Quellcode:
nicht mehr "zurückkommt".
UDPC.Send(msg_temp);
Hier die Eigenschaften meines TIdUDPClient: BufferSize: 64000 IPVersion: Id_IPv4 ReceiveTimeout: 5000 ... |
Re: Probleme mit Delphi2009 und Windows XP Embedded
|
Re: Probleme mit Delphi2009 und Windows XP Embedded
Zitat:
|
Re: Probleme mit Delphi2009 und Windows XP Embedded
Habe gerade feststellen können, dass mein Server gar keine Anfrage bekommt. (Bin zuerst davon ausgegangen, dass eine "verschandelte" Anfrage gekommen ist)
edit: ![]() Habe nach Durchsicht dieses Artikels mein UDPC.Receive gegen ein UDPC.ReceiveBuffer ausgetauscht und nun kommt meine Anfrage an. Jetzt habe ich aber ein neues Problem: Der Server schickt zwar eine Antwort weg, diese kommt jedoch bei mir nicht an, obwohl ich
Code:
gegen
aw:=UDPC.ReceiveString()
Code:
getauscht habe. Hat jemand eine Ahnung, was mich hier noch weiterbringen könnte?
aw:TBytes;
... UDPC.ReceiveBuffer(aw,UDPC.Buffersize); |
Re: Probleme mit Delphi2009 und Windows XP Embedded
In der Hilfe für die Funktion ReceiveBuffer wird als erster Parameter
Code:
angegeben. Was bedeutet das @ ? Erwartet sich die Funktion einen Pointer?
Byte[]@
edit: Habe gerade herausgefunden, dass die Funktion ReceiveBuffer eine Exception wirft: ERangeError ("Fehler bei Bereichsprüfung") |
Re: UDP-Probleme bei Delphi2009 und Windows XP Embedded
Endlich! Problem gelöst. Mit:
Code:
funktionierts nun endlich. Schlussendlich bleibt nur die Frage, warum meine Ursprungsversion mit
Buffer : TIdBytes;
... SetLength(Buffer, UDPC.BufferSize); UDPC.ReceiveBuffer(Buffer);
Code:
und
UDPC.Send(msg_temp);
Code:
mit Delphi 2007 und Delphi 2009 compiliert auf Windows XP Standard funktioniert und auf dem Embedded-System mit Delphi 2009 nicht. Aber ich bin froh, das Problem nun gelöst zu haben. Hoffentlich treten nicht neue sonderliche Phänomene auf.
aw:=UDPC.ReceiveString();
Edit: Zu früh gefreut. mit den "neuen" Funktionen SendBuffer und ReceiveBuffer, wo es zuerst auch lokal nicht funktioniert hat (XP Standard) hat es durch die oben beschriebenen Anpassungen dann einwandfrei hingehaut. Auf dem Embedded-XP-System funktioniert es aber noch immer nicht!? Schön langsam werd ich ratlos. |
Re: UDP-Probleme bei Delphi2009 und Windows XP Embedded
So, ich fasse mal kurz zusammen, weil ich zugegebener Maßen jeden kleinen "Fortschritt" hier reingetippt habe:
UDP-Kommunikation mittels:
Code:
Delphi 2007 + Windows XP: OK
UDPC.Send
UDPC.ReceiveString Delphi 2007 + Windows XP Embedded: OK Delphi 2009 + Windows XP: OK Delphi 2009 + Windows XP Embedded: KEINE ANFRAGE BEIM SERVER UDP-Kommunikation mittels:
Code:
Delphi 2007 + Windows XP: OK
UDPC.SendBuffer
UDPC.ReceiveBuffer Delphi 2007 + Windows XP Embedded: OK Delphi 2009 + Windows XP: OK Delphi 2009 + Windows XP Embedded: ANFRAGE BEI SERVER OK, ABER KEINE ANTWORT Im letzten Fall wirft die Funktion UDPC.ReceiveBuffer die Exception EEncodingError ("ungültige Codeseite"). Was kann das bedeuten? |
Re: UDP-Probleme bei Delphi2009 und Windows XP Embedded
würde sagen, da hat dein unicodestring die falsche codepage ... :roll:
wirst wohl mal nach einer fehlerbereinigden indy gucken müssen oder schaun ob du den fehler bei den indys selbst ausbügeln kannst... :roll: :roll: |
Re: UDP-Probleme bei Delphi2009 und Windows XP Embedded
Zitat:
Code:
int mmi_sendto(SOCKET s, const void *msg, size_t len, int flags, const struct sockaddr *to)
{ return (sendto(s, (char*)msg, (int)len, flags, to, sizeof(sockaddr_in))); } |
Re: UDP-Probleme bei Delphi2009 und Windows XP Embedded
So, Problem nun endültig gelöst :-)
Auf dem Embedded System fehlte anscheinend ein Eintrag in den Codepagekonvertierungstabellen (Systemsteuerung - Regions und Sprachoptionen - Erweitert). Habe nun alle Eintrage ausgewählt, so wie sie auf meinem lokalen Rechner angehackt sind und nun funktioniert es! Schwere Geburt das Ganze. |
Re: UDP-Probleme bei Delphi2009 und Windows XP Embedded
Nur zur Info (falls jemand mal so ein ähnliches Problem hat) - der fehlende Codepagekonvertierungseintrag ist bei meinem
Embedded-System folgender gewesen: 20127 (US-ASCII) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 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