Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Bug ?! Kategorie: Programmierung (von Hansi - 10.12.2004 9:43)
Als Antwort auf Re: Bug ?! von Jörg - 10.12.2004 8:27
Ich nutze:
C-Control II Unit, C-Control II Station, CC2-Application-Board, OSOPT_V2

Hallo Jörg,

ja ist schon komisch, aber Du hast geschrieben bei Werten bis 3 funktioniert es, dann nicht mehr.
Eine Integer-Variable kann 3*10.000 noch aufnehmen, bei 4*10.000 brauchst Du halt den Typ Long.

Bye Hansi   ...einfach ausprobieren

> Hi Hansi.
>
> Hat natürlich was der Ansatz mit Byte und Long Variablen.
> Ist bestimmt sicherer erst mit: tempvar = (getchar(faktor, 8) - 48);
>
> (ev. besser noch:
> tempbyte = (getchar(faktor, 8) - 48);
> tempvar = tempbyte; und weiterrechnen)
>
> die Typ-Konvertierung durchzuführen und dann zu rechnen.
>
> Unlogisch ist dabei eigentlich nur der Effekt, dass es 7x klappt und 1x nur bei Byte-Wert 48 - 51.
>
> Jörg
>
>
>
> >
> > Hallo Jörg,
> >
> > die Funktion getchart() liefert Dir Integer / Byte zurück und Deine Berechnungen nutzen
> > den Typ long.
> >
> > Ã?bergebe vor Deinen Berechnungen den Wert von getchar() an eine long-Variable und
> > rechne damit weiter oder la� von getchar() ein Typ long zurück geben, dann sollte es
> > klappen.
> >
> > GruÃ? Hansi
> >  
> >
> > > Effekte, welche 5h Fehlersuche zur Folge haben:
> > >
> > > --------------------------------------------------------------------------
> > >
> > > function getchar(byte s[], int position) returns byte
> > > {
> > >  return s[position];
> > > }
> > >
> > > function para3(long kafaktor) returns long
> > > {
> > >  string faktor;
> > >  long tempvar;
> > >
> > >  faktor = "K-Fa:00000000";
> > >
> > > // ... Benutzereingabe des K-Faktors
> > >
> > >  kafaktor = 10000000 * (getchar(faktor, 5) - 48);
> > >  tempvar = 1000000 * (getchar(faktor, 6) - 48);
> > >  kafaktor = kafaktor + tempvar;
> > >  tempvar = 100000 * (getchar(faktor, 7) - 48);
> > >  kafaktor = kafaktor + tempvar;
> > >  
> > >  tempvar = (getchar(faktor, 8) - 48);
> > >  tempvar = tempvar * 10000;
> > > // funktioniert immer
> > >
> > > // tempvar = 10000 * (getchar(faktor, 8) - 48);
> > > // funktioniert nicht, wenn (getchar(faktor, 8) - 48) einen Wert > 3 liefert
> > > // --- ??? ---
> > >
> > >  kafaktor = kafaktor + tempvar;
> > >  tempvar = 1000 * (getchar(faktor,9) - 48);
> > >  kafaktor = kafaktor + tempvar;
> > >  tempvar = 100 * (getchar(faktor,10) - 48);
> > >  kafaktor = kafaktor + tempvar;
> > >  tempvar = 10 * (getchar(faktor,11) - 48);
> > >  kafaktor = kafaktor + tempvar;
> > >  tempvar = (getchar(faktor,12) - 48);
> > >  kafaktor = kafaktor + tempvar;
> > >
> > >  return kafaktor;
> > > }
> > >
> > > -------------------------------------------------------------
> > >
> > > Jemand 'ne logische Erklärung dafür?
> > >
> > > Ein fast wahnsinnig gewordener
> > > Jörg


    Antwort schreiben


Antworten:

Re: Bug ?! (von Jörg - 10.12.2004 10:13)
    Re: Bug ?! - kein Bug ! (von André H. - 19.12.2004 14:21)
    Re: Bug ?! (von Hansi - 10.12.2004 12:32)
        Re: Bug ?! (von Jörg - 13.12.2004 10:05)
            Re: Bug ?! (von Thomas - 14.12.2004 14:36)
    Re: Bug ?! (von krassos - 10.12.2004 11:22)