![]() |
Kleiner Zahlenkonvertierer
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
da mir vorher langweilig war, hab ich aus Spaß ein kleines Programm zum Konvertieren von Zahlensystem gebastelt. Vom 2er bis 16er-System ist alles möglich. Vielleicht kann es ja jemand brauchen. ;) Kleiner Changelog + Längere Binär-Strings sind nun möglich + STRG+C, STRG+V, STRG+X funktioniert + Es können nur die jeweiligen Zahlen des Systems eingegeben werden + A...F wird nun als "Zahl" akzeptiert |
Re: Kleiner Zahlenkonvertierer
Hi!
Mir sind direkt zwei Fehler aufgefallen :P 1. sind keine längeren Binary-Strings möglich "'100010011000' ist kein gültiger Integerwert.", obwohl es nur "2200" sind... 2. kann man als Binärzahl 23123 eingeben (ist aber keine ;)) und bekommt z.B. 67 im Dezimalsystem raus... :duck: Chris Edit: Basiert dein Algo auf den aus dem "Easy Helper"? |
Re: Kleiner Zahlenkonvertierer
Hi,
zu 1: Da werde ich mal schauen. ;-) zu 2: It's not a bug, it's a feature ;-) Ich schaue nicht, welche Zahlen man, je nach System, eintippen kann. |
Re: Kleiner Zahlenkonvertierer
Zitat:
Die "1" ist ja gültig, aber was macht er aus der "2" und der "3"? Einsen und Nullen? Chris |
Re: Kleiner Zahlenkonvertierer
Nein, es rät nicht. ;-)
Fehler 1 behoben, 2 mach ich jetzt und 3 hab ich gerade gefunden (man kann keine Buchstaben als Zahlen eingeben :mrgreen: ) |
Re: Kleiner Zahlenkonvertierer
*g*
Und nochwas: Strg+C und Strg+V funktionieren in den Edit-Feldern nicht... Chris |
Re: Kleiner Zahlenkonvertierer
Zitat:
|
Re: Kleiner Zahlenkonvertierer
So, dürfte jetzt beides drinne sein.
|
Re: Kleiner Zahlenkonvertierer
Hmmm warum sind Strg+C, Strg+V und Strg+X ein Feature? Das geht doch von Windows aus in jedem Edit!
:arrow: Wie schaut's aus mit Gleitkommazahlen? Könnte man auch noch als Feature einbauen! |
Re: Kleiner Zahlenkonvertierer
Hi Manu,
ohne dir zu nahe treten zu wollen: Ein Programm dieser Art nimmt man am Gymi in den ersten Wochen des Informatik-Unterrichts durch, zumindest war es bei uns so. Wäre es daher nicht schön für andere (speziell für Anfänger), wenn du den Code offenlegen würdest, damit die Leute etwas daraus lernen können? Du programmierst schließlich seit Jahren und daher ist dies evtl. auch in deinem Interesse, anderen in dieser Weise helfen zu können und ich vermute, du hast auch nichts zu verheimlichen. *g* Das nur als kleine Anregung. ;) Grüße |
Re: Kleiner Zahlenkonvertierer
Hallo,
ich hab auch noch nen Fehler gefunden: Ich hab in der ersten ComboBox "2 (binär)" ausgewählt und links in das Editfeld eine Binärzahl eingegeben. Wenn ich dann auf den Button "Umrechnen" klicke, bekomm ich auch einen Wert unten raus. Klick ich aber danach auf den Button "Zahlen tauschen" dann hab ich in dem oberen Editfeld eine nicht Binärzahl drin und die Software berechnet trotzdem. Da ist was faul (und dies ist kein feature) :-) |
Re: Kleiner Zahlenkonvertierer
Ich sagte nicht, dass es ein Features ist, nur das es jetzt wieder funktioniert. ;)
Matze: Code lege ich noch bei. Da ich wusste, dass ich das nicht "fehlerfrei" programmiere, mussten erstmal Tester her :tongue: Helmi: Doch, ist es. Da beim Tauschen der Werte nicht auf die Zahlensysteme geachtet werden. (sonst müsste man ja wieder umrechnen). Ich werde die Zahlensysteme mittauschen. |
Re: Kleiner Zahlenkonvertierer
Zitat:
Aber wie hast du es geschafft das abzuschalten? :mrgreen: |
Re: Kleiner Zahlenkonvertierer
Delphi-Quellcode:
So ;-)
// OnKeyPress:
if (not (Key in Keys(cbbAusgang.ItemIndex))) and (not (Key in [#8])) then Key := #0; |
Re: Kleiner Zahlenkonvertierer
Immer diese Brutalo-Methoden, die sich verselbständigen... *tztztz*
Gutes Beispiel für Feature => Bug :stupid: |
Re: Kleiner Zahlenkonvertierer
:mrgreen:
Naja, im OnKeyDown hab ich es wieder eingebaut, also keine Probleme damit. Ich räum nachher noch ein bisschen den Source auf, dann kommt der auch noch. Ist ja, wie gesagt, nur ein kleines Ding, da ich öfters mal schnell was umwandeln möchte und dann mal wieder keinen Umwandler zur Hand habe (google hilft^^) |
Re: Kleiner Zahlenkonvertierer
Zitat:
![]() |
Re: Kleiner Zahlenkonvertierer
Ah Tatsache.
Auch wenn ich den Eintrag einmal bearbeitet habe, konnte ich mich nicht mehr an ihn erinnern. *g* @Manuel: Evtl. wäre es sinnvoller, die Eingaben im OnChange zu überprüfen, denn dann kannst du auch feststellen, ob mittels Strg-V etwas sinnvolles eingefügt wird. Es ist immer noch möglich beispielsweise als Binärzahl so 36689 einfügen zu lassen und dezimal wird daraus 145. |
Re: Kleiner Zahlenkonvertierer
Hallo,
ich hätt da noch einen Verbesserungsvorschlag (bitte nicht hauen :duck: :mrgreen: ) Du solltest vielleicht deine Tabstops ändern, dass man von dem ersten Edit in die 1. ComboBox kommt, dann ins 2. Edit und von dem in die 2. ComboBox. Dann auf den "Umrechnen"-Button und dann auf den "Zahlen tauschen"-Button |
Re: Kleiner Zahlenkonvertierer
Hallo,
wenn ich mit Deinem Programm eine Zahl konvertiert habe, dann kann ich die Zahl aus dem Editfeld für die Eingangszahl Ausschneiden, Kopieren und Löschen. Warum funktioniert das nicht bei dem Editfeld für die Ausgangszahl? :gruebel: Gruß Jörg |
Re: Kleiner Zahlenkonvertierer
Nettes Programm, hat allerdings für mich keinen Nutzen.
Wieso nicht noch weitere abstrakte Zahlensystem einbauen? Mal was ganz altes aus dem Infounterricht:
Delphi-Quellcode:
Diese Funktion arbeitet vom Binärsystem bis zum System der Basis 36 :lol:
function xtoy(dez,base:integer):string;
const num:array [0..35] of char = ('0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F','G','H','I','J', 'K','L','M','N','O','P','Q','R','S','T', 'U','V','W','X','Y','Z'); begin result:=''; if (base>36) or (base<2) then begin result:='Keine gültige Basis!'; exit; end; repeat result:=num[dez mod base]+result; dez:=dez div base; until dez=0; end; //Edit: Whoopsies, hätte vielleicht vorher mal nachdenken sollen. Diese Funktion rechnet nur Zahlen aus dem Dezimalsystem in andere um, sonst nichts. 'schuldige :wall: |
Re: Kleiner Zahlenkonvertierer
Zitat:
Delphi-Quellcode:
Damit kann man von 2er bis zum 36er System alles umrechnen lassen.
function BaseToBase(Value: string; StartBase, EndBase: byte): string;
const Digits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; var i: Integer; dez, j: Int64; begin Result:=''; if (StartBase<2) or (StartBase>36) or (EndBase<2) or (EndBase>36) then Exit; for i:=1 to Length(Value) do begin j:=Pos(Value[i], Digits); if (j>StartBase) or (j=0) then Exit; end; j:=1; dez:=0; for i:=Length(Value) downto 1 do begin dez:=dez + (Pos(Value[i], Digits)-1) * j; j:=j*StartBase; end; repeat Result:=Digits[dez mod EndBase+1] + Result; dez:=dez div EndBase; until dez=0; end; |
Re: Kleiner Zahlenkonvertierer
[ot]Danke, die werd ich mal durch meine alte in der Codeschnipsel.pas ersetzen :P[/ot]
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz