// Es wird eine Stückelungsliste (Anzahl der jeweils benötigten Scheine und
//
Münzen) für eine eingegebene Euro-Summe ermittelt und in einer Listbox
// ausgegeben.

// Getestet mit D4 unter Win98

const 
  werte: array[0..14] of word = 
  (50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1); 
  kw = 'Die Eingabe ist keine gültige Euro-Währung!'; 
  nz = 'Es sind nur zwei Nachkommastellen erlaubt!'; 
  ek = 'Es ist nur ein einziges Komma erlaubt!'; 
 
procedure TForm1.Button3Click(Sender: TObject); 
var 
  x, p: integer; 
  zahl: double; 
  anz: word; 
  s: string; 
begin 
  s := AnsiUpperCase(stringreplace(Edit1.Text, #32, '', [rfreplaceall])); 
  s := stringreplace(s, ThousandSeparator, '', [rfreplaceall]); 
  s := stringreplace(s, 'EURO', '', []); 
  s := stringreplace(s, 'EUR', '', []); 
  s := stringreplace(s, '€', '', []); 
  while ansilastchar(s) = '0' do delete(s, length(s), 1); 
  if ansilastchar(s) = ',' then delete(s, length(s), 1); 
  p := pos(DecimalSeparator, s); 
  if p <> LastDelimiter(DecimalSeparator, s) then begin 
    showmessage(ek); 
    exit; 
  end; 
  if (p < length(s) - 2) and (p <> 0) then begin 
    for x := p + 1 to length(s) do 
      if not (s[x] in ['0'..'9']) then begin 
        showmessage(kw); 
        exit; 
      end; 
    showmessage(nz); 
    exit; 
  end; 
  try 
    zahl := strtofloat(s); 
  except 
    showmessage(kw); 
    exit; 
  end; 
  Listbox1.items.clear; 
  Edit1.Text := formatfloat('#,##0.00 €', zahl); 
  zahl := zahl * 100; 
  for x := 0 to 8 do begin 
    anz := 0; 
    while zahl >= werte[x] do begin 
      inc(anz); 
      zahl := zahl - werte[x]; 
    end; 
    if anz > 0 then 
      Listbox1.items.add(inttostr(anz) + ' x ' + inttostr(werte[x] div 100) + ' EUR'); 
  end; 
  for x := 9 to 14 do begin 
    anz := 0; 
    while zahl >= werte[x] do begin 
      inc(anz); 
      zahl := zahl - werte[x]; 
    end; 
    if anz > 0 then 
      Listbox1.items.add(inttostr(anz) + ' x ' + inttostr(werte[x]) + ' CENT'); 
  end; 
end; 


Zugriffe seit 6.9.2001 auf Delphi-Ecke