![]() |
Kleines rechnen problem
opps .. ja vielleicht ist es auch schon zu spät für mich
Habe 16 Trackbars [0..15] und eine MasterTrackbar Beide haben eine Maxvalue von 100. Wenn ich bei der ersten Trackbar[0] eine value von 65 habe und die anderen alle eine Value von 35. Wie berechne ich das jetzt am besten das beim verschieben der MasterTrackbar alle Trackbars abhängig von der aktuellen MasterTrackbar value verschoben werden aber ohne die maximale value von 100 zu überschreiten aber die alte Value der TrackBars[0..15] zu behalten (quasi zur MasterTrackbar addieren). gruss |
AW: Kleines rechnen problem
Zitat:
Edit: Dein Problem ist schwer verständlich! |
AW: Kleines rechnen problem
Zitat:
Meine MasterTrackbar hat eine aktuelle Value von 50. Meine anderen Trackbars[0..15] haben auch eine Value von 50. Dann mache ich folgendes!
Delphi-Quellcode:
Damit verschiebe ich jetzt alle Trackbars von 0..15 abhängig von der MasterTrackbar.Value
For IntI := 0 to 15
Trackbars[IntI] := MasterTrackbar.Value; Wenn ich aber nun Trackbars[0] > 50 habe bsp. 75 wäre dann beim verschieben der MasterTrackbar wenn diese die maximale Value erreicht hat bei der Trackbars[0] eine Value von 125 oder? Das darf aber nicht sein da die Hundert nicht überschritten werden darf. Ich möchte die alten value's behalten wenn die MasterTrackbar verschoben wird. Aber mit
Delphi-Quellcode:
Trackbars[0] := Trackbars[0] + MasterTrackbar.Value
komme ich nicht klar das es ja auch negative werte gibt wenn ich die MasterTrackbar nach links scrolle. Vielleicht ist das verständlicher. gruss |
AW: Kleines rechnen problem
Bei deinem Pseudocode verschiebst du nichts, du weißt allen Trackbars Elementen denselben Wert zu.
Aber zum angesprochenen Problem: Schau dir mal die Funktion Math.Min an! Min(a, b) liefert dir den kleineren Wert aus der Menge {a, b} Also wenn a < b, dann a, ansonsten b! Du könntest dann, falls du verschiebst (also einen Wert auf den aktuellen draufaddierst) bei der Zuweisung per Min(NeuerWert, 100) dafür sorgen, dass der Wert 100 nicht überschritten wird. Ich schätze mal dein Pseudocode war so gemeint:
Delphi-Quellcode:
Dann solltest du folgendes machen:
For IntI := 0 to 15 do
Trackbars[IntI] := Trackbars[IntI] + MasterTrackbar.Value;
Delphi-Quellcode:
Btw. bin mir nicht ganz sicher, was Min für einen Typ zurückliefert. Falls es ein Fließkommawert ist, müsste noch ein Round vornedran!
For IntI := 0 to 15 do
Trackbars[IntI] := Min(Trackbars[IntI] + MasterTrackbar.Value, 100); Edit: Faaalllss ich dein Problem richtig verstanden habe... |
AW: Kleines rechnen problem
Hier mal der originale Code
hab ihn geändert.
Delphi-Quellcode:
Aber auch das funktioniert nicht. :(
ID_TRACK_MASTERVOL:
begin TempVal := SKAERO_GetTrackValue(SKAERO_GetMainItem(MainHandle, wp)); for IntI := 0 to 15 do begin Volume[IntI] := Min(Volume[IntI] + TempVal, 100); SKAERO_SetTrackValue(SKAERO_GetMainItem(MainHandle, ID_VOLUME_FIRST + IntI), Volume[IntI]); end; end; EDIT: Wenn ich nur 3 pixel weiterfahre habe ich schon 100% bei allen 16 Trackbars. Dürfen sie aber erst haben wenn TempVal ebenfalls 100% hat Beim runterscrollen der (TempVal) bleiben alle Trackbars auf 100% gruss |
AW: Kleines rechnen problem
Was genau funktioniert nicht? Mit Min kannst du den Wert 100 nie überschreiten.
Könntest du den Fehler genauer beschreiben? Poste mal welche Werte welche Variablen annehmen und welche sie annehmen sollten! |
AW: Kleines rechnen problem
Zitat:
Volume[IntI] Min = 0; Max 100 Das selbe bei der MasterVolume gruss |
AW: Kleines rechnen problem
Willst du, dass die 1..16 Regler den Wert des Masterreglers nicht überschreiten?
|
AW: Kleines rechnen problem
Zitat:
Qasi eine inc/decrementierung aller aktuellen Valus abhängig vom Masterregler. EDIT: Ohne das der Regler mit der höchsten Value die Hundert überschreitet. Bzw.. der mit der niedrigsten Value die 0 unterschreitet. Alle anderen sollen dann solange inc/dec bis der mit der höchsten/niedrigsten Value 0 oder 100 erreicht hat. gruss |
AW: Kleines rechnen problem
Du könntest für jeden Regler die Position relativ zum Masterregler speichern und dabei aufpassen, das die absoluten Werten im gewünschten Bereich bleiben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 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