![]() |
Besserer und einfacherer Format-Befehl (OpenSource)
Ich habe mir mal die Mühe gemacht eine Lib zu entwickeln, welche der String-Interpolation schon recht nahe kommt:
Delphi-Quellcode:
Die Variablen werden automatisch erkannt und konvertiert (automatischer Typrückschluß via Generics), so ist es nicht erforderlich IntToStr, FloatToStrF usw zu verwenden.
NetFormat.ToString('Hello, {0}! Today is {1:ddd}, it's {1:HH:mm} now.', name, date);
// Hello, Mark! Today is Wednesday, it's 19:40 now. Hier nochmal eine Kurzerklärung zum Format. grundsätzlich orientieren sich die Spezifizierer für das Format an .Net. Deshalb weicht das Datumsformat etwas, der Rest deutlicher ab. Ich halte das aber für intuitiver als die sprintf-Konvention die Delphi übernommen hat:
Delphi-Quellcode:
Hier das Repo/Download hierzu:
// Integer werden automatisch als Fließkomma und Fließkomma als Integer formatiert, sofern erforderlich.
// C für Währung (Zahl gibt Nachkomma an) // D für Ganzzahl (Zahl gibt führende Nullen an) // F für Fließkomma (Zahl gibt Nachkomma an) // // Datum kann: // dd = Tag, MM=Monat, yyyy=Jahr // HH=Stunde, mm=Minute, ss=Sekunde // es gibt weitere Möglichkeiten Siehe readme. ![]() Ich habe außerdem auf meine Webseite einen Artikel verfasst, wie es funktioniert und wie es aufgebaut ist: ![]() Die readme ist im Projekt: ![]() Ich freue mich über eure Rückmeldungen, und vielleicht hilft es ja dem einen oder anderen weiter :-) |
AW: Besserer Format-Befehl
Und noch eine Neuigkeit heute:
Ich hab gleich mal die Version 2.0 Released: ALt:
Delphi-Quellcode:
Neu:
NetFormat.ToString('Hallo {0} {1:D4} {2} {3}',
'Welt', 55, 7.7, testdate);
Delphi-Quellcode:
Das neue Format ist eleganter und auch ein wenig kürzer. Es handelt sich um eine Record-Erzeugung durch einen überladenen Explizit-Operator. Hinten dran dann die Parameter als Methode.
TStr('Hallo {0} {1:D4} {2} {3}').
Params('Welt', 55, 7.7, testdate); Readme: ![]() Webseite: ![]() Code: ![]() Download: ![]() |
AW: Besserer Format-Befehl
Moin, ich habe das Thema verschoben und bereinigt.
|
AW: Besserer und einfacherer Format-Befehl (OpenSource)
Wenn GetIt wieder funktioniert, könntest du's auch dadrüber publizieren.
Ist gar nicht schwer... |
AW: Besserer und einfacherer Format-Befehl (OpenSource)
Ja, werde ich mir mal anschauen.
Ich habe noch eine neue Version, aufgrund von Tipps aus dem englischen Forum erstellt. Dabei ist mir aufgefallen, das ich nicht zuverlässig nil mit generischen Typen erkennen kann. Ich habe bereits folgendes getestet:
Delphi-Quellcode:
### 28.01.2024: Version 3.0
default(T) == nil //kompiliert nicht
T(nil) == nil //kompiliert nicht PPointer(@val1)^ <> nil // funktioniert, aber nicht mit DunitX, bei float ist der Pointer nil //in Moment verwende ich folgenden Workaround: GetTypekind(T) == tkPointer //...würde aber auch Pointer ausschließen, und ist auch nicht "sauber". Aber in Moment ist 'nil' das einzige was darauf anspricht, da ich Pointer nicht unterstütze. - Old:
Delphi-Quellcode:
- New: TStr -> FStr, and old Format readded, beause some People wants a more
TStr('Hallo {0} {1:D4} {2} {3}').
Params('Welt', 55, 7.7, testdate); Delphi-Format like command:
Delphi-Quellcode:
- Namespace VTools added to avoid conficts
FStr('Hallo {0} {1:D4} {2} {3}').
Params('Welt', 55, 7.7, testdate); TNetFormat.TStr('Hallo {0} {1:D4} {2} {3}', 'Welt', 55, 7.7, testdate); - Hex-Format added ("X") - TFormatStettings Support - Tests added - 'writeln' to Example added, to also have an console output - some minors changes to README Readme: ![]() Code: ![]() Download: ![]() Webseite: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz