Skip to content

Interne Bibliotheken

NeoObjectPascal wird mit fünf einsatzbereiten Bibliotheken ausgeliefert, die im Interpreter selbst eingebettet sind. Sie decken gängige Aufgaben rund um Text, Mathematik, Datumsangaben, Dateien und Sammlungen ab. Laden Sie eine beliebige davon mit dem Präfix internal.:

npas
uses internal.string, internal.math, internal.datetime;

begin
    WriteLn(toUpperCase("neo"));
    WriteLn(factorial(5));
    WriteLn(getMonthName(7));
end.
Saída
 NEO 120 Julho 

Da sie aus dem JAR heraus geladen werden, sind sie unabhängig vom Projektverzeichnis immer verfügbar. Siehe Module und uses für die Funktionsweise von uses.

internal.string

Funktionen zum Inspizieren, Formatieren und Umwandeln von Zeichenketten.

FunktionBeschreibung
isEmpty(s) / isNotEmpty(s)Prüft, ob die Zeichenkette (nicht) leer ist
strLength(s)Länge der Zeichenkette
toUpperCase(s) / toLowerCase(s)Wandelt in Groß- / Kleinbuchstaben um
trim(s)Entfernt Leerzeichen an den Rändern
repeat(s, count)Wiederholt die Zeichenkette count-mal
join(sep, s1, s2)Verbindet 2 Zeichenketten mit einem Trennzeichen
join3(sep, s1, s2, s3) / join4(...)Verbindet 3 oder 4 Zeichenketten
quote(s) / singleQuote(s)Umschließt mit doppelten / einfachen Anführungszeichen
bracket(s) / parenthesize(s)Umschließt mit eckigen Klammern / runden Klammern
inStr(haystack, needle)Position der Teilzeichenkette (1-basiert; 0 wenn nicht vorhanden)
contains(haystack, needle)Ob die Teilzeichenkette enthalten ist
startsWith(s, prefix) / endsWith(s, suffix)Ob mit dem Abschnitt beginnt / endet
subString(s, from, len)Extrahiert len Zeichen ab from (1-basiert)
replaceStr(s, from, to)Ersetzt alle Vorkommen von from durch to
intToStr(n) / strToInt(s)Wandelt zwischen Ganzzahl und Zeichenkette um
npas
uses internal.string;

begin
    WriteLn(quote("NeoObjectPascal"));
    WriteLn(repeat("*", 3));
    WriteLn(contains("NeoObjectPascal", "Pascal"));
    WriteLn(join(" ", "João", "Silva"));
end.
Saída
 "NeoObjectPascal" *** true João Silva 

internal.math

Mathematische Funktionen für Ganzzahlen.

FunktionBeschreibung
abs(x)Absolutwert
max(a, b) / min(a, b)Größerer / kleinerer von zwei Werten
square(x) / cube(x)Quadrat / Kubus
factorial(n)Fakultät von n
fibonacci(n)N-te Fibonacci-Zahl
isEven(n) / isOdd(n)Ob gerade / ungerade
gcd(a, b) / lcm(a, b)Größter gemeinsamer Teiler / kleinstes gemeinsames Vielfaches
sign(x)Vorzeichen der Zahl (-1, 0 oder 1)
clamp(value, minVal, maxVal)Begrenzt value auf das Intervall [minVal, maxVal]
npas
uses internal.math;

begin
    WriteLn(abs(-15));
    WriteLn(factorial(5));
    WriteLn(gcd(24, 36));
    WriteLn(clamp(120, 0, 100));
end.
Saída
 15 120 12 100 

internal.datetime

Funktionen zum Abrufen, Validieren, Formatieren und Berechnen von Datumsangaben und Uhrzeiten.

KategorieFunktionen
Aktuelles Datum/UhrzeitgetCurrentYear, getCurrentMonth, getCurrentDay, getCurrentHour, getCurrentMinute, getCurrentSecond
FormatierungformatDate(y, m, d), formatTime(h, m, s), getCurrentDate, getCurrentTime, getCurrentDateTime
ValidierungisLeapYear(year), isValidDate(y, m, d), isValidTime(h, m, s)
BerechnunggetDaysInMonth(y, m), getAge(ano, mes, dia), addDays(...), addMonths(...), addYears(...)
NamengetMonthName, getMonthNameEn, getDayOfWeekName, getDayOfWeekNameEn
npas
uses internal.datetime;

begin
    WriteLn("Ano atual: ", getCurrentYear());
    WriteLn("2024 é bissexto? ", isLeapYear(2024));
    WriteLn("Dias em fevereiro/2024: ", getDaysInMonth(2024, 2));
    WriteLn("Nome do mês 10: ", getMonthName(10));
end.
Saída
 Ano atual: 2026 2024 é bissexto? true Dias em fevereiro/2024: 29 Nome do mês 10: Outubro 

internal.file

Funktionen zum Arbeiten mit Pfaden und Dateien.

KategorieFunktionen
PfadbestandteilegetFileExtension, getFileName, getFileNameWithoutExtension, getParentDirectory, joinPath
NormalisierungnormalizePath, isAbsolutePath, isRelativePath
NamensvalidierungisValidFilename, sanitizeFilename, createTempFilename
DateisystemfileExists, directoryExists, isFile, isDirectory, getFileSize
KlassifizierungisTextFile, isBinaryFile, formatFileSize
npas
uses internal.file;

begin
    WriteLn(getFileExtension("relatorio.pdf"));
    WriteLn(getFileName("/docs/notas.txt"));
    WriteLn(joinPath("docs", "notas.txt"));
    WriteLn(isTextFile("dados.csv"));
end.
Saída
 pdf notas.txt docs/notas.txt true 

internal.collections

Funktionen zum Bearbeiten von Arrays und Listen.

KategorieFunktionen
GrundlegendcreateArray, arraySize, arrayIsEmpty, arrayFirst, arrayLast
SuchearrayContains, arrayIndexOf
TransformationarrayReverse, arraySlice, arraySort, arraySortDesc, arrayUnique, arrayConcat
AggregationarraySum, arrayMax, arrayMin, arrayJoin, arrayReduce
Höhere OrdnungarrayMap, arrayFilter, arrayRange
npas
uses internal.collections;

var lista: Object;

begin
    lista := createArray();
    WriteLn("Vazio? ", arrayIsEmpty(lista));
    WriteLn("Tamanho: ", arraySize(lista));
end.
Saída
 Vazio? true Tamanho: 0 

Native Arrays

Für die meisten Fälle reichen die nativen Arrays der Sprache ([10, 20, 30], Index a[0], for x in a do) bereits aus. Siehe Arrays. Die Bibliothek internal.collections ergänzt sie um benannte Hilfsfunktionen.

Bibliotheken kombinieren

Nichts hindert Sie daran, mehrere Bibliotheken auf einmal zu laden und frei zu kombinieren:

npas
uses internal.string, internal.math;

begin
    WriteLn(quote(intToStr(square(8))));
end.
Saída
 "64" 

Stellen Sie als Nächstes die Qualität Ihres Codes mit Unit-Tests sicher.