AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Boolean.ToString geht nicht?!

Ein Thema von Rolf Frei · begonnen am 12. Mär 2024 · letzter Beitrag vom 12. Mär 2024
Antwort Antwort
Seite 1 von 2  1 2      
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
497 Beiträge
 
Delphi 12 Athens
 
#1

AW: Boolean.ToString geht nicht?!

  Alt 12. Mär 2024, 13:52
Was funktioniert ist:
 s := b.ToString(TUseBoolStrs.True); hier wird im class helper nicht richtige Funktion verwendet. (zumindest in meinen Beispiel)
True <> TUseBoolStrs.True
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
655 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Boolean.ToString geht nicht?!

  Alt 12. Mär 2024, 14:15
Ja das mit dem TUseBoolStrs.True habe ich unterdessen auch rausgefunden. Bool.ToString(TUseBoolStrs.True) liefert "True", Bool.ToString(True) liefert "-1".

Hat da wer eine plausible Erklärung für dieses Verhalten und wieso man da unbedingt TUseBoolStrs.True nutzen muss?
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.204 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Boolean.ToString geht nicht?!

  Alt 12. Mär 2024, 14:18
Das siehst du doch eigentlich direkt auf den ersten Blick:
Screenshot 2024-03-12 151747.png
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.013 Beiträge
 
Delphi 12 Athens
 
#4

AW: Boolean.ToString geht nicht?!

  Alt 12. Mär 2024, 14:21
entfernt - habe mich geirrt
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.715 Beiträge
 
Delphi 12 Athens
 
#5

AW: Boolean.ToString geht nicht?!

  Alt 12. Mär 2024, 14:34
Hat da wer eine plausible Erklärung für dieses Verhalten und wieso man da unbedingt TUseBoolStrs.True nutzen muss?
Na ja, in einem Fall wird halt die class function aufgerufen, deren erster Parameter der umzuwandelnde Boolean ist. Der optionale zweite Parameter gibt dann die Darstellung an.

Bei der regulären function gibt es nur den optionalen Parameter für die Darstellung.

Problematisch ist hier die Kombination von Overloads und optionalen Parametern gepaart mit der Kollision des zu bearbeitenden Typs (Boolean) und dem erwarteten Parameter für die Darstellung (ebenfalls Boolean). Diese Kollision wurde mit dem neuen Typ TUseBoolStrs umgangen. Leider passt das nicht mehr zur Erwartungshaltung des Entwicklers.

Es gibt aber auch Meinungen, dass ein Aufruf einer class function nur über die Angabe des Typs und nicht einer Variablen des Typs gehen dürfte. Ich fürchte nur, dass eine solche Einschränkungen eine Menge Code nicht mehr compilieren ließe.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
655 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Boolean.ToString geht nicht?!

  Alt 12. Mär 2024, 14:47
Ok danke für die Erläuterung. Wenn ich da als Anwender den Defaultwert False in der Parmaterliste sehe, komme ich nicht dirket auf die Idee, da TUseBoolStrs.True zu verwenden. Wäre dort der Defaultwert mit TUseBoolStrs.False angezeigt worden, wäre es wohl deutlich klarer gewesen.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.204 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Boolean.ToString geht nicht?!

  Alt 12. Mär 2024, 14:52
Wäre dort der Defaultwert mit TUseBoolStrs.False angezeigt worden, wäre es wohl deutlich klarer gewesen.
Das stimmt allerdings.

Hätten wir einen funktionierenden Bugtracker oder Feedback-System bei Embarcadero, könnte man das sogar dort einreichen.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.715 Beiträge
 
Delphi 12 Athens
 
#8

AW: Boolean.ToString geht nicht?!

  Alt 12. Mär 2024, 15:33
Hätten wir einen funktionierenden Bugtracker oder Feedback-System bei Embarcadero, könnte man das sogar dort einreichen.
Man arbeitet daran...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Boolean.ToString geht nicht?!

  Alt 12. Mär 2024, 15:35
Ja, leider ist dieses ToString etwas pervers
und nicht mit BoolToStr vergleichbar.

Im Boolean-Helper gibt es auch zwei Versionen,
also einmal von der Variable aus
und dann nochmal als Class-Funktion.

Und das Gewollte bekommst du nur von der normalen Funktion, in Verbindung mit diesem TUseBoolStrs,
sonst springt es auf die Class-Function, bei deinem True,
wo die Lösung dann Boolean.ToString(b, TUseBoolStrs.True) wäre, oder eben b.ToString(TUseBoolStrs.True)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Mär 2024 um 15:37 Uhr)
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
482 Beiträge
 
#10

AW: Boolean.ToString geht nicht?!

  Alt 12. Mär 2024, 17:07
Hat da wer eine plausible Erklärung für dieses Verhalten und wieso man da unbedingt TUseBoolStrs.True nutzen muss?
Von höchster Stelle.

Bis bald...
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:13 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