std.country

Vollständige ISO 3166-1-Länderdatenbank mit 249 Einträgen. Bidirektionale Suche nach ISO-Alpha-2-Code (z.B. DE, FR) und Ländername, Zuordnung von Währungscode und Region (8 Regionen: Europa, Asien, Afrika, Nord-/Südamerika, Ozeanien, Naher Osten, Karibik) sowie numerischem ISO-Code.

Einsatzbereiche: Abhängigkeit von std.validate.vat, std.validate.iban und std.net.whois; Internationalisierung, E-Commerce-Adressvalidierung, geografische Datenauswertung.

Autor: Andreas Röne
Copyright: 2024-2025 Andreas Röne


Konstanten

Name Typ Wert Sichtbarkeit
COUNTRY_COUNT int64 249 pub
REGION_EUROPE int64 1 pub
REGION_ASIA int64 2 pub
REGION_AFRICA int64 3 pub
REGION_NORTH_AMERICA int64 4 pub
REGION_SOUTH_AMERICA int64 5 pub
REGION_OCEANIA int64 6 pub
REGION_MIDDLE_EAST int64 7 pub
REGION_CARIBBEAN int64 8 pub

Typen

CountryEntry (struct)

Feld Typ Bedeutung
code int64 Zeiger auf den zweibuchstabigen Alpha-2-Code
name int64 Zeiger auf den Ländernamen
currency int64 Zeiger auf den dreibuchstabigen Währungscode
region int64 eine der REGION_*-Konstanten
numeric int64 numerischer ISO-3166-1-Code

Funktionen

Signatur Sichtbarkeit Beschreibung
CountryInitDb(): int64 pub Initialisiert die Länderdatenbank im Speicher — vor der ersten Abfrage aufrufen
CountryStrEqual(s1: int64, s2: int64): int64 pub Vergleicht zwei Länder-Strings auf Gleichheit
CountryGetName(code: pchar): pchar pub Liefert Ländername zu Alpha-2-Code
CountryGetCode(name: pchar): pchar pub Liefert Alpha-2-Code zu Ländername
CountryGetCurrency(code: pchar): pchar pub Liefert Währungscode zu Alpha-2-Code
CountryGetRegion(code: pchar): int64 pub Liefert Regions-ID zu Alpha-2-Code
CountryGetNumeric(code: pchar): int64 pub Liefert numerischen ISO-Code des Landes
CountryGetRegionName(region: int64): pchar pub Liefert Regionsname zur Regions-ID
CountryIsValid(code: pchar): int64 pub Prüft ob Alpha-2-Code gültig ist
CountryGetCount(): int64 pub Zahl der Einträge (249)
CountryGetCount(): int64 pub Gibt Anzahl der Ländereinträge zurück

—-

Beispiel

unit main;
import std.io;
import std.string;
import std.country;

fn main(): int64 {
    CountryInitDb();
    Print("CountryGetCount : "); PrintLn(IntToStr(CountryGetCount()));
    Print("DE -> "); Print(CountryGetName("DE"c)); Print(" / ");
    Print(CountryGetCurrency("DE"c)); Print(" / ");
    Print(CountryGetRegionName(CountryGetRegion("DE"c))); Print(" / ");
    PrintLn(IntToStr(CountryGetNumeric("DE"c)));
    Print("Japan -> "); PrintLn(CountryGetCode("Japan"c));
    Print("CountryIsValid(XX) : "); PrintLn(IntToStr(CountryIsValid("XX"c)));
    return 0;
}

CountryGetCount : 249
DE -> Germany / EUR / Europe / 276
Japan -> JP
CountryIsValid(XX) : 0

Namen, Regionsnamen und Währungscodes sind englisch; Name und numerischer Code stammen aus ISO 3166-1 (/usr/share/iso-codes).

<WRAP alert> Bis lyxc 1.1.1C stürzte jede Abfrage ab (#1604): die Tabelle wurde mit poke8/peek8 auf Acht-Byte-Feldern befüllt und gelesen, von jeder Zeichenketten-Adresse blieb das niederwertigste Byte übrig. Außerdem enthielt sie nur 67 der 249 Einträge. Beides ist behoben — wer eine ältere Fassung einsetzt, prüft das mit CountryGetCount(). </WRAP>

Letzte Aktualisierung: 2026-08-18 — Signaturen auf pchar berichtigt, CountryGetCount und die Struct-Felder ergänzt, lauffähiges Beispiel mit echter Ausgabe (#1604).