Funktionen einbinden
-
Hi Folks...
wie in einem früheren Beitrag schon mal erwähnt, bin ich nun nicht so die Programmierleuchte... es ist sicher kein großes Problem aber ich brüte schon seit einigen Stunden daran... Es geht darum einen Algorithmus zu schreiben, der eine Dezimalzahl in eine Binärzahl umwandelt... Eigentlich kein Ding... und wenn ich das ganze in den laufenden Quelltext einschreibe, dann funktioniert das auch... ich will das ganze allerdings in eine Funktion einbauen und daran haperts... hier mal der Quelltext:
unsigned char DecToBin (unsigned char Data) { unsigned char ausgabe[9]; int zahl, i, tmp; i = 0; zahl = StrToInt(Data); while (zahl > 0) { tmp = zahl % 2; zahl = zahl / 2; ausgabe[i] = tmp + '0'; i++; } ausgabe[i] = 0; return ausgabe[i]; } void __fastcall TForm1::Button1Click(TObject *Sender) { unsigned char x; x = DecToBin(128); Label1->Caption = x; }...daß das ganze Seitenverkehrt ist, ist erstmal nicht so schlimm... der Wert 128 ist nur ein Festwert zum testen... woran kanns liegen, daß das nicht funzt?
Danke schon mal im Voraus!
MfG, Waldguru
-
Hallo,
unsigned char ist ein einzelnes Zeichen. Ich nehme mal an du willst eine Zeichenkette übergeben und zurückgeben. Mach doch gleich alles mit AnsiString.
-
Hmmm... ich habs zwar nach meinem Verständniss umgeändert, aber irgendwie hat mir das jetzt nicht so richtig weitergeholfen

...das ist jetzt der Quelltext, aber so wirklich funktionieren tut es trotzdem noch nicht... aber irgendwie traue ich meiner Funktionendeklaration noch nicht... die Eingangsvariable muß aber unsigned Char bleiben, da die auszuwertenden Werte des Adapters in diesen Datentyp haben.AnsiString DecToBin (unsigned char Data) { AnsiString ausgabe[8]; int zahl, i, tmp; i = 0; zahl = StrToInt(Data); while (zahl > 0) { tmp = zahl % 2; zahl = zahl / 2; ausgabe[i] = tmp + '0'; i++; } ausgabe[i] = 0; return ausgabe[i]; } void __fastcall TForm1::Button1Click(TObject *Sender) { Label1->Caption = DecToBin(128); }vielleicht kann mir ja wer eine bessere funktionierende Lösung oder zumindest die Fehler in meinem Quelltext offenbaren?
MfG, Waldguru
-
AnsiString DecToBin (unsigned char Data) { AnsiString ausgabe; int zahl, i, tmp; i = 0; zahl = StrToInt(Data); while (zahl > 0) { tmp = zahl % 2; zahl = zahl / 2; ausgabe = ausgabe + AnsiString(tmp) + "0"; i++; } ausgabe = ausgabe + "0"; return ausgabe; } void __fastcall TForm1::Button1Click(TObject *Sender) { Label1->Caption = DecToBin(128); }Ich hab mal nur die Stellen die den AnsiString betreffen geändert. Hab gerade keinen BCB hier, bin daheim.
-
Wow, es läuft... ich bin begeistert

Vielen lieben Dank
Ich mußte zwar noch ein paar kleine Änderungen bezüglich der Additionen der Nullen vornehmen, aber folgender Quelltext weist etwas funktionierendes auf, das mir dezimalzahlen in binärzahlen umwandelt (wenn auch verdreht...)

AnsiString DecToBin (unsigned char Data) { AnsiString ausgabe; int zahl, i, tmp; i = 0; zahl = StrToInt(Data); while (zahl > 0) { tmp = zahl % 2; zahl = zahl / 2; ausgabe = ausgabe + AnsiString(tmp); i++; } return ausgabe; } void __fastcall TForm1::Button1Click(TObject *Sender) { Label1->Caption = DecToBin(128); }Vielen Dank, das war mir echt 'ne große Hilfe... also weiter gehts

MfG, Waldguru
-
Hier gibts auch ne kürzere rekursive Variante:
http://www.c-plusplus.net/forum/viewtopic-var-p-is-589485.html#589485