AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Variablen in Stringliteral inlinen

Ein Thema von QuickAndDirty · begonnen am 5. Feb 2020 · letzter Beitrag vom 11. Feb 2020
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.720 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: Variablen in Stringliteral inlinen

  Alt 7. Feb 2020, 15:30
Texte mit Formatierungen aus anderen Quellen sind immer nett, wenn das Programm plötzlich verreckt.
(Übersetzung/Datenbank wo Texte durch user bearbeitet oder über eine Synchronisierung/Update nachgeladen werden)

Drum hab ich bei uns das Format überschrieben/überdeckt.
Der Code muß nur in eine Unit die immer nach den SysUtils eingebunden wird.

Wenigstens "etwas" anzeigen und das Programm nicht abkratzen lassen.
Wir gehen bei unseren Programmen noch einen Schritt weiter und installieren einen Hook für die Format-Funktion. Das passiert in einer Unit, die automatisch in allen unseren Programmen eingebunden wir. Dann wird sowas auch für fremden Code abgefangen. Und man kann man muss auch nicht daran denken, überall eine solche Unit einzubinden.

Am meisten nervt mich aber, dass man den Datentyp überhaupt angeben muss. Write kann den ja auch automatisch erkennen, warum gibt es bei Format nicht sowas wie einen generischen Platzhalter:

Format('Der Wert ist %g', [IrgendeineVariable]);

Die Format-Funktion weiss ja, welcher Datentyp übergeben wurde, denn eigentlich ist das ja ein Variant mit entsprechenden Informationen. Den kann man dann halt nach String konvertieren. Für viele Anwendungen würde das ausreichen.

Aber das Thema war ja ein anderes ...
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Variablen in Stringliteral inlinen

  Alt 7. Feb 2020, 15:44
Und woher soll write wissen, wie viele Nachkommastellen du willst? Wie viele führende Nullen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Poelser

Registriert seit: 21. Apr 2008
Ort: Europa
145 Beiträge
 
Delphi 10.4 Sydney
 
#3

AbarW: Variablen in Stringliteral inlinen

  Alt 7. Feb 2020, 16:07
Moin,

da wäre so etwas wie die Systemeinstellungen für das Datumsformat denkbar. Wenn der Entwickler das anders haben will, dann könnte er die Formatanweisungen wie bisher benutzen.

Bis denne,
Edmund
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.720 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Variablen in Stringliteral inlinen

  Alt 10. Feb 2020, 13:10
Und woher soll write wissen, wie viele Nachkommastellen du willst? Wie viele führende Nullen?
Wenn man das explizit braucht, verwendet man halt %f statt %g. Und ansonsten funktionert %g bei Floats halt wie %f, auch da nimmt Format ja defaults.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.049 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Variablen in Stringliteral inlinen

  Alt 7. Feb 2020, 16:39
Die Format-Funktion weiss ja, welcher Datentyp übergeben wurde, denn eigentlich ist das ja ein Variant mit entsprechenden Informationen.
Falsch! Es ist ein TVarRec - und die haben ebend nicht genügend Informationen über den Typen.

Hab erst gestern geschaut, ob man Format so umbauen könnte wie string.Format in .NET, die dort übergebenen Parameter sind alle object und haben somit die exakten Typeninformationen dabei.
Mit SysUtils.Format kann ich nichtmal Datum oder Zeit allein über den Formatstring ausgeben

Und woher soll write wissen, wie viele Nachkommastellen du willst? Wie viele führende Nullen?
Indem man es angibt - das erfordert aber nicht die grundsätzliche Angabe des Typens - siehe string.Format

Übrigens solltet ihr nicht Write und Format verwechseln, die funktionieren unterschiedlich.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie ( 7. Feb 2020 um 16:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Variablen in Stringliteral inlinen

  Alt 7. Feb 2020, 17:20
Ich meine natürlich Format. Sorry.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.091 Beiträge
 
Delphi 12 Athens
 
#7

AW: Variablen in Stringliteral inlinen

  Alt 7. Feb 2020, 18:28
Übrigens solltet ihr nicht Write und Format verwechseln, die funktionieren unterschiedlich.
Jaaa...
Write nutzt Compiler Magic.
Das war zu Turbo Pascal Zeiten eine der häufigsten Fragen in den Newsgroups:
"Wie kann ich eine Funktion oder Prozedure schreiben die wie Write eine variable ANzahl Parameter übergeben bekommt?"

Antwort:
"Geht nicht. Write ist Compiler Magic"

Grüße

TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.720 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Variablen in Stringliteral inlinen

  Alt 10. Feb 2020, 13:13
Die Format-Funktion weiss ja, welcher Datentyp übergeben wurde, denn eigentlich ist das ja ein Variant mit entsprechenden Informationen.
Falsch! Es ist ein TVarRec - und die haben ebend nicht genügend Informationen über den Typen.
Doch, zumindest zu den Variablen, die Format standardmäßig unterstützt. Bei anderen hat man sowieso ein Problem.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.049 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: Variablen in Stringliteral inlinen

  Alt 10. Feb 2020, 23:13
Doch, zumindest zu den Variablen, die Format standardmäßig unterstützt. Bei anderen hat man sowieso ein Problem.
TVarRec kennt nur 32 und 64bit Integer mit Vorzeichen und kennt kein TDateTime - Float nur als Extended oder Currency (da wär ja sogar Variant besser -.-)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.481 Beiträge
 
Delphi 12 Athens
 
#10

AW: Variablen in Stringliteral inlinen

  Alt 11. Feb 2020, 10:38
Und Variant kann man sogar nativ um neue Typen erweitern. (Delphi hat z.B. seine AnsiString und UnicodeString dort reingepackt)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 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-2025 by Thomas Breitkreuz