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 Zahl umklappen lassen auf -Wert? (https://www.delphipraxis.net/36854-zahl-umklappen-lassen-auf-wert.html)

Pseudemys Nelsoni 27. Dez 2004 09:28


Zahl umklappen lassen auf -Wert?
 
hi,

wenn ich eine zahl habe und Inc() benutze und das über den bereich gehen würde, würd es ja automatisch auf den höchsten negativen wert springen..... nun brauch ich eine funktion die genau DAMIT klar kommt. Z.B bekomme ich bei diesem hier:

Delphi-Quellcode:
showmessage(inttostr(strtoint('456165165465165464')));
ein EConvertError statt z.b ein en negativen wert... wie mache ich das das ich auch negative werte angezeigt bekomme ?

mirage228 27. Dez 2004 09:32

Re: Zahl umklappen lassen auf -Wert?
 
Hi,

ich weiss nicht, in wie fern das hilfreich für Dich ist, aber so geht es:

Delphi-Quellcode:
  ShowMessage(IntToStr(StrToInt64('456165165465165464')));
mfG
mirage228

Pseudemys Nelsoni 27. Dez 2004 09:38

Re: Zahl umklappen lassen auf -Wert?
 
hallo mirage,

danke für deine antwort, leider geht das nicht, bzw so sollte es nicht sein. Es geht darum das ein User einen string, der vom server in eine zahl umgewandelt werden soll. Sollte das Maximale eines Integers überschritten werden, soll der wert einfach umklappen (fängt bei - an).

Ich schreibe gerade einen Server und muss ein genaues abbild eines bereits vorhandenen (nicht meiner) Server machen.

Wenn ich an den fremden Server folgendes Sende:

Zitat:

irc.hempstar.net KILLS 2147483648 // << 1 Zahl über dem möglichen!
Sendet mir der Server als Antwort:

Zitat:

:irc.hempstar.net 311 pseudemys -2147483648

^^^^den überschlagenen wert.

genau so muss ich das auch machen, nur wie?

glkgereon 27. Dez 2004 10:18

Re: Zahl umklappen lassen auf -Wert?
 
du machst aus dem int nen string, also max-wert und jetziger wert

beides in nen string.
bei beiden soviele nullen vorne einfügen bis er 15 stellen lang ist oder so...

vergleichen

wenn größer, dann ein '-' davor

oder so in etwa ;)

Pseudemys Nelsoni 27. Dez 2004 11:58

Re: Zahl umklappen lassen auf -Wert?
 
hallo glk,

hm, das muss auch einfacher gehen, also ohne das in einen string umzuwandeln. Inc() tut ja genau das was ich eigentlich möchte, nur kann ich ja hier kein Inc() verwenden da ich ja nur einen wert "nehme" und ihn nicht inkrementiere

glkgereon 27. Dez 2004 12:00

Re: Zahl umklappen lassen auf -Wert?
 
wozu brauchst du da inc()???

Urba 27. Dez 2004 12:04

Re: Zahl umklappen lassen auf -Wert?
 
Hallo,

Vielleicht so ...

Delphi-Quellcode:
var Zahl : Integer;

if Zahl > MaxInt then Zahl := -Zahl
Gruss
Urba

Pseudemys Nelsoni 27. Dez 2004 12:05

Re: Zahl umklappen lassen auf -Wert?
 
ich hab ja gesagt das inc() hier keinen sinn macht.

mach mal folgendes:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  i := 2147483647;
  inc(i);
  showmessage(inttostr(i));
end;
^^^da tut inc genau das was ich eigentlich möchte, es klappt den wert um wenn er über 2147483647 ist.

so wenn ich nun einen string umwandeln möchte der die zahl "2147483648" enthält gibts nen convert error... naja ich möchte dann halt -2147483648 bekommen und keinen fehler...



@Urba: Ein wert kann ja auch mehrmals umklappen je nachdem wieviel mal er grösser ist, also muss das ergebniss nicht unbedingt ein negativer wert sein, also klappt das auch nicht

Oxmyx 27. Dez 2004 12:11

Re: Zahl umklappen lassen auf -Wert?
 
Wenn's nur um den EConvertError geht, gibt's auch die Funktion StrToIntDef, mit der du einen Default-Wert zurückgeben kannst, wenn ein Fehler auftritt.

Pseudemys Nelsoni 27. Dez 2004 12:22

Re: Zahl umklappen lassen auf -Wert?
 
StrToIntDef gibt aber 0 zurück wenn der übergebene string über dem wertebereich eines integers liegt, statt ihn umzuklappen


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

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