AGB  ·  Datenschutz  ·  Impressum  







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

String -> Cardinal

Ein Thema von Kedariodakon · begonnen am 20. Okt 2004 · letzter Beitrag vom 20. Okt 2004
Antwort Antwort
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#1

String -> Cardinal

  Alt 20. Okt 2004, 11:45
Ich hab nen String mit einem Parameter drinn und möchte diesen zu einer Cardinal umwandeln...

Nutzen tu ich: Cardinal := StrToInt64Def( String, 0 ); Problem ist, wenn im String eine negative Zahl ist, ist die Cardinal dann 4294967295 + den negativen Wert...
Aber wenn die Zahl Negativ ist, soll die Cardinal auch 0 sein, so wie wenn nur Müll im String steht

Hat dazu wer eine einfache Lösung???

Bye
Christian
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: String -> Cardinal

  Alt 20. Okt 2004, 11:47
Nimm Delphi-Referenz durchsuchenStrToIntDef. Deine Methode ist für Int64s gedacht.
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: String -> Cardinal

  Alt 20. Okt 2004, 11:58
Aber eine Cardinal kann ja auch größer als eine Integer sein

Und in dem Fall soll brauch ich auch eine, welche größer ist als Integer, aber die kleiner als Int64 ist!
Das ganze soll auch so schnell wie möglich ablaufen und der Prozessoraufwand soll so klein wie möglich gehalten werden!

Zur Zeit sieht das so aus:

Delphi-Quellcode:
If StrToInt64Def( String, 0 ) <= 0 Then Cardinal := 0
                                   Else Cardinal := StrToInt64Def( String, 0 );
aber vielleicht gibt es ja noch was viel besseres und schnelleres

Bye
Christian
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#4

Re: String -> Cardinal

  Alt 20. Okt 2004, 11:59
Bei Cardinal ist StrToInt64Def schon besser bei grossen Zahlen. Am besten du prüfst den String vor mit Pos, ob ein Minuszeichen enthalten ist. Oder machst es wirklich erst zu einem Int64 und prüfst dann ob es kleiner als 0 ist.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: String -> Cardinal

  Alt 20. Okt 2004, 12:02
Und was is schneller? Das Überprüfen ob ein "-" da ist, oder ob die Int64 kleiner 0 ist?

Bye
Christian
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#6

Re: String -> Cardinal

  Alt 20. Okt 2004, 12:03
Ja, geht schneller:
Delphi-Quellcode:
var i: Int64;
begin
  i := StrToInt64Def(String, 0);
  if i <= then then
    Cardinal := 0
  else
    Cardinal := i;
end;
Alles, was größer als $FFFFFFFF ist, wird jedoch an der 9. Hexadezimalstelle umgebrochen, das heisst, 4294967297 als Cardinal würde 1 ergeben.
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#7

Re: String -> Cardinal

  Alt 20. Okt 2004, 12:04
Das überprüfen auf sollte gegenüber deiner Variante schneller sein, aber deine kannst du ja ganz einfach optimieren.

Delphi-Quellcode:
var
  tmp: Int64;

tmp:=StrToInt64Def( String, 0 );
if tmp <= 0 Then
  Cardinal := 0
else
  Cardinal := tmp;
P.S: Da war jemand ein Tick schneller
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: String -> Cardinal

  Alt 20. Okt 2004, 12:09
Dankeschööööööööööön

Bye
Christian
  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 07:19 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