====== 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''). **Bis lyxc 1.1.1C stürzte jede Abfrage ab** ([[https://github.com/SEOLizer/LyX-Compiler/issues/1604|#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()''. Letzte Aktualisierung: 2026-08-18 — Signaturen auf ''pchar'' berichtigt, ''CountryGetCount'' und die Struct-Felder ergänzt, lauffähiges Beispiel mit echter Ausgabe ([[https://github.com/SEOLizer/LyX-Compiler/issues/1604|#1604]]).