Wachtwoord vergeten?

Wachtwoord vergeten
Vul hier uw email adres in. U ontvangt dan een nieuw wachtwoord.

Procedure: Valuta's of getallen converteren naar Engelse woorden

Gepost op 16-10-2003 - Overige Microsoft Producten - 0 reacties


De informatie in dit artikel is van toepassing op:

  • Microsoft Visual FoxPro 3.0 Standard Edition
  • Microsoft Visual FoxPro 3.0b Standard Edition
  • Microsoft Visual FoxPro 5.0 Standard Edition
  • Microsoft Visual FoxPro 5.0a
  • Microsoft Visual FoxPro 6.0 Professional Edition
  • Microsoft Visual FoxPro 3.0b voor Macintosh

Dit artikel is eerder gepubliceerd onder NL259663

Samenvatting


In dit artikel wordt beschreven hoe u een door de gebruiker gedefinieerde voorbeeldfunctie kunt maken met de naam ConvertCurrencyToEnglish() om een numerieke waarde te converteren naar een versie in Engelstalige woorden. De functie geeft bijvoorbeeld het volgende resultaat voor het getal 1234.56:

One Thousand Two Hundred Thirty Four Dollars And Fifty Six Cents

Meer informatie


De door Microsoft gebruikte programmeervoorbeelden dienen uitsluitend ter illustratie. Microsoft verleent dan ook geen enkele impliciete of expliciete garantie met betrekking tot deze voorbeelden. Er gelden geen impliciete garanties met betrekking tot verkoopbaarheid en/of geschiktheid voor een bepaald doel, noch enigerlei andere garanties. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertalen VBScript en VBA, alsmede met de hulpprogramma's waarmee procedures worden gemaakt en waarmee fouten in procedures worden opgespoord. U kunt desgewenst contact opnemen met Microsoft Productondersteuning voor uitleg over de functie van een bepaalde procedure. Microsoft Productondersteuning is echter niet bereid de voorbeelden aan te passen om extra functies toe te voegen of om procedures te maken die aan uw specifieke wensen voldoen. Als u nog niet zoveel programmeerervaring hebt, kunt u desgewenst contact opnemen met een Microsoft Certified Partner. Als u meer informatie wilt over Microsoft Certified Partners, bezoekt u het volgende adres op het World Wide Web:
Als u meer informatie wilt over andere ondersteuningsopties van Microsoft, bezoekt u het volgende adres op het World Wide Web:
Ga als volgt te werk om de functie ConvertCurrencyToEnglish() te maken:
  1. Maak een nieuw programma en sla het op als ConvertCurrencyToEnglish:
  2. Kopieer en plak de volgende programmacode in het nieuwe programma:
    *FUNCTION ConvertCurrencyToEnglishLPARAMETERS tNumToConvert
    LOCAL TempLOCAL NumToConvertLOCAL cDollars, cCentsLOCAL nDecimalPlace, nCountLOCAL ARRAY aPlace[9]
    DO CASECASE EMPTY(tNumToConvert) NumToConvert = "0"CASE TYPE("tNumToConvert") = "N" && Converteren naar positieve tekenreeks *!* Controleren of het getal te groot is voor VFP. Functie afsluiten als het getal te groot is IF tNumToConvert > 9999999999999.99 RETURN "**,***,***,***,***.**" ENDIF * tnNumToConvert converteren naar een positieve tekenreeks, waarbij extra spaties worden weggehaald. NumToConvert = ALLTRIM(STR(ABS(tNumToConvert), 16, 2))OTHERWISE && Parameter is character based, make sure it is not negative. * Het getal converteren naar een positief getal. NumToConvert = IIF(LEFT(ALLTRIM(tNumToConvert), 1) = "-", SUBSTR(ALLTRIM(tNumToConvert), 2), ALLTRIM(tNumToConvert))ENDCASE
    * Positie van decimaal teken zoeken.nDecimalPlace = AT(".", NumToConvert)
    STORE "" TO cDollars, cCents, Result
    aPlace = ""aPlace[2] = " Thousand "aPlace[3] = " Million "aPlace[4] = " Billion "aPlace[5] = " Trillion "aPlace[6] = " Quadrillion "aPlace[7] = " Quintillion "aPlace[8] = " Sextillion "aPlace[9] = " Septillion "
    * Wanneer de positie van het decimale teken is gevonden...IF nDecimalPlace > 0 * Centen converteren Temp = LEFT(SUBSTR(NumToConvert, nDecimalPlace + 1) + "00", 2) cCents = ConvertTens(Temp)
    * Centen verwijderen van te converteren restant. NumToConvert = ALLTRIM(LEFT(NumToConvert, nDecimalPlace - 1))ENDIF
    nCount = 1DO WHILE NOT NumToConvert == "" * De laatste 3 cijfers van NumToConvert converteren naar dollars in woordvorm. Temp = ConvertHundreds(RIGHT(NumToConvert, 3)) IF NOT Temp == "" cDollars = Temp + aPlace[nCount] + cDollars ENDIF IF LEN(NumToConvert) > 3 Then * Laatste 3 geconverteerde cijfers verwijderen uit NumToConvert. NumToConvert = LEFT(NumToConvert, LEN(NumToConvert) - 3) ELSE NumToConvert = "" ENDIF nCount = nCount + 1ENDDO
    * Schoonmaken van dollargedeelte.DO CASECASE cDollars == "" cDollars = "No Dollars"CASE cDollars == "One" cDollars = "One Dollar"OTHERWISE cDollars = cDollars + " Dollars"ENDCASE
    * Schoonmaken van centgedeelte.DO CASECASE cCents == "" cCents = " And No Cents"CASE cCents == "One" cCents = " And One Cent"OTHERWISE cCents = " And " + cCents + " Cents"ENDCASE
    ConvertCurrencyToEnglish = cDollars + cCentsRETURN ConvertCurrencyToEnglishENDFUNC
    FUNCTION ConvertHundreds LPARAMETERS NumToConvert LOCAL Result Result = ""
    * Functie afsluiten als er niets te converteren is. IF VAL(NumToConvert) = 0 RETURN Result ENDIF
    * Voorloopnullen toevoegen aan getal. NumToConvert = RIGHT("000" + NumToConvert, 3)
    * Zijn er honderdtallen die moeten worden geconverteerd?' IF LEFT(NumToConvert, 1) <> "0" Then Result = ConvertDigit(LEFT(NumToConvert, 1)) + " Hundred " ENDIF
    * Zijn er tientallen die moeten worden geconverteerd?' IF SUBSTR(NumToConvert, 2, 1) <> "0" Then Result = Result + ConvertTens(SUBSTR(NumToConvert, 2)) ELSE * Als dit niet het geval is, de cijfers onder de tien converteren. Result = Result + ConvertDigit(SUBSTR(NumToConvert, 3)) ENDIF
    ConvertHundreds = ALLTRIM(Result) RETURN ConvertHundredsENDFUNC
    FUNCTION ConvertTens LPARAMETERS MyTens LOCAL Result Result = ""
    * Ligt de waarde tussen 10 en 19?' IF VAL(LEFT(MyTens, 1)) = 1 DO CASE CASE VAL(MyTens) = 10 Result = "Ten" CASE VAL(MyTens) = 11 Result = "Eleven" CASE VAL(MyTens) = 12 Result = "Twelve" CASE VAL(MyTens) = 13 Result = "Thirteen" CASE VAL(MyTens) = 14 Result = "Fourteen" CASE VAL(MyTens) = 15 Result = "Fifteen" CASE VAL(MyTens) = 16 Result = "Sixteen" CASE VAL(MyTens) = 17 Result = "Seventeen" CASE VAL(MyTens) = 18 Result = "Eighteen" CASE VAL(MyTens) = 19 Result = "Nineteen" OTHERWISE ENDCASE ELSE * .. anders ligt deze TUSSEN 20 EN 99. DO CASE CASE VAL(LEFT(MyTens, 1)) = 2 Result = "Twenty " CASE VAL(LEFT(MyTens, 1)) = 3 Result = "Thirty " CASE VAL(LEFT(MyTens, 1)) = 4 Result = "Forty " CASE VAL(LEFT(MyTens, 1)) = 5 Result = "Fifty " CASE VAL(LEFT(MyTens, 1)) = 6 Result = "Sixty " CASE VAL(LEFT(MyTens, 1)) = 7 Result = "Seventy " CASE VAL(LEFT(MyTens, 1)) = 8 Result = "Eighty " CASE VAL(LEFT(MyTens, 1)) = 9 Result = "Ninety " OTHERWISE ENDCASE
    * Cijfer onder de tien converteren. Result = Result + ConvertDigit(RIGHT(MyTens, 1)) ENDIF ConvertTens = Result RETURN ConvertTensENDFUNC
    FUNCTION ConvertDigit LPARAMETERS MyDigit DO CASE CASE VAL(MyDigit) = 1 ConvertDigit = "One" CASE VAL(MyDigit) = 2 ConvertDigit = "Two" CASE VAL(MyDigit) = 3 ConvertDigit = "Three" CASE VAL(MyDigit) = 4 ConvertDigit = "Four" CASE VAL(MyDigit) = 5 ConvertDigit = "Five" CASE VAL(MyDigit) = 6 ConvertDigit = "Six" CASE VAL(MyDigit) = 7 ConvertDigit = "Seven" CASE VAL(MyDigit) = 8 ConvertDigit = "Eight" CASE VAL(MyDigit) = 9 ConvertDigit = "Nine" OTHERWISE ConvertDigit = "" ENDCASE RETURN ConvertDigitENDFUNC

  3. Sla het programma op als convertcurrencytoenglish.prg
  4. U kunt het programma testen door de volgende regel te typen in het Command-venster en op ENTER te drukken: ? ConvertCurrencyToEnglish(1234.56)
OPMERKING: het grootste getal waarmee dit programma overweg kan, is 9.999.999.999.999,99 wegens productbeperkingen.

Referenties

210586 How to Convert Currency or Numbers into English Words


PrintPrint RSS reactiesRSS reacties BookmarkBookmark

Gekoppelde tags

FoxPro, Procedure

Reacties
Nog geen reacties geplaatst.

Winkelmandje

Het winkelmandje is leeg

Inloggen
Als u hierboven op de knop 'bestellen' klikt krijgt u een overzicht van de door uw gewenste producten. Indien het overzicht compleet en correct is kunt via de wizard de verdere gegevens invullen en uw bestelling afronden. In het bestelproces kunt u altijd op 'vorige' drukken om terug te gaan in het proces. Bij Perrit staan vertrouwen, privacy en veiligheid op de eerste plaats, wij zullen uw gegevens dan ook met uiterste zorgvuldigheid behandelen en nooit doorgeven aan derden.

Perrit.nl Sherwood Rangers 29 Hengelo

Perrit.nl telefoon: +31 74 750 12 20

Kenniscentrum - Procedure: Valuta's of getallen converteren naar Engelse woorden
Perrit Kenniscentrum - Procedure: Valuta's of getallen converteren naar Engelse woorden