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).
