AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy Umstellung Delphi 2006 auf Delphi 2010
Thema durchsuchen
Ansicht
Themen-Optionen

Indy Umstellung Delphi 2006 auf Delphi 2010

Ein Thema von Surrounder · begonnen am 18. Jan 2010 · letzter Beitrag vom 18. Jan 2010
Antwort Antwort
Benutzerbild von Surrounder
Surrounder

Registriert seit: 26. Sep 2003
Ort: Stuttgart
177 Beiträge
 
Delphi 2006 Professional
 
#1

Indy Umstellung Delphi 2006 auf Delphi 2010

  Alt 18. Jan 2010, 13:12
Hallo Forum,

ich habe letzte Woche Delphi 2010 installiert und bin nun dabei meine Projekte wieder lauffähig zu bekommen. Nun habe ich ein Problem das mit den Indy Komponenten zusammen hängt. Ich habe einen IdUDPServer und muss damit einen Broadcast erzeugen damit sich meine Hardware im Netzwerk mit ihrer zugehörigen IP Adresse meldet und ich mit ihr dann Verbindung aufnehmen kann. Das ganze hat unter Delphi 2006 immer Problemlos funktioniert.

Mit Delphi 2010 haben sich nun wohl auch schon die Übergabeparameter der Events geändert die der Server auslöst, das konnte ich nun aber schon anpassen. Allerdings wird mein Broadcast nicht mehr richtig ausgeführt. Ich rufe das ganze gleich auf wie unter Delphi 2006, allerdings sehe ich im Netzwerksniffer dass die Daten nicht wie unter Delphi 2006 verschickt werden sondern verdreht sind. Ich kann mir da momentan gar keinen Reim drauf machen. Hat jemand von Euch eine Idee?

Delphi-Quellcode:
var
   s : String;
begin
   s := #$00 + #$00 + #$00 + #$F6;
   IdUDPServer1.Broadcast( s, 30718 );
end;
Unter Delphi 2006 sagt mit der Netzwerksniffer Wireshark dass 4 Byte mit den Daten: 000000F6 verschickt wurden

Unter Delphi 2010 sagt mit der Netzwerksnniffer dass 4 Byte mit den Daten: 0000006F verschickt wurden.

Dass die Werte verdreht sind hat mich erst gewundert, ich habe dann mal andere Werte verschickt und das muss wohl Zufall sein.

Danke für jeden Hinweis.
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Indy Umstellung Delphi 2006 auf Delphi 2010

  Alt 18. Jan 2010, 13:27
Das liegt wohl mit dem Unicode zusammen

bis D2007 war es intern so definiert
Delphi-Quellcode:
var
   s : AnsiString;
begin
ab D2009 ist es jetzt so
Delphi-Quellcode:
var
   s : UnicodeString;
begin
Delphi-Quellcode:
var
   s : AnsiString;
begin // vvvvvv den Wert explizit festlegen
       // vvvvvv und nicht über CodePage umrechnen
       // vvvvvv (die 00 ist dabei wichtig)
   s := #$00 + #$00 + #$00 + #$00F6;
   IdUDPServer1.Broadcast( s, 30718 );
end;
bzw.
s := #$0000 + #$0000 + #$0000 + #$00F6; aber bei #$0000 bis #$007F stimmen die Werte (ASCII) sowieso überein

siehe auch Threads wie diesen http://www.delphipraxis.net/internal...t.php?t=153308
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Surrounder
Surrounder

Registriert seit: 26. Sep 2003
Ort: Stuttgart
177 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Indy Umstellung Delphi 2006 auf Delphi 2010

  Alt 18. Jan 2010, 13:39
danke für deine schnelle Antwort. ich habe folgendes versucht:

Delphi-Quellcode:
var
   s : AnsiString;
begin
   s := #$0000 + #$0000 + #$0000 + #$00F6;
   IdUDPServer1.Broadcast( s, 30718 );
end;
hat aber nix gebracht, kommt drotzdem "6F" anstellen von "F6" über das Netzwerk
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Indy Umstellung Delphi 2006 auf Delphi 2010

  Alt 18. Jan 2010, 13:45
hmm, versuch es mal so:
Delphi-Quellcode:
var s: RawByteString;
begin
  s := #$0000 + #$0000 + #$0000 + #$00F6;
  IdUDPServer1.Broadcast( s, 30718 );
end;

var s: RawByteString;
begin
  SetLength(s, 4);
  s[1] := #$0000;
  s[2] := #$0000;
  s[3] := #$0000;
  s[4] := #$00F6;
  IdUDPServer1.Broadcast( s, 30718 );
end;
Aber da Broadcast nur String und TIdBytes anbietet, würde ich dir eher empfehlen es über TIdBytes zu lösen:
Delphi-Quellcode:
var s: TIdBytes;
begin
  SetLength(s, 4);
  s[0] := $00;
  s[1] := $00;
  s[2] := $00;
  s[3] := $F6;
  IdUDPServer1.Broadcast( s, 30718 );
end;
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Surrounder
Surrounder

Registriert seit: 26. Sep 2003
Ort: Stuttgart
177 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Indy Umstellung Delphi 2006 auf Delphi 2010

  Alt 18. Jan 2010, 13:59
Ok, habe nur den Index auf 0 korrigiert, dann geht es

Delphi-Quellcode:
var s: TIdBytes;
begin
  SetLength(s, 4);
  s[0] := $00;
  s[1] := $00;
  s[2] := $00;
  s[3] := $F6;
  IdUDPServer1.Broadcast( s, 30718 );
end;
Jetzt muss ich mal mein komplettes Projekt dazu umstellen. Danke für die schnelle Hilfe
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

Re: Indy Umstellung Delphi 2006 auf Delphi 2010

  Alt 18. Jan 2010, 14:17
Ja, daß mit der 0 war mir dann auch schon aufgefallen

Ansonsten bieten die Indy auch irgendwo Konvertierungsroutinen, für eine String<>TIdBytes-Umwandlung.
Wenn es da auch eine AnsiString-Unterstützung gibt, dann wäre das eventuell auch noch was Praktisches.
$2B or not $2B
  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 10:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz