Tal seperator i Label

Tags:    delphi

Jeg er ved at udvikle et lille program hvor jeg ligger meget store tal sammen. Derfor har jeg behov for at dele mit resultat op ved hvert 3. ciffer.
F.eks. skal tallet 1735522000000 formateres til 1.735.522.000.000
Hvordan gør jeg det? Det er vigtigt at det bliver gjort bag fra, da det ellers vil blive delt forkert (eks. 173.552.200.000.0).
Resultatet med seperatoren skal blive vist i en Label.



9 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato

Noget i den her retning, kan måske bruges:

Fold kodeboks ind/udKode 


MvH

Stefan Svensson
http://fusket.frac.dk



Nu har jeg ikke den vilde forstand på delphi men kunne man ikke lave en funktion der principielt fungere på følgende måde...:


string floatToSuperNiceStr(float input)
{
string tmp = toString(input); //laver floaten til string
string result = "";
while(length(tmp)> 3)
{
result = "." + right(tmp, 3);
tmp = left(tmp, length(tmp) - 3);
}
return tmp + result;
}

så skal du bare finde de tilsvarende funktioner i Delphi :)

---
Simon



Nu har jeg ikke den vilde forstand på delphi men kunne man ikke lave en funktion der principielt fungere på følgende måde...:


string floatToSuperNiceStr(float input)
{
string tmp = toString(input); //laver floaten til string
string result = "";
while(length(tmp)> 3)
{
result = "." + right(tmp, 3);
tmp = left(tmp, length(tmp) - 3);
}
return tmp + result;
}

så skal du bare finde de tilsvarende funktioner i Delphi :)

---
Simon

Det kunne godt fungere, men hvis der er tale om et kommatal vil den ikke helt komme til at passe. Hvis tallet f.eks er 1234,5678 vil resultatet blive 123.4,5.678
MvH

Stefan Svensson
http://fusket.frac.dk



Find en TEdit og kom denne kode ind i dens OnChange:

var
amount : Currency;
begin
amount := strtoint(edit1.Text);
Label1.Caption := (FloatToStrF(amount, ffnumber, 10, 2));
end;


[Redigeret d. 12/08-04 18:39:28 af Benni]



Find en TEdit og kom denne kode ind i dens OnChange:

var
amount : Currency;
begin
amount := strtoint(edit1.Text);
Label1.Caption := (FloatToStrF(amount, ffnumber, 10, 2));
end;


[Redigeret d. 12/08-04 18:39:28 af Benni]



Jeg har lige prøvet dette og det virker umidelbart rigtigt. Problemet er bare at jeg arbejder med meget større tal, og denne variabel-type kan kun håndtere tal op til lige knap 2,5 milliard. Tilgengæld er det unødvendigt med kommaet, da jeg kun kommer til at arbejde med hele tal. Så mit gæt vil være at jeg skal bruge en variabel med typen "Int64".



den her metode skulle gøre det:

Fold kodeboks ind/udKode 


MvH

Stefan Svensson
http://fusket.frac.dk



den her metode skulle gøre det:

Fold kodeboks ind/udKode 


MvH

Stefan Svensson
http://fusket.frac.dk



Okay, jeg kan ikke helt gennemskue det, men vil da lige prøve om det virker! Så hvordan gør jeg at når jeg trykker på en knap, så laver den 1000 tals seperator? Og hvordan trækker jeg resultatet med seperatoren ud og indsætter i en label? Måske lidt dumme spørgsmål, men er ikke vildt hardcore til programering i nu.. :)




Okay, jeg kan ikke helt gennemskue det, men vil da lige prøve om det virker! Så hvordan gør jeg at når jeg trykker på en knap, så laver den 1000 tals seperator? Og hvordan trækker jeg resultatet med seperatoren ud og indsætter i en label? Måske lidt dumme spørgsmål, men er ikke vildt hardcore til programering i nu.. :)


Hvis du har dit tal gemt i en variabel der hedder 'tal' gør du sådan her:

I din button's onClick skriver du:

label1.caption:=lavTusindeSeperator(tal);

MvH

Stefan Svensson
http://fusket.frac.dk



Mange tak Stefan Svensson! Nu fandt jeg ud af det, og det virker simpelthen glimrende! De 200 point er dine!



t