![]() |
länge zweier integer werte vergleichen
hey,
ich hab mal ne frage. also ich habe 2 variablen mit integer werten. nun möchte ich diese vergleichen und dann den kürzeren verändern. beispie Variable1 := 100 Variable 2 := 1000 dann soll er vergleichen ob variabel2 mehr zeichen beinhaltet und wenn ja vor Variable 1 so viele '0' machne, dass das gleich ist. also aus Variable1 soll dann 0100 werden. ich bekomme aber das nicht mit der hilfe vom internet hin. dacht vllt mit
Delphi-Quellcode:
repeat
Variable1 := '0' + Variable1 until ((Length(Variable1) = (Length(Variable2))) aber das klapt nicht .... hoffe ihr versteht wie ich das mein und könnt mir helfen ^^ lg ^^ |
Re: länge zweier integer werte vergleichen
Ich weiß zwar nicht, in wie fern dir das Internet dabei helfen soll, aber egal. Du willst also, die Zahl mit nullen vorne auffüllen um sie dann auszugeben. Richtig? Dann guck dir mal die
![]() |
Re: länge zweier integer werte vergleichen
Du musst die beiden Variablen in Strings wandeln und dann deren Länge vergleichen.
|
Re: länge zweier integer werte vergleichen
Brauch er nicht. Format macht das von alleine.
|
Re: länge zweier integer werte vergleichen
Und woher soll Format wissen, wie lang der längere String ist? AFAIK kann man da nur feste Längen angeben, oder hab ich was übersehen?
|
Re: länge zweier integer werte vergleichen
Das sollen sie ja auch, wenn ich das richtig verstanden habe. Man gibt fünf Stellen an und alle kürzeren wrden mit nullen aufgefüllt.
|
Re: länge zweier integer werte vergleichen
Zitat:
|
Re: länge zweier integer werte vergleichen
Werden sie ja auch:
Delphi-Quellcode:
Bei 50 ist das Ergebnis "0050" und bei 500 "0500".
procedure TForm2.Button1Click(Sender: TObject);
var i: Integer; s: String; begin i := 50; s := Format('%.4d',[i]); ShowMessage(s); end; |
Re: länge zweier integer werte vergleichen
und mit ein paar Logarithmen (oder so) könnte man auch mathematisch rausbekommen welche Zahl wie lang ist ... OK, oder über IntToStr+Length (is nur langsamer)
Delphi-Quellcode:
voll unperformat, aber es läuft:
MaxLen = {größte Länge der beiden Zahlen als String};
String1 := Format('%.*d', [MaxLen, Variable1]); STring2 := Format('%.*d', [MaxLen, Variable2]);
Delphi-Quellcode:
String1 := IntToStr(Variable1);
STring2 := IntToStr(Variable2); While Length(String1) < Length(String2) do String1 := '0' + String1; While Length(String2) < Length(String1) do String2 := '0' + String2; [add]
Delphi-Quellcode:
// einfach
MaxLen = Max(Length(IntToStr(Variable1)), Length(IntToStr(Variable2))); String1 := Format('%.*d', [MaxLen, Variable1]); String2 := Format('%.*d', [MaxLen, Variable2]); // schnell(er) Function NumLen(i: Integer): Integer; Begin If i = 0 Then Result := 1 Else If i > 0 Then Result := Trunc(Log10(Variable1)) + 1 Else Result := Trunc(Log10(-Variable1)) + 1; End; MaxLen = Max(NumLen(Variable1), NumLen(Variable2)); String1 := Format('%.*d', [MaxLen, Variable1]); String2 := Format('%.*d', [MaxLen, Variable2]); |
Re: länge zweier integer werte vergleichen
hey,
erstmal danke für eure hilfe! ich hab mir eure code angeguckt und habe festegestellt das ich bei manchen sachen keine arnung habe was die bedeuten. in disem code (ich nehm ihn weil ich denke es ist der einfachste MaxLen = Max(Length(IntToStr(Variable1)), Length(IntToStr(Variable2))); String1 := Format('%.*d', [MaxLen, Variable1]); String2 := Format('%.*d', [MaxLen, Variable2]); was bedeutet das 'max' in der ersten Zeiel ist das nen befehl oder ne variable ? und das %.*d was bedeutet das ? und meine dritte frage wird in der letzten zeile string2 nicht auch verändert ? aber es soll ja nur string 1 so mit '0' "aufgefüllt" werden das es gleichlang ist wie string 2 ... sorry fals das dumme fragen sind . lg ^^ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 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