Thema: Delphi "Zeichen" im Integer

Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#10

Re: "Zeichen" im Integer

  Alt 19. Jan 2007, 13:54
Zitat von Jürgen Thomas:
Tut mir leid, ich verstehe überhaupt nicht, was Du willst - vor allem, weil Du bei integer auf einmal von Kommazahlen sprichst.
Wo ist das Problem? Ich will die Anzahl der Ziffern ohne führenden Nullen einer Ganzzahl.
Und bei der Berechnung möchte ich auf Kommazahlen verzichten.

Zitat von Jürgen Thomas:
Du bist ja nicht "neu im Geschäft"; deshalb nehme ich an, Du meinst nicht:
iLaenge := SizeOf(integer);
Sry, aber mit der SizeOf Methode arbeite ich eigentlich nicht.
Würde es mir die Bitgröße (= 4 Byte) wiedergeben=?

Folgendes dürfte ziemlich langsam sein:
iLaenge := Length(IntToStr(iZahl));
Zitat von Jürgen Thomas:
Ich würde es vermutlich so machen:
Delphi-Quellcode:
function AnzahlZiffern(const iZahl: int): integer;
var i0: integer;
begin
  Result := 1;
  i0 := iZahl div 10;
  while (i0 >= 0)
  do begin
    Inc(Result);
    i0 := i0 div 10;
  end;
end;
Ist ja fast 3 of 8 Methode.

Zitat von Jürgen Thomas:
Ich vermute, dass einer der Fachleute für ASM oder Bit-Manipulation eine schnellere Lösung kennt.
Da sich bisher niemand dazu geäußert hat... Ist es wahrschienlich eure (deine und 3 of 8) Lösung!

Zitat von Jürgen Thomas:
PS. Bitte nicht sauer sein, wenn ich mit C#-Schreibweisen durcheinander gekommen bin.
Außer die Klammern in der "while"-Zeile sieht da nichts falsch aus... (Wobei die Klammern kein Fehler sind, aber eigentlich doch in c# Pflicht sind...)

Zitat von Jürgen Thomas:
PS2. Das war ja klar, dass ich langsam bin; aber meine Antwort ist noch nicht überflüssig.


Ich sehe schon... Ich werde das mit den Methoden versuchen... und Testen wer schnell ist und wer nicht...
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat