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

Re: Bug ?! Kategorie: Programmierung (von Jörg - 13.12.2004 10:05)
Als Antwort auf Re: Bug ?! von Hansi - 10.12.2004 12:32

Wie beschrieben:

tempvar = (getchar(faktor, 8) - 48);
tempvar = tempvar * 10000;

geht ja;

tempvar = 10000 * (getchar(faktor, 8) - 48);

geht nicht, also nimm ich die Variante die geht ;-)

Gruss Jörg

> Hallo Jörg,
>
> was meinst Du mit "naja, läuft ja jetzt!"
>
> Hast Du den Variablentyp geändert oder eine andere Lösung gefunden?
>
> GruÃ? Hansi
>
> > Das kann's nicht sein. 9 * 100.000, 4 * 1.000.000 ... klappt ja!
> > Wird wohl schon irgendwo ein Bug sein. Naja, läuft ja jetzt.
> >
> > Thanx für deine Zeit Hansi
> >
> >
> > >
> > > 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 Thomas - 14.12.2004 14:36)