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 | ||
| ||
> > > > 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: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum