![]() |
Zahl in Worten ausgeben
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
habe eine Unit im Forum gefunden,die man "nur"mit einbinden muss. Hab ich gemacht.Nur komme ich mit dem Code nicht klar.:oops: Es sollen nur Zahlen eingegeben werden im Edit1 und Edit2 soll die Zahl als Wort dagestellt werden. Ich bekomm es einfach nicht hin.Hab das "Projekt" mal mit drangehangen. Ich bin ein Laie und noch am üben. |
AW: Zahl in Worten ausgeben
Wenn ich den Code in der Unit richtig verstehe, musst du nur die
Delphi-Quellcode:
aufrufen. Der Kommentar zur Function lautet:
function GetShortName(Zahl: Integer; Tousand: Boolean;
Last: Boolean = False): string; Zitat:
|
AW: Zahl in Worten ausgeben
Und wenn ich es von eben kurz drüberschauen richtig in Erinnerung habe, wird gerade diese Funktion komischerweise nicht aus der Unit exportiert. Oben im interface-Teil fehlt also die Deklaration.
|
AW: Zahl in Worten ausgeben
Hmm da hast du Recht. Aber alle anderen Funktionen ergeben keinen wirklichen Sinn. Die "BuildList-Function" gibt nur TStrings zurück. Man müsste sich die Zahl also selbst zusammenesetzen. Meiner Meinung nach hat der "Codeschreiber" vergessen, diese Function aufzunehmen, sprich zu veröffentlichen. Ich würde sie einfach mal dazuschreiben (sie wird nämlich nur von der BuildList-Function aufgerufen) und diese mal ausführen und kucken was zurückgegeben wird.
|
AW: Zahl in Worten ausgeben
Delphi-Quellcode:
sollte die richtige Funktion sein. Steht auch im interface...
(**
* Konvertiert einen String mit der Zahl in Ziffern, in einen String mit der * ausgeschrieben Zahl. * * Input - Die Zahl in Ziffern. *) function ConvertString(const Input: string): string; // Public
Delphi-Quellcode:
Klappt bei mir auch unter Lazarus, nur ab den Tausendern schreibt er noch null dazu komischerweise...
uses ... NumUnit ...;
procedure TForm1.Button1Click(Sender: TObject); var inputZif: String; begin inputZif:= Edit1.Text; Edit2.Text:= ConvertString(inputZif); end; Mfg |
AW: Zahl in Worten ausgeben
:oops: total übersehen. Aber auch nur im Notepad (nichtmal Notepad++) angeschaut. Das ist dann kein Wunder.
ConvertString sieht zumindest vom Aufbau her ziemlich danach aus. |
AW: Zahl in Worten ausgeben
Ja der Aufbau hat mich auch erst etwas verwirrt und ich dachte auch erst es wäre Short. Aber Short ist eigentlich eine Funktion von GetShortName.
|
AW: Zahl in Worten ausgeben
Hallo,
so geht es:
Delphi-Quellcode:
Beste Grüße
var zahl:tbignum;
zahlstring:string; i:integer; begin zahlstring:='12345678901234567890'; // zum Beispiel setlength(zahl,length(zahlstring)); for i:=1 to length(zahlstring) do zahl[i-1]:=ord(zahlstring[i])-48; listbox1.items:=BuildList(zahl,false,true); //irgendein tstrings setlength(zahl,0); end; Mathematiker |
AW: Zahl in Worten ausgeben
Zitat:
Mfg |
AW: Zahl in Worten ausgeben
Hier mal beide Versionen im Vergleich (Zahl: 12345678901234567890):
function BuildList...:
Code:
function ConvertString...:
12 Trillionen
345 Billiarden 678 Billionen 901 Milliarden 234 Millionen 567 Tausend 890
Code:
Weiß jemand wie man das null wegbekommt zB wenn man 1000 als Wort ausgibt:
zwölf Trillionen dreihundertfünfundvierzig Billiarden sechshundertachtundsiebzig Billionen neunhunderteins Milliarden zweihundertvierunddreißig Millionen fünfhundertsiebenundsechzig Tausend achthundertneunzig
Code:
ein Tausend null
|
AW: Zahl in Worten ausgeben
Null ist ein Result von GetShortName. Denke mal daß man das '' setzen kann, kann es aber momentan nicht genau überblicken.
Edit: Besser am Ende der BuildList
Delphi-Quellcode:
for I := Result.Count - 1 downto 0 do
if Pos('null', Result[I]) > 0 then Result.Delete(I); |
AW: Zahl in Worten ausgeben
Ja erstmal DANKE!!!
Aber ich weiss jetzt genausoviel wie vorher.Ich hab`s noch nicht gefressen.:stupid: Kann vielleicht jemand dieses Beispiel deklarieren oder "umvögeln" mit Edit1,2 oder Button1 Klick als Wort oder Text anzeigen? Da geht es eher in die Birne(jedenfalls in meine:-D). |
AW: Zahl in Worten ausgeben
@Bjoerk ja stimmt so könnte man es machen.
Die Listenansicht wäre ja für große Zahlen auf jedenfall sinnvoller, man könnte sie auch mit der ConvertString Version kombinieren. Aber zurück zum eigentlichen Problem, ich poste mal die ganze Unit (sollte so unter Delphi problemlos Compilieren), dann müsste es aber eigentlich klar sein, oder ich habe das Problem nicht verstanden...
Delphi-Quellcode:
Ich habe ein neues Projekt erstellt und die Datei NumUnit.pas aus deinem Anhang in den Ordner (des neuen Projektes) kopiert.
unit Unit1;
interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, NumUnit; //Wichtig ! NumUnit hier eifügen type { TForm1 } TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); var EingabeAlsZiffer: String; begin EingabeAlsZiffer:= Edit1.Text; //Einlesen der Zahl als Ziffer Edit2.Text:= ConvertString(EingabeAlsZiffer); //Konvertierung und Ausgabe der Ziffer als Wort in Edit2 end; end. |
AW: Zahl in Worten ausgeben
Einwandfrei.Dankeschööööön!!!:thumb:
|
AW: Zahl in Worten ausgeben
Geht es auch mit Nachkommastellen?
30 von Hundert?:-D usw. |
AW: Zahl in Worten ausgeben
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mich gestern und heute auch mal mit dem Thema befasst.
Im Anhang eine .exe und die Unit, in der die Umwandlung stattfindet als.pas Hoffentlich nicht so viel Bugs... |
AW: Zahl in Worten ausgeben
30 von Hundert? Was ist das für eine Angabe?
Egal: Du könntest für Nachkommastellen deinen Zahl-String einfach am Komma in zwei Teile splitten, den linken durch die hier erarbeitete Funktion jagen, und den rechten (Nachkommaanteil) ziffernweise in Zahlwörter umwandeln und einfach an den Ergebnisstring hinten dran pappen. |
AW: Zahl in Worten ausgeben
Hallo,
ich hatte mich verkehrt ausgedrückt mit 30 von hundert(Alzheimer):-D. Ich wollte nur mitteilen,wie man auch die Nachkommastellen als Text angezeigt bekommt. Zum Beispiel 12,89 zwölfeuroneunundachtzig und nicht eintausendzweihundertneunundachtzig. |
AW: Zahl in Worten ausgeben
Zitat:
In Mathesprech ist das aber zwölfkommaachtneun oder sowas wie Medium das meinte |
AW: Zahl in Worten ausgeben
Liste der Anhänge anzeigen (Anzahl: 1)
Die angefügte Unit mit dem Beispiel macht genau das:
Code:
Dazu habe ich hier diese Funktion genommen
12,89 -> zwölfeuroneunundachtzig
![]() Ich habe mal alles Zusammen im Anhang in einer Unit. Sollte in Delphi Compilieren. Die Dateien aus dem ursprünglichen Anhang sind dafür nicht nötig. MfG |
AW: Zahl in Worten ausgeben
Liste der Anhänge anzeigen (Anzahl: 2)
@AmateurProfi, hattest du selbst eine Umwandlungsfunktion geschrieben ?
Weil in deinem Anhang konnte ich nur die Datei aus dem ursprünglichen Anhang von blondervolker finden ? Ich habe die Funktionen von meinem letzen Beitrag mal zur besseren Übersicht in eine extra Unit gepackt. Hier nochmal beides. Unit1 ist ein Beispiel für den Aufruf. Mfg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:50 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