AnsiString to unsigned long ?
-
hi,
Wie kann ich einen AnsiString in unsigned long wandeln ?
Also der String besteht wirklich immer nur aus Zahlen.AnsiString Zeit = "3444403648";
Danke !
-
Hi,
#include <stdlib.h> #include <stdio.h> . . unsigned long lZeit = atol(Zeit.c_str());
s. Konvertierungsroutinen
mfg
kpeter
-
kpeter, nicht doch die C-Funktionen !!!
AnsiString hat dafür extra die Methode 'ToInt()':
int zeit = Zeit.ToInt();
Jedoch liefert diese eine Exception, wenn dort keine Zahl drin steht.
Alternativ kannst du dann z.B. StrToIntDef() benutzen:
int zeit = StrToIntDef(Zeit, 0); // mit Standardwert, falls keine Zahl vorhanden
-
long und int ist doch ein Unterschied ? Er will nach unsigned long umwandeln.
-
kpeter schrieb:
long und int ist doch ein Unterschied ?
Beim Builder nicht. Allerdings liefert ToInt einen signed int (bzw. long) genau wie atol übrigens auch.
Um zu unsigned int zu kommen könnte man über einen stringstream gehen (oder boost::lexical_cast) oder einen Umweg über StrToInt64 machen.
-
Braunstein schrieb:
kpeter schrieb:
long und int ist doch ein Unterschied ?
Beim Builder nicht.
ja, beide belegen 4 Byte
Aber,
der im ersten Beitrag genannte AnsiStringZeit = "3444403648";
wird weder mit StrToInt noch mit .ToInt verarbeitet, da eine Fehlermeldung
geworfen wird (kein gültiger Integerwert).StrToInt64 ist im BCB3 noch nicht verfügbar, in BCB6 ja.
mfg
kpeter
-
Hallo
versuchs dochmal mit "ToDouble"
ob das fuer alle Zahlenmoeglichkeiten geht ???
aber fuer das Beispiel schon
Irgendwann ist auch Double am Ende (Anzahl Stellen)Mfg
Klaus
-
Hallo,
jenach (Betriebs-)system reserviert double , genauso wie __int64, 8 Byte. int / long int jeweils 4 (was in meinen Augen gar keinen Sinn macht). short int hingegen reserviert nur 2 byte.
LG, Micha
-
Hi,
also mit ToDouble gehts.
Das Problem bestand sobald der Wertebereich von int überstiegen wurde
ist mein Prog unbrauchbar geworden und bin in Panik geraten,
aber was ich nicht wusste das es eine Funktion gibt die das macht.Habe aber auch nix gegen C-Funktionen !!! Oftmals sind mir diese doch viel lieber weil ich mir einbilde ich hätte dadurch eine schnellere Verarbeitung ?
Danke !
-
Sven_39 schrieb:
Habe aber auch nix gegen C-Funktionen !!! Oftmals sind mir diese doch viel lieber weil ich mir einbilde ich hätte dadurch eine schnellere Verarbeitung ?
Danke !Was im Zeitalter von Gigahertz Prozessoren in 99,95% aller Fälle wohl keinen Unterschied machen sollte.
Wenn man C++ programmiert sollte man mMn auch C++ Funktionen verwenden. Die C I/O Routinen mögen zwar etwas schneller sein, aber dafür sind sie nicht typsicher und können leicht zu undefiniertem Verhalten führen. Ganz heisse Kandidaten sind dafür Funktionen der printf Familie.
-
Hallo
aber (wie schonn gesagt) ToDouble hat enge Grenzen (Anzahl Stellen)
Mfg
Klaus
-
Ich möchte hier nochmal auf StrToInt64 verweisen was ich für geeigneter halte.