Announcement

Collapse
No announcement yet.

UDP-Zahlenchaos

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • UDP-Zahlenchaos

    Hallo zusammen.<BR>
    Habe folgendes Problem:<BR>

    Nach einer Uebertragung von Daten (Record of single) mittels UDP werden Daten z.b. 12.87 beim Empfaenger in 12.869999999999 gewandelt.<BR>
    Wer kann mir sagen, wie dieses Problem zu beheben ist ?? <BR>
    <BR>
    Ich meine uebrigens hier im Forum schon mal was darueber gelesen zu haben.... kann mich aber nicht mehr entsinnen, wo...<BR>
    <BR>
    Vielen Dank im Voraus ... Gruss Christian

  • #2
    Hallo,

    das hat nichts mit UDP zu tun, sondern betriff alle Fließkommazahlen - da dort zwangsläufig Rundungsfehler auftreten müssen. Der Delphi-Datentyp Single hat nur 7-8 signifikante Stellen.
    Die besser geeigneten Alternativen werden auf der Delphi-Hilfeseite <b>Reelle Typen</b> beschrieben

    Comment


    • #3
      Vielen dank <BR&gt

      Comment


      • #4
        Nachtrag:<BR>
        Ein weiteres Problem ist die groesse von 2048 Byte.<BR>
        Da ein Array in einer Groesse von ca.4000 Byte gestückelt werden muesste, frage ich mich, ob UDP hierfür noch sinnvoll ist.<BR>
        Die Tatsache, dass ein Handshake erforderlich wird, der bei waitforsingleobject den Rechner ggf. lahmlegt laesst mich daran zweifeln.<BR>
        Sollte es dazu eine Patentloesung geben, bitte ich nochmals um Info.<BR>
        <BR>
        Danke Christian

        Comment


        • #5
          Zum einen ist UDP kein universell für alle Aufgaben nutztbarer Weg und zum anderen versuche ich immer, nur dann auf die "Low-Level-Protokolle" zurückzugreifen, wenn es nicht anders geht. Welche Aufgaben in welcher Rechnerumgebung sollen denn umgesetzt werden

          Comment


          • #6
            Vielen Dank für Ihre Antwort<BR>
            <BR>
            Die aufgabe ist folgende:<BR>
            Ein Record von daten wird mittels vartype array of char über UDP übertragen. Der Record umfasst ca 600 Realzahlen und commandos für einen externen Rechenalgorithmus.<BR>
            Der algorithmus seinerseits gibt daraufhin eine schar von werten zurück, die beim client angezeigt werden .. ca. 4*400 real.<BR>
            Das Problem der Übtragung hab ich soweit geloest (hab nen eigenen Overhead declariert, der anhend der Übertragungsnummer n*2048 Byte dem Array zuweist).<BR>
            Das neuerliche Problem ist eine "EAccessViolation", die beim BEENDEN des einen UDP-Programms auftritt. Die Übertragung funktioniert einwandfrei.<BR>

            Danke...<BR>
            Gruss christia

            Comment

            Working...
            X