Autor Beitrag
Henry
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 619

WinXP Prof. SP3
D6 Prof.
BeitragVerfasst: Di 10.06.03 20:02 
Hallo,

habe da ein kleines Problem mit der Formatierung eine Reavariablel in einen String

Ich formatiere mir meine Realvariable wie folgt:
ausblenden Delphi-Quelltext
1:
 Str(kmh :3:1,Tempo);					

Soweit auch in Ordnung. Es funktioniert.

Nun möchte ich aber das mir meine Realvariable in einen String Formatiert wird mit drei Stellen vor dem Komma und einer nach dem Komma (wie ich es ja auch formatiert habe) allerdings mit einer Vornoll wenn das ergebnis der Realvariablen nur zwei oder einstellig ist. Brauche nämlich auf jeden Fall füllende Vornullen.

Wie kann ich das lösen? Dagiebt es doch bestimmt so eine Funktion wie ich sie verwendet habe, oder?

Danke schon einmal im voraus.


Edit: Habe den Titel umbenannt (siehe Hinweis Luckie) und den Text angepasst Hatte mich vorher geirrt und Integer geschrieben

_________________
mfg Henry


Zuletzt bearbeitet von Henry am Mi 11.06.03 06:39, insgesamt 1-mal bearbeitet
Tweafis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: Di 10.06.03 20:06 
ausblenden Delphi-Quelltext
1:
2:
if kmh<100 then Tempo := '0'+Tempo;
if kmh<10 then Tempo := '0'+Tempo;


So würde ich es jetzt auf die schnelle machen. Guck gleich nochmal wegen Format...

_________________
.: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 10.06.03 20:17 
Ein Integer hat keine Nachkommastellen und was nicht da ist, kann man nicht formatieren. So einfach ist das.
Tweafis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: Di 10.06.03 20:20 
Hab auch erst überlegt, da ich das nachprogrammiert hab (um hilfe zu geben) weil das nicht ging. :mrgreen:

ausblenden Delphi-Quelltext
1:
  Tempo := Format('%5.1f', [kmh]);					


Das ist noch was falsch mit den führenden Nullen :(

_________________
.: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
Henry Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 619

WinXP Prof. SP3
D6 Prof.
BeitragVerfasst: Mi 11.06.03 06:34 
@Luckie: Sorry, hast natürlich recht, Integer hat keine Nachkommastellen :oops:
Die Variable ist natürlich vom Typ Real, hatte da was durcheinandergebraxht.

@Tweafis: werde ich mir mal zu gemüte führen, danke erstmal.

_________________
mfg Henry
Tweafis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: Mi 11.06.03 07:23 
Ich hab das mit den Formatsstrings einfach mal so aus der Hilfe zusammeneschustert.
ich weiß jetzt nicht:

a) ob es f,g oder n ist (der Formatbuchstabe)
b) Wie das mit den Nullen ist (wird das ',' als stelle gerechnet?)

_________________
.: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Mi 11.06.03 07:45 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
function Nullen(Str:string;MaxZeichen:integer):string;
begin
 Result:=StringOfChar('0',MaxZeichen-Length(Str))+Str;
end;
Damit klappen die Nullen!

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
Henry Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 619

WinXP Prof. SP3
D6 Prof.
BeitragVerfasst: Mi 11.06.03 18:26 
Danke euch erstmal allen.

Die erste Version von Tweafis hat erstmal funktioniert.
Werde aber mal die von maxk auch noch probieren.

Was mir noch lieber wäre, ist eine Funktion (wie z.B. ich si oben angegeben hatte) die das gleich alles mit einmal macht. Also wenn ich angebe 5 Stellen vor dem Komma dann sollte sie den rst mit Vornullen direkt aufführen odhne das man noch eine andere Funktion zusätzlich braucht.
Aber das scheint es nicht wirklich zu geben.

Aber ich habe ja jetzt funktionierende Möglichkeiten.

_________________
mfg Henry
Wolff68
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: Do 12.06.03 23:08 
Hab mal versucht das ganze als einen Befehl hinzubekommen.
(OK, indirekt sind es schon mehrere)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button1Click(Sender: TObject);
var
  digits, precision : Integer;
begin
  digits := 5// Stellen VOR dem Komma
  precision := 3// Stellen NACH dem Komma

  Edit1.Text := Format('%0.'+IntToStr(digits)+'d', [Trunc(x)]) // Vor Komma
               +Copy(FloatToStrF(Frac(x),ffFixed,15,13)
                    ,Pos(decimalseparator,FloatToStrF(Frac(x),ffFixed,15,13))
                    ,precision+1); // Nach Komma
end;


X ist hier ein Real-Wert.

Probleme könnten bei Digit-Überschreitungen auftreten, oder wenn der Nachkommateil in das Wissenschaftliche Format umbricht.

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
Henry Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 619

WinXP Prof. SP3
D6 Prof.
BeitragVerfasst: Fr 13.06.03 18:10 
Danke, werde ich mich mal mit befassen.

_________________
mfg Henry