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 Wolfgang - 7.02.2009 12:57)
Als Antwort auf Re: Strings by ref als Funktionsparameter von PeterS - 5.02.2009 16:57
Ich nutze:
C-Control Pro Mega128
> > > > 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
>
Danke, das Abschalten der Warnungen hilft in der Tat.

Gruss, Wolfgang


    Antwort schreiben


Antworten: