001
20.05.2007, 18:50 Uhr
öni
|
Ist nicht mein eingenes geistiches Eigentum. Hoffe es funktioniert. Allerdings ist der Quellcode von einer GUI-Anwendung du müsstes es eben für deine Zwecke umschreiben. Ansonsten ist die Rechnung eben von Dez nach Beliebig und von Beliebig nach Dez. Hoffe es hilft dir weiter. Umsolänger ich mir den Code anschaue denke ich das du ihn am besten selber schreibst weil der ein wenig konfus ist.
C++: |
short zSys; zSys = cbxZahlensystem->ItemIndex +2; //Zahlensystem
if (rgAuswahl->ItemIndex == 0) //von dez nach beliebig { AnsiString dezErgStr = ""; char zeichensatz[] = "0123456789ABCDEF"; char cZiffer[20] = ""; short zSys; zSys = cbxZahlensystem->ItemIndex +2; //Zahlensystem int i=0,j=0,k=0, zahl = 0; short rest = 0; zahl = StrToInt(edtEDez->Text); while (zahl > 0) { rest = zahl % zSys; cZiffer[i] = zeichensatz[rest]; zahl = zahl / zSys; i++; } for (k=i-1; k >=0; k--) dezErgStr = dezErgStr + cZiffer[k]; edtABin->Text = dezErgStr; } if (rgAuswahl->ItemIndex == 1) //von beliebig nach dez { AnsiString asZahl = ""; AnsiString asZiffer = ""; AnsiString zeichensatz = "0123456789ABCDEF";
int anzStellen; int dezZahl = 0; int ziffer = 0 ; asZahl = edtABin->Text ; anzStellen = asZahl.Length(); for (int i = 0; i < anzStellen; i++) { asZiffer = asZahl.SubString((i+1),1); ziffer = zeichensatz.Pos(asZiffer)-1; dezZahl = ziffer * pow(zSys,(anzStellen - i-1)) + dezZahl;
} edtEDez->Text = IntToStr(dezZahl); }
|
|