Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi wie die letzten 2 zeichen eines integer Wertes ermitteln (https://www.delphipraxis.net/121069-wie-die-letzten-2-zeichen-eines-integer-wertes-ermitteln.html)

Dragon Haerd 21. Sep 2008 23:38


wie die letzten 2 zeichen eines integer Wertes ermitteln
 
Ich suche eine Funktion die es mir ermöglicht die letzten 2 zeichen eines Integer wertes auzulesen ich habe zwar schon stundenlang gesucht aber leider nichts gefunden
in php habe ich das problem so gelöst das ich zuerst die länge des integerwertes ausgelesen habe und dann diesen wert um 2 vermindert habe als nächsten schritt habe ich dann den wert an der so errechneten stelle geteilt und den ersten teil weggeschnitten


ich hoffe ihr könnt mir helfen

P.S: ich wäre euch dankbar wenn ihr hier nicht gleich mit komplizierter delphi fachsprache kommt denn ich schreibe in delphi erst seit 2 einhalb wochen

P.P.S.: ich verwende Delphi 7

Dax 21. Sep 2008 23:46

Re: wie die letzten 2 zeichen eines integer Wertes ermitteln
 
"i mod 100"?

mr_emre_d 22. Sep 2008 02:50

Re: wie die letzten 2 zeichen eines integer Wertes ermitteln
 
Habs nicht getestet aber so müsste das funzen :
Code:
function GetLast2Values( const Int: Integer ): TPoint; // TPoint.X = Vorletzter Wert, TPoint.Y = Letzter Wert
var
  buf: String;
begin
  buf     := IntToStr( Int );
  Result  := Point( 0, 0 );
  if Length( Buf ) > 1 then
  begin
    Result.X := StrToInt( Buf[Length(Buf)-1] );
    Result.Y := StrToInt( Buf[Length(Buf)]  );
  end else
    MessageDLG( 'Wert hat nur 1 Zeichen!', mtError, [mbOK], 0 );
end;
Aufruf wäre dann so:
Code:
  ShowMessage( IntToStr( GetLast2Values( 123 ).X ) ); // --> 2
  ShowMessage( IntToStr( GetLast2Values( 123 ).Y ) ); // --> 3
MfG

Dax 22. Sep 2008 03:23

Re: wie die letzten 2 zeichen eines integer Wertes ermitteln
 
Ieks...

Besser:
Delphi-Quellcode:
function GetLast2Values(Int: Integer): TPoint;
begin
  Result.X := Int mod 10;
  Result.Y := (Int div 10) mod 10;
end;

Dragon Haerd 22. Sep 2008 12:56

Re: wie die letzten 2 zeichen eines integer Wertes ermitteln
 
Zitat:

Zitat von Dax
"i mod 100"?

danke manchmal sieht man den Wald vor lauter bäumen nicht :)
den anderen beiden auch ein großes Dankeschön aber da ich die beiden letzten 2 Zeichen sowiso zusammenhängend brauche werde ich "int mod 100" nehmen da das am kürzesten ist

mfg Niklas

gemy 10. Mai 2020 18:33

AW: wie die letzten 2 zeichen eines integer Wertes ermitteln
 
Habe das auch eben gebraucht. Habe es so gelöst:

Gegeben : Zufällige Zahl zwischen 1000 und 9999


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var zahl, nr1, nr2,nr3,nr4: integer;
begin
 randomize;
 zahl :=randomRange(1000-9999);
  Nr1 := trunc(zahl/ 1000); //liefert erste Stelle
  Nr2 := trunc((frac(zahl/ 1000)*10)); //liefert zweite Stelle
  Nr3 := trunc((frac(zahl/ 100)*10)); // dritte
  Nr4 := trunc((frac(zahl/ 10)*10));  // vierte
end;
Habe es mit mehreren Zahlen getestet, 1000, 9999 funktioniert einwandfrei.

himitsu 10. Mai 2020 19:05

AW: wie die letzten 2 zeichen eines integer Wertes ermitteln
 
Du willst jetzt also für einen Integer über unrundbare Fließkommazahlen gehen?

Delphi-Referenz durchsuchenDIV und Delphi-Referenz durchsuchenMOD und Delphi-Referenz durchsuchenDivMod

Delphi-Quellcode:
d00X = i mod 10;
d0X0 = (i div 10) mod 10;
dX00 = (i div 100) mod 10;
...

Delphi-Quellcode:
DivMod(i, 10, i, d00X); // d00X := i mod 10; i := i div 10;
DivMod(i, 10, i, d0X0); // d0X0 := i mod 10; i := i div 10;
DivMod(i, 10, i, dX00); // dX00 := i mod 10; i := i div 10;
...
Bzw. hier im Beispiel naturürlich, für Beide zusammen.
Delphi-Quellcode:
LastZwo := i mod 100;

Hobbycoder 10. Mai 2020 19:15

AW: wie die letzten 2 zeichen eines integer Wertes ermitteln
 
Wenn's nur um die Zeichen als ASCII-Zeichen geht:
Delphi-Quellcode:
  if length(inttostr(i))>2 then
    result:=copy(inttostr(i), length(inttostr(i))-2, 2) else
    result:=inttostr(i);
oder als Int
Delphi-Quellcode:
  if length(inttostr(i))>2 then
    result:=inttostr(copy(inttostr(i), length(inttostr(i))-2, 2)) else
    result:=i;
Nicht so "mathematisch" gelöst, aber sollte funktionieren.

himitsu 10. Mai 2020 19:24

AW: wie die letzten 2 zeichen eines integer Wertes ermitteln
 
PS:
Delphi-Quellcode:
RightStr(IntToStr(i), 2)
, bzw.
Delphi-Quellcode:
RightStr({'0' +} IntToStr(Abs(i)), 2)
,
auch wenn eine mathematische Lösung ein bissl "optimaler" arbeitet, als jegliche "aufwändige" Stringmanipulation.

Und so als Tipp, probier deine Lösung mal mit einer negativen Zahl. :zwinker:

Hobbycoder 11. Mai 2020 00:32

AW: wie die letzten 2 zeichen eines integer Wertes ermitteln
 
:-D an RightStr hab ich gar nicht gedacht


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

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