![]() |
Re: länge zweier integer werte vergleichen
neee, ich weiß, daß Format('%8.2d', [123]) einem Format('%*.*d', [8, 2, 123]) entspricht, daher dachte ich jetzt einfach mal, das Format('%.5d', [123]) einem Format('%.*d', [5, 123]) entspräche ... hab's aber nicht getestet :oops:
vielleicht geht ja ein :gruebel:
Delphi-Quellcode:
die OH meint zumindestens sowas:
String1 := Format('%*.*d', [0, MaxLen, Variable1])
Zitat:
|
Re: länge zweier integer werte vergleichen
Meine Variante mit dem "Zwischenformat" geht jedenfalls (ich war neugierig und habe es dann selbst ausprobiert). Der Fehler muss woanders liegen.
|
Re: länge zweier integer werte vergleichen
mein quelltext
fehlersuche xD mit breakpoints komm ich auf die zeile mit "%.2d" aber hier mein ganzer code
Delphi-Quellcode:
ich hoffe ihr könnt damit was anfangen xD also Vzza und Vzzz sind die variablen die vorher "variable1" und "variable2" waren ...
procedure TForm1.Button1Click(Sender: TObject);
var Vza,Vzb, Vzz : real; a,x,c,d,b : integer; Va, Vb, VZ: integer; MaxLen : Integer; Vzza, vzzz : String; FormatString : String; begin a:= StrToInt(Edit2.Text[1]); x:= StrToInt(Edit2.Text[2]); b:= StrToInt(Edit2.Text[3]); c:= StrToInt(Edit2.Text[4]); d:= StrToInt(Edit2.Text[5]); Vza := a*sqr(x) + b*x + c; Va := (Round(Vza)); x := x+d; Vzb := a*sqr(x) + b*x + c; Vb := (Round(Vzb)); x := x + (26*d); Vzz := a*sqr(x) + b*x + c; Vz := (Round(Vz)); MaxLen := Max(Length(IntToStr(Va)), Length(IntToStr(Vz))); FormatString := Format('%%.%dd',[MaxLen]); Vzza := Format(FormatString, [Vzza]); Vzzz := Format(FormatString, [Vzzz]); Memo1.Text := 'a = ' + Vzza + #13#10 + 'B = ' + IntToStr(Vb) + #13#10 + 'Z = ' +Vzzz; |
Re: länge zweier integer werte vergleichen
Delphi-Quellcode:
Sinnige Variablenbezeichner sind übrigens Gold wert.
Vzza := Format(FormatString, [Va]);
Vzzz := Format(FormatString, [Vz]); |
Re: länge zweier integer werte vergleichen
Zitat:
und die ganzen Round sind "sinnlos", da es eh schon integer sind :zwinker:
Delphi-Quellcode:
obwohl ich mich frag, was bei den * falsch sein soll :gruebel:
...
Vz := (Round(Vz)); MaxLen := Max(Length(IntToStr(Va)), Length(IntToStr(Vz))); FormatString := Format('a = %%.%0:dd'#13#10'B = %%d'#13#10'Z = %%.%0:dd', [MaxLen]); Memo1.Text := Format(FormatString, [Va, Vb, Vz]); denn ich hab es grad geprüft (in D7) und es gehen beide Varianten.
Delphi-Quellcode:
...
Vz := (Round(Vz)); MaxLen := Max(Length(IntToStr(Va)), Length(IntToStr(Vz))); Memo1.Text := Format('a = %.*d'#13#10'B = %d'#13#10'Z = %.*d', [MaxLen, Va, Vb, MaxLen, Vz]); // bzw. ... Vz := (Round(Vz)); MaxLen := Max(Length(IntToStr(Va)), Length(IntToStr(Vz))); Memo1.Text := Format('a = %*.*d'#13#10'B = %d'#13#10'Z = %*.*d', [0, MaxLen, Va, Vb, 0, MaxLen, Vz]); |
Re: länge zweier integer werte vergleichen
Es hat ja niemand gesagt, dass die * falsch waren. Der Fehler lag ja darin, dass er %d auf String anwenden wollte.
|
Re: länge zweier integer werte vergleichen
danke probier das lgeich aus
und zu den variablen namen die ham schon nen sinn. aber da meine idee noch sehr wenig ausgereift ist hat's nicht viel sinn da genau jetzt schon zu beschreiben xD danke aber für eure hilfe edit es klappt aber immer noch nicht. hab das mal mit (random) zufälligen zahlen ausprobiert und dann kommt raus a = 616 B = 2093 Z = 000 wobei ja Z eigendlich was anderes als 000 sein sollte (was es aber egal bei welcher zufälligen zahl ) ist und a sollte ja eigendlich 0616 sein !! also klapps nicht ! |
Re: länge zweier integer werte vergleichen
Delphi-Quellcode:
var
lLen: integer; s1, s2: string; begin s1 := IntToStr(a); s2 := IntToStr(b); lLen := max(length(s1), length(s2)); s1 := StringOfChar(' ', lLen-length(s1)) + s1; s2 := StringOfChar(' ', lLen-length(s2)) + s2; Memo1.Lines.Add(s1); Memo1.Lines.Add(s2); end; |
Re: länge zweier integer werte vergleichen
danke
nun geht es |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz