AGB  ·  Datenschutz  ·  Impressum  







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

BooleanToString und StringToBoolean

Ein Thema von Go2EITS · begonnen am 28. Jun 2006 · letzter Beitrag vom 28. Jun 2006
Antwort Antwort
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#1

BooleanToString und StringToBoolean

  Alt 28. Jun 2006, 17:03
Hallo DP,

ich habe mal zur Diskussion zwei Routinen, die ich hier mal reinstelle.

Delphi-Quellcode:
//Boolean2String
Function B2S(B:Boolean):String;
begin
if B=True then Result:='TRUEelse Result:='FALSE'
end;

//StringToBoolean: S muss 'TRUE' oder 'FALSE' sein!
Function S2B(S:String):BOOLEAN;
begin
if STRUPPER(PCHAR(S))='TRUEthen Result:=TRUE else Result:=FALSE;
end;
Es wird hier ein Boolean übergeben; es wird ein entsprechender String zurückgegeben.
Function B2S(B:Boolean):String;

Hier wird ein String übergegen; man bekommt ein Boolean zurück.
Function S2B(S:String):BOOLEAN;

Gerade letzte Routine birgt Gefahren: Leerer String, nicht getrimmter String etc.

Wie würdet es Ihr es elegant und sicher lösen? Bin gespannt...

Go2EITS
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: BooleanToString und StringToBoolean

  Alt 28. Jun 2006, 17:07
Hi,

Ich verwende dafür gewöhnlich die Borland-Funktionen Delphi-Referenz durchsuchenStrToBool und Delphi-Referenz durchsuchenBoolToStr. Letztere hat auch noch ein paar Optionsmöglichkeiten, aber bei mir haben beide immer zuverlässig funktioniert.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: BooleanToString und StringToBoolean

  Alt 28. Jun 2006, 17:08
Delphi-Quellcode:
function B2S(B: Boolean): String;
begin
 case B of
  true : Result := 'TRUE';
  false: Result := 'FALSE';
 end;
end;

fucntion S2B(S: String): Boolean;
begin
 Result := false; // falls mist übergeben wird dann false
 if UpperCase(S) = 'TRUEthen Result := true;
 if UpperCase(S) = 'FALSEthen Result := false;
end;
So ungefähr mach ich es immer. Die müssten eigentlich beide ohne Probleme funktionieren
EDIT: Obwohl man sich die zweite if-Zeile auch sparen kann...

Gruß
Neutral General
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#4

Re: BooleanToString und StringToBoolean

  Alt 28. Jun 2006, 17:09
Ich hätte es so gemacht:

Delphi-Quellcode:
Function S2B(S:String):BOOLEAN;
begin
if STRUPPER(PCHAR(S)) = 'TRUEthen
Result := TRUE
else if STRUPPER(PCHAR(S)) = 'FALSEthen
Result := FALSE else
{ Fehlerroutine }
end;
Aber warum erstellst du die Funktionen, die gibt's doch schon!?
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
pszopp

Registriert seit: 7. Sep 2005
Ort: Alsdorf
95 Beiträge
 
Delphi 2010 Professional
 
#5

Re: BooleanToString und StringToBoolean

  Alt 28. Jun 2006, 17:10
Hallo,

B=True sollte man nicht schreiben.

if B then Result:='TRUEelse Result:='FALSE'; reicht völlig.

So würde ich die andere Funktion realisieren:
Delphi-Quellcode:
//StringToBoolean: S muss 'TRUE' oder 'FALSE' sein!
Function S2B(Const S:String):BOOLEAN;
begin
  Result := SameText('true', S);
end;

Viele Grüße,
pszopp
www.pstipp.de | Tippseite zur Formel 1 und Fußball WM/EM - kostenlos und Just-For-Fun
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: BooleanToString und StringToBoolean

  Alt 28. Jun 2006, 17:15
Ok, ich will dann auch :

Delphi-Quellcode:
Function BoolToString(Const ABool: Boolean): String;
Const
  coBoolValues : Array[Boolean] of String = ( 'false', 'true' );
Begin
  Result := coBoolValues[ABool];
End;

Function StringToBool(Const AString: String): Boolean;
Begin
  Result := AnsiSameText(AString, 'true');
End;
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#7

Re: BooleanToString und StringToBoolean

  Alt 28. Jun 2006, 17:20
um Muetzes Vorschlag noch zusätzlich abzusichern dann so:

Delphi-Quellcode:
function BoolToString(const ABool: Boolean): String;
const
  coBoolValues : Array[Boolean] of String = ( 'false', 'true' );
begin
  Result := coBoolValues[ABool <> False];
end;
Ein Boolean ist ein Byte und manchesmal trifft man auf Programierer die per harten Cast Boolean := Boolean(3) benutzen. Das würde dann mit Muetzes Funktion eine AV beim Array Zugriff auslösen. Mit obiger Erweiterung macht man es Bulletproof.

Gruß Hagen
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#8

Re: BooleanToString und StringToBoolean

  Alt 28. Jun 2006, 17:43
@mirage228 Uhiii peinlich, ich wusste nicht, dass es StrToBool und BoolToStr gibt. Ich hatte nach BooleanToString und StringToBoolean bzw. BooleanToStr und StrToString hier in der DP und Torry gesucht.

@Neutral General
Dein
Delphi-Quellcode:
function B2S(B: Boolean): String;
begin
case B of
  true : Result := 'TRUE';
  false: Result := 'FALSE';
end;
end;

fucntion S2B(S: String): Boolean;
begin
Result := false; // falls mist übergeben wird dann false
if UpperCase(S) = 'TRUEthen Result := true;
if UpperCase(S) = 'FALSEthen Result := false;
end;
gefällt mir sehr gut in Ergänzung mit @Vales Lösung der Fehlerbehandlung.

@pszopp, auch gut!

Alles super Lösungen, die ich sofort durchschaut habe.

Die Lösungen von Muetze1 und Hagen sind schon anspruchsvoller: Hier muss ich schon genau
schauen, wie es funktioniert. AnsiSametext und SameText sind mir neu, und vielleicht auch anderen Usern.

Und Hagen macht den Mutze1 Code noch fehlersicher.

Herzlichen Dank an Euch. Ich habe heute viel dazugelernt!!!!

Cu!
Go2EITS
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz