Zahlenwerte sauber formatiert ausgeben

Für Fragen von Einsteigern und Programmieranfängern...
PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Zahlenwerte sauber formatiert ausgeben

Beitrag von PascalDragon »

Winni hat geschrieben:
Di 17. Mai 2022, 10:15
Monotype Font verwenden und schon sind alle Zeichen gleich breit. Dann geht's auch mit str.
:roll: Das ist nicht der Punkt.
FPC Compiler Entwickler

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Zahlenwerte sauber formatiert ausgeben

Beitrag von Winni »

Hi!

Doch, das ist der Punkt.

Wenn man str benutzt, kann man sich die sinnlose Zeit mit dem Lesen der Docs des MessageComposers oder von format sparen.

Eine Listbox nehmen, den Font auf irgendetwas monotypiges einstellen (Courier, Liberation Mono, ...) und das Thema ist erledigt.

Ich hab nie verstanden, warum die grundlegenden Pascal Funktionen wie str durch kompliziertere Routinen, die weniger können (format, floatToStr, ..) ersetzt worden sind.

Winni

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Zahlenwerte sauber formatiert ausgeben

Beitrag von wp_xyz »

Niesi hat geschrieben:
Di 17. Mai 2022, 00:51
Ich programmiere mit Pascal, weil das eine sehr gut lesbare, sehr gut verständliche und logisch aufgebaute Programmiersprache ist. Zumindest fast immer. Format gehört nach meiner Meinung zu den sehr unglücklich gestalteten Funktionen. Und: mit Str erreiche ich mein Ziel, die Ergebnisse sauber anzuzeigen, auf eine sehr einfache, logisch nachvollziehbare Art und Weise.
Ehrlich gesagt, die Symbole in "str(x:10:3, s)" sind genauso mysteriös wie die in "s := Format('%10.3f', [x])", wenn man's nicht weiß.
Niesi hat geschrieben:
Di 17. Mai 2022, 00:51
Ich würde gern verstehen, warum die Funktionen IntToStr und FloatToStr - trotz interner Verwendung von Str - das nicht bringen. Aber das ist wohl unklar ...
Weil die str() so aufrufen, dass keine Leerzeichen vorangestellt werden. Es sieht einfach falsch aus, wenn in dem String

Code: Alles auswählen

'Die Temperatur beträgt heute ' + IntToStr(Temperatur) + '°C'
bei positiven Temperaturen zwischen "heute" und der Zahl zwei Leerzeichen stehen, bloß weil die Funktion IntToStr nach deiner Vorgabe für negative Werte den Platz für das Vorzeichen vorhalten müsste. Und dagegen hilft auch kein Monotype-Font.

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 332
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1

Re: Zahlenwerte sauber formatiert ausgeben

Beitrag von Niesi »

Ich würde in dem Fall einfach ein Plus mit ausgeben. Wieso das Minus so bevorzugen?

Dann geht das ...
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 332
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1

Re: Zahlenwerte sauber formatiert ausgeben

Beitrag von Niesi »

Winni hat geschrieben:
Di 17. Mai 2022, 15:06
Hi!

Doch, das ist der Punkt.

Wenn man str benutzt, kann man sich die sinnlose Zeit mit dem Lesen der Docs des MessageComposers oder von format sparen.

Eine Listbox nehmen, den Font auf irgendetwas monotypiges einstellen (Courier, Liberation Mono, ...) und das Thema ist erledigt.

Ich hab nie verstanden, warum die grundlegenden Pascal Funktionen wie str durch kompliziertere Routinen, die weniger können (format, floatToStr, ..) ersetzt worden sind.

Winni
Sie sind ja nicht ersetzt worden, sie sind glücklicherweise noch da ...
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Zahlenwerte sauber formatiert ausgeben

Beitrag von Mathias »

Winni hat geschrieben:
Di 17. Mai 2022, 15:06
Hi!

Doch, das ist der Punkt.

Wenn man str benutzt, kann man sich die sinnlose Zeit mit dem Lesen der Docs des MessageComposers oder von format sparen.

Eine Listbox nehmen, den Font auf irgendetwas monotypiges einstellen (Courier, Liberation Mono, ...) und das Thema ist erledigt.

Ich hab nie verstanden, warum die grundlegenden Pascal Funktionen wie str durch kompliziertere Routinen, die weniger können (format, floatToStr, ..) ersetzt worden sind.

Winni
Weil ihr Deutschen und Österreicher in der Office Welt lieber ein Komma anstelle des Punktes als Dezimaltrenner habt, mussten so komplizierte Funktionen her. Str() und Val() arbeiten nur mit dem Computerfreundlichen Punkt.
Da verstehe ich die Office-Welt nicht, wieso da die so Computerfeindliche Sachen durchwürgen müssen. Noch schlimmer mit dem 1000er Trenner, das hat die EU perfekt hingekriegt, da wird sogar Punkt als Trenner missbraucht.
10.000 € kann man sehr gut mit 10€ verwechseln.
Bei 10'000 wie wir es in der CH verwenden gibt es kaum eine Verwechslung.
Als was ist leserlicher 10.000,00 oder 10'100.00 ?
Un dann kommt noch dazu, wen man nicht mehr so gut sieht, verwechselt man ein Komma gut mit einem Punkt. Aber ein Hochkomma nicht.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Zahlenwerte sauber formatiert ausgeben

Beitrag von af0815 »

Nur sind diese Trenner wesentlich älter als die ganzen Computer. Und warum sollen wir diese Anglizismen annehmen :D :shock: :mrgreen:

DIe Antwort die ich bisher dazu bekommen habe -> Das ist Delphicompatibel. :oops: :twisted:

BTW: Dem Programm ist das Dezimalzeichen wurscht - nur die Darstellungsschicht benötigt es in beiden Richtungen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Zahlenwerte sauber formatiert ausgeben

Beitrag von Winni »

Hi!

Wir werden täglich mit übelsten Anglizismen vollgequatscht. Z.b. "In 2022" - das ist falsches Deutsch - in der Tagesschau. Würg.

Da kann es doch nicht das Problem sein sich mal an den Punkt als Dezimal-Trenner zu gewöhnen.

Und als Tausender-Trenner benutze ich seit Jahrzehnten das Leerzeichen. Das ist international verständlich.

Winni

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Zahlenwerte sauber formatiert ausgeben

Beitrag von wp_xyz »

Mathias hat geschrieben:
Di 17. Mai 2022, 17:21
Weil ihr Deutschen und Österreicher in der Office Welt lieber ein Komma anstelle des Punktes als Dezimaltrenner habt, ...
Winni hat geschrieben:
Di 17. Mai 2022, 17:32
Da kann es doch nicht das Problem sein sich mal an den Punkt als Dezimal-Trenner zu gewöhnen
Nach diesem Lieblingsthema kommt als nächstes eine Neuauflage der Windows-gegen-Linux-Keilerei?
Niesi hat geschrieben:
Di 17. Mai 2022, 16:43
Ich würde in dem Fall einfach ein Plus mit ausgeben. Wieso das Minus so bevorzugen?
Ich geb zu, das Beispiel war nicht so toll, weil die Luft-Temperatur negativ sein kann. Aber schon bei der Körpertemperatur sieht dein Vorschlag seltsam aus: "Fieber: +39°"...
Oder aus der Computerei: "Freier Speicher: +313 GB" (gibt es eine negative Speicherkapazität? Vielleicht für "negative Logik", in der 0 und 1 vertauscht sind?)

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Zahlenwerte sauber formatiert ausgeben

Beitrag von Winni »

Hi!

Nix Keilerei. Für mich war die Lokalisierung seinezeit in Delphi schon ein großer Blödsinn. Und dann noch pfuschig implementiert.

Wer sich mit dem Komma rumquälen will darf das gerne tun. Ich hab schon in den 80ern den Punkt bevorzugt.

Negatives Speichervolumen hab ich immerhin schon einmal gesehen. Nachdem ich nach mehreren Anläufen fdisk überzeugt habe, die Geometrie einer sterbenden Platte anzuzeigen. Da gabs negative bytes. Kurz danach war sie Elektroschrott.

Winni

PS : Mit dem Vorzeichen geht das so:

Code: Alles auswählen

const Vorzeichen : array[boolean] of string = ('-','+');
var f : single;
    s : string;
begin
 f := -1.23;
 str(abs(f),s);
 s := Vorzeichen [f>=0] + s;
 showMessage (s);
end;                             

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 332
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1

Re: Zahlenwerte sauber formatiert ausgeben

Beitrag von Niesi »

wp_xyz hat geschrieben:
Di 17. Mai 2022, 19:07
Ich geb zu, das Beispiel war nicht so toll, weil die Luft-Temperatur negativ sein kann. Aber schon bei der Körpertemperatur sieht dein Vorschlag seltsam aus: "Fieber: +39°"...
Oder aus der Computerei: "Freier Speicher: +313 GB" (gibt es eine negative Speicherkapazität? Vielleicht für "negative Logik", in der 0 und 1 vertauscht sind?)
Das Beispiel ist schon in Ordnung, mir fiel das mit dem Plus nur sehr spontn ein.
af0815 hat geschrieben:
Di 17. Mai 2022, 17:26
Nur sind diese Trenner wesentlich älter als die ganzen Computer. Und warum sollen wir diese Anglizismen annehmen :D :shock: :mrgreen:

DIe Antwort die ich bisher dazu bekommen habe -> Das ist Delphicompatibel. :oops: :twisted:

BTW: Dem Programm ist das Dezimalzeichen wurscht - nur die Darstellungsschicht benötigt es in beiden Richtungen.
Wenn es kompatibel zu Delphi gemacht wurde, dann ist das ausreichend als Begründung.

Da war damals wohl sehr viel "Begeisterung" für alles Machbare, als wirklich jeder Unsinn wie zum Beispiel das Komma und der Punkt nach deutschen Schreibregeln eingeführt wurden. Was da tagtäglich an Kosten und Programmieraufwand verursacht wird, das ist einfach irre ...
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: Zahlenwerte sauber formatiert ausgeben

Beitrag von six1 »

Nun ja, wenn es bei uns das Komma ist, dann ist es doch völlig richtig, dies zu verwenden.

Andernfalls müsste man konsequenter Weise jede andere Sprache als Englisch als Ketzerei bezeichnen :lol:
Gruß, Michael

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 332
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1

Re: Zahlenwerte sauber formatiert ausgeben

Beitrag von Niesi »

Das Komma ist meines Wissens in jeder Sprache ein Komma. :mrgreen:

Und im Sinne der Standardisierung und der Vernunft wäre es besser, in Software ausschließlich einen Dezimalseparator zu verwenden. :roll:

Das würde unheimlich Kosten reduzieren ... :idea:
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: Zahlenwerte sauber formatiert ausgeben

Beitrag von six1 »

dann frage ich dich, wer auf die schwachsinnige Idee kam, den Punkt als Standard festzulegen, wenn es (bei uns) ein Komma ist? :lol:
Das führt zu nichts; ich habe auch schon oft mit dem Punkt und dem Komma Kämpfe ausgetragen bei Verwendung meiner Software im "Ausland"...
Man muss es eben hinnehmen, dass es die meisten in der Welt verkehrt machen und einen Punkt verwenden :lol: :lol: :lol:

(Du merkst, ich nehme das Thema nicht so ganz ernst, weil ich so und so nichts am Problem ändern kann)
Gruß, Michael

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Zahlenwerte sauber formatiert ausgeben

Beitrag von af0815 »

six1 hat geschrieben:
Mi 18. Mai 2022, 07:40
dann frage ich dich, wer auf die schwachsinnige Idee kam, den Punkt als Standard festzulegen, wenn es (bei uns) ein Komma ist? :lol:
Das ist dasselbe wie zwischen mm und Zoll, und den Ansichten auf technischen Zeichnungen. :mrgreen: Sei froh das wir nicht mehr in Ellen, Klafter und Fuß rechnen dürfen :D Unser Problem ist eher das das in anderen Ländern so nebensächlich gesehen wird, das die dafür keine Vernünftigen Lösungen gebracht haben und die was sie gebracht haben eher als Krücken bezeichnet werden können. Egal ob in Zahlen oder zeichenketten - halbgare Sachen wie man sieht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten