AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kleines rechnen problem

Ein Thema von EWeiss · begonnen am 4. Mai 2011 · letzter Beitrag vom 5. Mai 2011
Antwort Antwort
Seite 1 von 3  1 23      
EWeiss
(Gast)

n/a Beiträge
 
#1

Kleines rechnen problem

  Alt 4. Mai 2011, 23:55
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

Geändert von EWeiss ( 5. Mai 2011 um 00:01 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Kleines rechnen problem

  Alt 5. Mai 2011, 00:03
Wenn ich bei der ersten Trackbar[0] eine value von 65 habe und die anderen alle eine Value von 35.
Dann?

Edit: Dein Problem ist schwer verständlich!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Kleines rechnen problem

  Alt 5. Mai 2011, 00:11
Wenn ich bei der ersten Trackbar[0] eine value von 65 habe und die anderen alle eine Value von 35.
Dann?

Edit: Dein Problem ist schwer verständlich!
Ok sagen wir mal so

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:
For IntI := 0 to 15
 Trackbars[IntI] := MasterTrackbar.Value;
Damit verschiebe ich jetzt alle Trackbars von 0..15 abhängig von der 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
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

Geändert von EWeiss ( 5. Mai 2011 um 00:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Kleines rechnen problem

  Alt 5. Mai 2011, 00:18
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:
For IntI := 0 to 15 do
 Trackbars[IntI] := Trackbars[IntI] + MasterTrackbar.Value;
Dann solltest du folgendes machen:
Delphi-Quellcode:
For IntI := 0 to 15 do
 Trackbars[IntI] := Min(Trackbars[IntI] + MasterTrackbar.Value, 100);
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!

Edit: Faaalllss ich dein Problem richtig verstanden habe...
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton ( 5. Mai 2011 um 00:20 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Kleines rechnen problem

  Alt 5. Mai 2011, 00:22
Hier mal der originale Code
hab ihn geändert.
Delphi-Quellcode:
        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;
Aber auch das funktioniert nicht.

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

Geändert von EWeiss ( 9. Jul 2019 um 09:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: Kleines rechnen problem

  Alt 5. Mai 2011, 00:26
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!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Kleines rechnen problem

  Alt 5. Mai 2011, 00:29
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!
Schau mal mein Pic..

Volume[IntI] Min = 0; Max 100
Das selbe bei der MasterVolume

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: Kleines rechnen problem

  Alt 5. Mai 2011, 00:31
Willst du, dass die 1..16 Regler den Wert des Masterreglers nicht überschreiten?
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: Kleines rechnen problem

  Alt 5. Mai 2011, 00:33
Willst du, dass die 1..16 Regler den Wert des Masterreglers nicht überschreiten?
Ich möchte das die Regler ihren wert behalten aber komplett mit dem Masterregler verschoben werden.
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

Geändert von EWeiss ( 5. Mai 2011 um 00:40 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#10

AW: Kleines rechnen problem

  Alt 5. Mai 2011, 00:39
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.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz