Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Strings by ref als Funktionsparameter Kategorie: Programmierung C (von PeterS - 5.02.2009 16:57)
Als Antwort auf Re: Strings by ref als Funktionsparameter von Wolfgang - 5.02.2009 11:11

> > > Hallo,
> > > ich möchte in einen bestehenden String den Wert eines Integers in HEX-Darstellung einfügen.
> > > Beispielsweise kann der String lauten "Messwert: $.... HEX" und die word Variable Messwert
> > > enthält den (dezimalen) Wert 3456. Dann will ich bekommen "Messwert: $0D80 HEX".
> > >
> > > Habe dazu ein Prozedur geschrieben, die das Einfügen der 4 Hex-Ziffern übernehmen soll:
> > >
> > > void IntToHex(word Wert, char Ziel[], word Offset)
> > > { int hilf;
> > >
> > >   hilf =   Wert &  0x000F;     Ziel[Offset+3] = (hilf<10)? '0' + hilf : 55 + hilf;  // 55 = 'A'-10
> > >   hilf = Wert>>4 & 0x000F;  Ziel[Offset+2] = (hilf<10)? '0' + hilf : 55 + hilf;
> > >   hilf = Wert>>8 & 0x000F;  Ziel[Offset+1] = (hilf<10)? '0' + hilf : 55 + hilf;
> > >   hilf = Wert>>12 & 0x000F;  Ziel[Offset]   = (hilf<10)? '0' + hilf : 55 + hilf;
> > > }
> > >
> > > und wollte die aus dem Hauptprogramm folgendermassen rufen:
> > >
> > > void main(void)
> > > {
> > >   word Messwert;
> > >   char Text[50];
> > >
> > >   Text = "Messwert: $.... HEX";
> > >   Messwert = 3456;
> > >   IntToHex(Messwert, Text, 11);
> > > }
> > >
> > > Das Programm lässt sich fehlerfrei kompilieren, aber der Probelauf bricht ab mit der Meldung
> > > "Array Index zu gross bei Adresse 25399 in Thread 0 "
> > >
> > > Was ist falsch?
> >
> > Ist es möglich, das Du nicht die aktuelle Beta, sondern eine ältere Beta Version benutzt? In Version
> > 1.99.2 ist der Bug eigentlich behoben.
> >
> > Gruss Peter
>
> Hallo Peter,
>
> stimmt: ich nutze Beta 1.98, da ich beim Ã?bertragungs-Versuch mit Beta 1.99.2 stets Abbruch
> bekomme.
>
> Ich werde also warten, bis der Nachfolger von 1.99.2 fertig ist  --  bin ja schon beruhigt, dass ich
> die Beschreibung wohl richtig verstanden habe!
>
> Dank + GruÃ?,
> Wolfgang

Es gab einen Bug in der 1.98, da wurde der Array Index versehentlich auch bei Zeigerübergabe (ByRef)
ausgewertet. Da bei einem Zeiger die Array Grö�e nicht konstant ist, werden dann willkürlich
Fehler gemeldet.
Ein zweiter Bug hat den Array Index Check auch bei der Anzeige von Warnungen eingeschaltet. Wenn
Du also alle Warnungen in den Optionen ausschaltestet, wird dieser Bug auch bei der 1.98 nicht
auftreten.

Gruss Peter


    Antwort schreiben


Antworten:

Re: Strings by ref als Funktionsparameter (von Wolfgang - 7.02.2009 12:57)