Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Kleiner Zahlenkonvertierer (https://www.delphipraxis.net/106008-kleiner-zahlenkonvertierer.html)

Die Muhkuh 3. Jan 2008 21:14


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

CK_CK 3. Jan 2008 21:18

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"?

Die Muhkuh 3. Jan 2008 21:20

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.

CK_CK 3. Jan 2008 21:23

Re: Kleiner Zahlenkonvertierer
 
Zitat:

Zitat von Die Muhkuh
zu 2: It's not a bug, it's a feature ;-) Ich schaue nicht, welche Zahlen man, je nach System, eintippen kann.

Rät das Programm, welche Zahl ich meine, wenn ich "123" als Binär-String eingebe?
Die "1" ist ja gültig, aber was macht er aus der "2" und der "3"? Einsen und Nullen?

Chris

Die Muhkuh 3. Jan 2008 21:24

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: )

CK_CK 3. Jan 2008 21:26

Re: Kleiner Zahlenkonvertierer
 
*g*
Und nochwas: Strg+C und Strg+V funktionieren in den Edit-Feldern nicht...

Chris

Die Muhkuh 3. Jan 2008 21:32

Re: Kleiner Zahlenkonvertierer
 
Zitat:

Zitat von CK_CK
*g*
Und nochwas: Strg+C und Strg+V funktionieren in den Edit-Feldern nicht...

Chris

Drinne (mit STRG+X sogar :tongue: ), die anderen zwei Sachen kommen noch ;)

Die Muhkuh 3. Jan 2008 21:53

Re: Kleiner Zahlenkonvertierer
 
So, dürfte jetzt beides drinne sein.

fLaSh11 3. Jan 2008 22:17

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!

Matze 3. Jan 2008 22:26

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

Helmi 3. Jan 2008 22:27

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) :-)

Die Muhkuh 3. Jan 2008 22:29

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.

fLaSh11 3. Jan 2008 22:47

Re: Kleiner Zahlenkonvertierer
 
Zitat:

Zitat von Die Muhkuh
Ich sagte nicht, dass es ein Features ist, nur das es jetzt wieder funktioniert.

Ok, hab's zu flüchtig gelesen. :drunken:

Aber wie hast du es geschafft das abzuschalten? :mrgreen:

Die Muhkuh 3. Jan 2008 22:49

Re: Kleiner Zahlenkonvertierer
 
Delphi-Quellcode:
// OnKeyPress:
if (not (Key in Keys(cbbAusgang.ItemIndex))) and (not (Key in [#8])) then
    Key := #0;
So ;-)

fLaSh11 3. Jan 2008 22:51

Re: Kleiner Zahlenkonvertierer
 
Immer diese Brutalo-Methoden, die sich verselbständigen... *tztztz*
Gutes Beispiel für Feature => Bug :stupid:

Die Muhkuh 3. Jan 2008 22:54

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^^)

Phantom1 4. Jan 2008 08:04

Re: Kleiner Zahlenkonvertierer
 
Zitat:

Zitat von Matze
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

In Code-Library gibt es bereits ein beispiel wie man sowas macht: http://www.delphipraxis.net/internal...=292282#292282

Matze 4. Jan 2008 08:59

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.

Helmi 4. Jan 2008 09:06

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

jmit 11. Jan 2008 17:31

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

rawsoul 11. Jan 2008 19:05

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:
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;
Diese Funktion arbeitet vom Binärsystem bis zum System der Basis 36 :lol:

//Edit: Whoopsies, hätte vielleicht vorher mal nachdenken sollen. Diese Funktion rechnet nur Zahlen aus dem Dezimalsystem in andere um, sonst nichts. 'schuldige :wall:

Phantom1 12. Jan 2008 08:25

Re: Kleiner Zahlenkonvertierer
 
Zitat:

Zitat von rawsoul
Diese Funktion arbeitet vom Binärsystem bis zum System der Basis 36 :lol:

//Edit: Whoopsies, hätte vielleicht vorher mal nachdenken sollen. Diese Funktion rechnet nur Zahlen aus dem Dezimalsystem in andere um, sonst nichts. 'schuldige :wall:

Wenn man alles in einer einzigen function haben will, müsste es in etwa so hier aussehen:
Delphi-Quellcode:
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;
Damit kann man von 2er bis zum 36er System alles umrechnen lassen.

rawsoul 12. Jan 2008 14:12

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