Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zahl in Worten ausgeben (https://www.delphipraxis.net/175298-zahl-worten-ausgeben.html)

blondervolker 11. Jun 2013 14:47

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.

Aviator 11. Jun 2013 15:01

AW: Zahl in Worten ausgeben
 
Wenn ich den Code in der Unit richtig verstehe, musst du nur die
Delphi-Quellcode:
function GetShortName(Zahl: Integer; Tousand: Boolean;
    Last: Boolean = False): string;
aufrufen. Der Kommentar zur Function lautet:
Zitat:

(**
* Gibt den Zahlenname für Zahlen kleiner Tausend aus.
*
* Zahl - Die Zahl die konvertiert werden soll.
* Tousand - Wenn True, wird 1 als 'ein' ausgegeben, sonst als 'eine' (man
* sagt "eine Million/Milliarde", aber "ein Tausend").
*)
Du musst eben nur noch wissen, wann du als zweiten Parameter true und wann false übergibst.

Der schöne Günther 11. Jun 2013 15:03

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.

Aviator 11. Jun 2013 15:09

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.

Ginko 11. Jun 2013 15:12

AW: Zahl in Worten ausgeben
 
Delphi-Quellcode:
(**
* 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
sollte die richtige Funktion sein. Steht auch im interface...

Delphi-Quellcode:
uses ... NumUnit ...;    
 
procedure TForm1.Button1Click(Sender: TObject);
var
  inputZif: String;
begin
  inputZif:= Edit1.Text;
  Edit2.Text:= ConvertString(inputZif);
end;
Klappt bei mir auch unter Lazarus, nur ab den Tausendern schreibt er noch null dazu komischerweise...

Mfg

Aviator 11. Jun 2013 15:16

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.

Ginko 11. Jun 2013 15:22

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.

Mathematiker 11. Jun 2013 15:30

AW: Zahl in Worten ausgeben
 
Hallo,
so geht es:
Delphi-Quellcode:
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;
Beste Grüße
Mathematiker

Ginko 11. Jun 2013 15:52

AW: Zahl in Worten ausgeben
 
Zitat:

Zitat von Mathematiker (Beitrag 1218249)
Hallo,
so geht es:
Delphi-Quellcode:
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;

Naja bei der Variante fehlt aber noch die 890 zum Schluss als Wort(aber wahrscheinlich ist das Absicht, würde sich ja blöd anhören...). Es ist eher eine Semi-Wort Variante würde ich sagen. Und blondervolker hat nichts von einer Listendarstellung gesagt. Aber auch interessant.

Mfg

Ginko 11. Jun 2013 16:15

AW: Zahl in Worten ausgeben
 
Hier mal beide Versionen im Vergleich (Zahl: 12345678901234567890):

function BuildList...:
Code:
12 Trillionen
345 Billiarden
678 Billionen
901 Milliarden
234 Millionen
567 Tausend
890
function ConvertString...:
Code:
zwölf Trillionen dreihundertfünfundvierzig Billiarden sechshundertachtundsiebzig Billionen neunhunderteins Milliarden zweihundertvierunddreißig Millionen fünfhundertsiebenundsechzig Tausend achthundertneunzig
Weiß jemand wie man das null wegbekommt zB wenn man 1000 als Wort ausgibt:
Code:
ein Tausend null


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:50 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz