AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zahl in einzelne Stellen zerlegen ohne Stringkonvertierung!
Thema durchsuchen
Ansicht
Themen-Optionen

Zahl in einzelne Stellen zerlegen ohne Stringkonvertierung!

Offene Frage von "richard_boderich"
Ein Thema von richard_boderich · begonnen am 26. Apr 2009 · letzter Beitrag vom 26. Apr 2009
Antwort Antwort
Seite 2 von 2     12   
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#11

Re: Zahl in einzelne Stellen zerlegen ohne Stringkonvertieru

  Alt 26. Apr 2009, 15:10
Zitat von Amateurprofi:
@alzaimar:
In der letzten Zeile von NumberToDigits sollte es wohl besser heißen
SetLength (Result, n);
Ich dachte dabei an den Fall: aNumber = 0. Aber das ist sowieso nicht ganz korrekt. Es müsste eine Repeat-Until Schleife sein. Und dann hättest Du Recht.
Delphi-Quellcode:
Function NumberToDigits (aNumber : Cardinal) : TByteArray;
Var
  n : Integer;

Begin
  n := 0;
  SetLength (Result, 10);
  Repeat
    Result[n] := aNumber mod 10;
    aNumber := aNumber div 10;
    Inc (n);
  Until aNumber = 0;
  SetLength (Result, n1);
End;
..
// Beispiel
Var
  B : TByteArray;

Begin
  B := NumberToDigits (1234); // --> B = (4,3,2,1), also B[0] = 4, B[1] = 3 usw
  ...
@himitsu: Findst Du Assembler hier wirklich angebracht?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#12

Re: Zahl in einzelne Stellen zerlegen ohne Stringkonvertieru

  Alt 26. Apr 2009, 15:53
na OK, die paar Microsekunden machen es dann wohl auch nimmer aus
aber im Grunde hätt ich das Ganze dann noch über 'nen statisches Array gemacht.

Zitat:
Ich dachte dabei an den Fall: aNumber = 0. Aber das ist sowieso nicht ganz korrekt.
dann hättest du bei aNumber = 0 auch nichts richtiges ... da dort zwar ein Wert im Array drinstünde,
bei aNumber > 0 immer ein Fehld mehr existieren würde
und der letzte Wert im Array undeffiniert wär


Na ok, im Prinzip machen unsere Functionen (deine Letzte und Meine) das Selbe (außer einer Divisions-Operation und noch ein paar Sachen bezüglich der Array-Verwaltung weniger)

ja und wie gesagt ... Types.TByteDynArray
Delphi-Quellcode:
Function NumberToDigits(aNumber: Cardinal): TByteDynArray;
Var n: Integer;
Begin
  n := 0;
  SetLength(Result, 10);
  Repeat
    Result[n] := aNumber mod 10;
    aNumber := aNumber div 10;
    Inc(n);
  Until aNumber = 0;
  SetLength(Result, n);
End;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#13

Re: Zahl in einzelne Stellen zerlegen ohne Stringkonvertieru

  Alt 26. Apr 2009, 17:58
OT:

Alle Achtung es gibt Leute hier die haben Mathematisch echt was drauf.

Muss mal gesagt werden.

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#14

Re: Zahl in einzelne Stellen zerlegen ohne Stringkonvertieru

  Alt 26. Apr 2009, 19:15
Also der Algorithmus funktioniert nicht korrekt. Die letzte Stelle wird unterschlagen.
Habe jetzt den neuesten von himitsu getestet.
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#15

Re: Zahl in einzelne Stellen zerlegen ohne Stringkonvertieru

  Alt 26. Apr 2009, 19:20
also bei mir laufen beide Varianten?

also das mir ASM
und der der letze Code (wobei der nur des Code von alzaimar #11 ist, nur ohne die Fehler bezüglich dem n1 und des TByteArray)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#16

Re: Zahl in einzelne Stellen zerlegen ohne Stringkonvertieru

  Alt 26. Apr 2009, 20:05
Ich würde sonst noch die Verwendung der Funktion Delphi-Referenz durchsuchenDivMod aus der Unit Delphi-Referenz durchsuchenMath vorschlagen. Sie verwendet zwar kein IDIV könnte aber ggf. schneller sein, als zwei gesonderte Aufrufe an DIV und MOD...
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#17

Re: Zahl in einzelne Stellen zerlegen ohne Stringkonvertieru

  Alt 26. Apr 2009, 20:48
DivMod arbeitet nur mit Word und nicht mit Integer
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#18

Re: Zahl in einzelne Stellen zerlegen ohne Stringkonvertieru

  Alt 26. Apr 2009, 20:54
Zitat von himitsu:
DivMod arbeitet nur mit Word und nicht mit Integer
Hm, stimmt. Das also dazu
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18:58 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