Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Überprüfen, ob ein String auch ein anderer Datentyp sein kan (https://www.delphipraxis.net/69768-ueberpruefen-ob-ein-string-auch-ein-anderer-datentyp-sein-kan.html)

xZise 19. Mai 2006 18:08


Überprüfen, ob ein String auch ein anderer Datentyp sein kan
 
Ich habe einen String (z.B. "123,45") und möchte jetzt gucken, ob es ein anderer Datentyp sein kann.
Delphi-Quellcode:
if isFloat(myString) then begin
  if isInt(myString) then
    Showmessage('Ist ein Integer')
  else
    Showmessage('Ist eine Fließkommazahl');
end else
  Showmessage('Dieser String ist kein Integer, und keine Fließkommazahl!');
Funktioniert das so? Und ich möchte auch try-except UMGEHEN.

Klaus01 19. Mai 2006 18:56

Re: Überprüfen, ob ein String auch ein anderer Datentyp sein
 
Vielleicht ist val das was Du suchst?

Aus der Hilfe:
Zitat:


Converts a string to a numeric representation.

Unit

System

Category

string handling routines

procedure Val(S; var V; var Code: Integer);

Description

Val converts the string value S to its numeric representation, as if it were read from a text file with Read.

S is a string-type expression; it must be a sequence of characters that form a signed real number.

V is an integer-type or real-type variable. If V is an integer-type variable, S must form a whole number.

Code is a variable of type Integer.

If the string is invalid, the index of the offending character is stored in Code; otherwise, Code is set to zero. For a null-terminated string, the error position returned in Code is one larger than the actual zero-based index of the character in error.

Val performs range checking differently depending upon the setting of the $R compiler directive and the type of the parameter V.

Setting Result

{$R+} An out-of-range value always generates a run-time error.
{$R-} The values for out-of-range vary depending upon the data type of V.

Grüße
Klaus

mkinzler 19. Mai 2006 19:01

Re: Überprüfen, ob ein String auch ein anderer Datentyp sein
 
TryStrToInt() bzw. TryStrToFloat(). Beide Funktionen geben True zurück wenns funktioniert hat.

Hawkeye219 19. Mai 2006 19:04

Re: Überprüfen, ob ein String auch ein anderer Datentyp sein
 
Hier ein Vorschlag:

Delphi-Quellcode:
var
  lDummyInt : Int64;
  lDummyReal : Extended;
begin
  if TryStrToInt64(myString, lDummyInt) then
    Showmessage('Ist ein Integer')
  else
    if TryStrToFloat(myString, lDummyReal) then
      Showmessage('Ist eine Fließkommazahl')
    else
      Showmessage('Dieser String ist kein Integer, und keine Fließkommazahl!');
end;
Gruß Hawkeye

//Edit: mkinzler war schneller, ich poste es trotzdem wegen der Reihenfolge :wink:

xZise 19. Mai 2006 19:19

Re: Überprüfen, ob ein String auch ein anderer Datentyp sein
 
Danke erstmal dafür...

(Eigentlich dachte ich auch an Bool, Date & Time, aber die gibts auch)

Aber eine frage zu (Try)StrToBool:
Was will Bool als Parameter:
true/false
0/1
o.ä.?

Hawkeye219 19. Mai 2006 19:24

Re: Überprüfen, ob ein String auch ein anderer Datentyp sein
 
Du hast schon fast alles aufgezählt :smile:

Numerische Werte <> 0 werden als True interpretiert, Werte = 0 als False. Bei nicht-numerischen Werten erfolgt ein Vergleich mit Delphi-Referenz durchsuchenTrueBoolStrs und Delphi-Referenz durchsuchenFalseBoolStrs.

Gruß Hawkeye

marabu 19. Mai 2006 19:27

Re: Überprüfen, ob ein String auch ein anderer Datentyp sein
 
Hi.

Du kannst die globalen Variablen TrueBoolStrs und FalseBoolStrs (SysUtils) nach deinen Vorstellungen initialisieren.

Grüße vom marabu

// Sorry Hawkeye, aber weil hier immer so lustige Beschwörungsformeln stehen, wie Argh, roter Kasten, wo warst du?, hier mal meine Sicht: In einem so rasanten Forum wie der DP ist es fast schon normal, dass zwischen dem Lesen eines Beitrages und dem Entschluss darauf zu posten ein oder mehrere andere Beiträge eingegangen sind. Diese Beiträge werden zumindest von mir in der Regel erst wahrgenommen, wenn ich meinen eigenen Beitrag abgesendet habe. Der rote Kasten ist ja ganz lustig, aber kennzeichnet nur den Sonderfall, dass zwischen Vorschau und Posten Änderungen am thread statt fanden.

PS: Erschwerend kommt noch hinzu, dass zumindest ich beim Lesen mehrerer Beiträge stets über die History zurückgehe...

xZise 19. Mai 2006 19:28

Re: Überprüfen, ob ein String auch ein anderer Datentyp sein
 
Achso der ist sozusagen anpassend ;) Wusste ich nicht :D

Danke an alle (besonders Hawkeye und mkinzler)

@ Klaus: Ich denke nicht, da ich dann immer auhc eine Variable bräuchte ^^

xZise 20. Mai 2006 19:52

Re: Überprüfen, ob ein String auch ein anderer Datentyp sein
 
So... TryStrToBool(...) erkennt nicht die 0!

Hawkeye219 20. Mai 2006 20:08

Re: Überprüfen, ob ein String auch ein anderer Datentyp sein
 
Zitat:

Zitat von xZise
So... TryStrToBool(...) erkennt nicht die 0!

Das kann ich nicht bestätigen. Bei Integer-Werte gibt es keine Probleme, bei Real-Werten mußt du natürlich die Ländereinstellungen beachten, d.h. bei einem deutschen Windows wird ein Dezimalkomma erwartet.

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 Uhr.
Seite 1 von 2  1 2      

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