Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String->Zahl->vergleichen - wie ? (https://www.delphipraxis.net/11126-string-zahl-vergleichen-wie.html)

mfg 31. Okt 2003 13:42


String->Zahl->vergleichen - wie ?
 
Huhu,

der mega-nubi is wieder da:

Diesmal möchte ich eine Zahl die in einem String ist, in eine Zahl umwandeln um Sie mit einer anderen Zahl zu vergleichen. Mit STRtoINT() komme ich da nich so weit, denn meine Zahl hat dezimalstellen nach dem komma. Aus Delphis Hilfe Datei wurde ich auch nich ganz schlau, vieleicht kann mir wer mein Beispiel vervollständigen:

Delphi-Quellcode:
var zahl1,zahl2 : string;

begin
zahl1 := '11.1';
zahl2 := '9.8';

if STRtoZAHL(zahl1) > STRtoZAHL(zahl2) then begin
   {Zahl 2 ist größer}
   end;
Wenn ich in diesem Fall die Strings direkt vergleiche wäre zahl2 größer, wie muss ich nun die Funktion (STRtoZAHL) wählen damit das geht. Und was für ein var-typ ist das dann ?

Danke

mfg

SirThornberry 31. Okt 2003 13:47

Re: String->Zahl->vergleichen - wie ?
 
hast dus schon mit strtoFloat oder so probiert??

Treffnix 31. Okt 2003 13:48

Re: String->Zahl->vergleichen - wie ?
 
Für Gleitkommazahlen gibts StrToFloat und FloatToStr

*edit*
:shock: da war mal wieder jemand schneller

mfg 31. Okt 2003 13:50

Re: String->Zahl->vergleichen - wie ?
 
jupp,

blos was für ein var typ gibt strtofloat zurück ? also wenn ich den zurückgegebenen wert in einer var speichern will!?

Treffnix 31. Okt 2003 13:52

Re: String->Zahl->vergleichen - wie ?
 
Double

*edit*
Stimmt gar nicht. Extended, aber kann man in ner Double oder Real-Variable speichern.

mfg 31. Okt 2003 13:53

Re: String->Zahl->vergleichen - wie ?
 
hm, also ich krieg immer nen fehler: 5.9 ist kein gleitkommawert... liegt das an dem . statt , ?

Treffnix 31. Okt 2003 13:56

Re: String->Zahl->vergleichen - wie ?
 
ja, liegt an dem Punkt. Das holt der sich aus den Windowseinstellungen. Gibt ne Konstante Decimalseparator oder so. Wenn da ein Komma drin ist ( und das ist auf deutschen Rechnern wohl so ), dann will er auch ein Komma als Komma.

Nalincah 31. Okt 2003 13:57

Re: String->Zahl->vergleichen - wie ?
 
Ja

mfg 31. Okt 2003 13:57

Re: String->Zahl->vergleichen - wie ?
 
najut, und wie ersetze ich nun den . durch ein , im string ?

Treffnix 31. Okt 2003 14:09

Re: String->Zahl->vergleichen - wie ?
 
Delphi-Quellcode:
StringReplace( Zahlx, '.', ',', [] )
oder

Delphi-Quellcode:
for i:= 0 to length( Zahl ) - 1 do Begin
  if
    Zahl[i] = '.'
  Then
    Zahl[i] := ','
End;
[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]

Nalincah 31. Okt 2003 14:10

Re: String->Zahl->vergleichen - wie ?
 
StringReplace(GesamtString, AlterString, NeuerString, Flags)

Gesamtstring ist dein "5.9"
AlterString ist "."
NeuerString ist ","
Flags sind Optionen wie

rfReplaceAll: Ersetzt jeden AltString mit NeuString, sonst nur den ersten
rfIgnoreCase: Ignoriert Groß/Kleinschreibun

Also;

Delphi-Quellcode:
Edit1.text := StringReplace('5.9', '.' ',' []);
[edit] Verdammt, schon wieder nur zweiter :wall: :wink: [/edit]

SirThornberry 31. Okt 2003 14:11

Re: String->Zahl->vergleichen - wie ?
 
stringreplace wars glaube und wenn das nicht geht einfach mit ner schleife
Delphi-Quellcode:
var source: String;
    count: Integer;
begin
  source := '12.95';
  for count := 1 to length(source) do
    if source[count] = '.' then source[count] := ',';
end;

Treffnix 31. Okt 2003 14:21

Re: String->Zahl->vergleichen - wie ?
 
Oh, sorry! Sir Thornberry hat natürlich recht. Der erste Char hat den Index 1, nicht 0. Also ist auch das -1 am Ende hinfällig.
Sprich: Seine Schleife gut, meine Schleife macht böse Exceptions. :roll:

*edit*
Fipptehler verbessert


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:09 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