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 3 von 3     123   
Benutzerbild von Aphton
Aphton

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

AW: Kleines rechnen problem

  Alt 5. Mai 2011, 01:25
Ähm dann positiniere den Masterregler neu vor jedem Abort =\
Das dürftest du aber schon selber hinkriegen!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#22

AW: Kleines rechnen problem

  Alt 5. Mai 2011, 01:31
Ähm dann positiniere den Masterregler neu vor jedem Abort =\
Das dürftest du aber schon selber hinkriegen!
Jo denk ich auch
Muss ja nur den Slider mit dem höchsten wert ermitteln
minus der Maximalen value vom MasterRegler.

Und diesen dann einen neuen Max wert übergeben.

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#23

AW: Kleines rechnen problem

  Alt 5. Mai 2011, 01:50
Habe es jetzt mal umgesetzt.
Delphi-Quellcode:
        ID_TRACK_MASTERVOL:
        begin
          Difference := SKAERO_GetTrackValue(SKAERO_GetMainItem(MainHandle, wp)) - oldMasterVolume;
          oldMasterVolume := SKAERO_GetTrackValue(SKAERO_GetMainItem(MainHandle, wp));

          for IntI := 0 to 15 do
          begin
            if Sign(Difference) = 1 then
            begin
              if Volume[IntI] = 100 then
                Abort;
            end else
            if Volume[IntI] = 0 then
              Abort;
          end;

          for IntI := 0 to 15 do
          begin
            Volume[IntI] := Max(Min(Volume[IntI] + Difference, 100), 0);
            SKAERO_SetTrackValue(SKAERO_GetMainItem(MainHandle, ID_VOLUME_FIRST + IntI), Volume[IntI]);
          end;
        end;
bekomme aber bei Abort ein EAbort Exception..
Ansonsten funktioniert es Hervorragend

gruss

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

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

AW: Kleines rechnen problem

  Alt 5. Mai 2011, 01:59
Abort ist verknüpft mit dem Vcl-Message Handler.
Ich schätze mal, du arbeitest Non-Vcl.

Verwende statt ein Abort folgendes
Delphi-Quellcode:
begin
  SKAERO_SetTrackValue(SKAERO_GetMainItem(MainHandle, wp), SKAERO_GetTrackValue(SKAERO_GetMainItem(MainHandle, wp)-Difference);
  Exit;
end;
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#25

AW: Kleines rechnen problem

  Alt 5. Mai 2011, 02:05
Abort ist verknüpft mit dem Vcl-Message Handler.
Ich schätze mal, du arbeitest Non-Vcl.

Verwende statt ein Abort folgendes
Delphi-Quellcode:
begin
  SKAERO_SetTrackValue(SKAERO_GetMainItem(MainHandle, wp), SKAERO_GetTrackValue(SKAERO_GetMainItem(MainHandle, wp)-Difference);
  Exit;
end;
Jo non-vcl'e

So gehts mit ein paar einschränkungen aber das regel ich selbst.
Danke dir

Delphi-Quellcode:
        ID_TRACK_MASTERVOL:
        begin
          Difference := SKAERO_GetTrackValue(SKAERO_GetMainItem(MainHandle, wp)) - oldMasterVolume;
          oldMasterVolume := SKAERO_GetTrackValue(SKAERO_GetMainItem(MainHandle, wp));

          for IntI := 0 to 15 do
          begin
            if Sign(Difference) = 1 then
            begin
              if Volume[IntI] = 100 then
              begin
                SKAERO_SetTrackValue(SKAERO_GetMainItem(MainHandle, wp), Volume[IntI]);
                Result := 0;
                Exit;
              end;
            end else
            if Volume[IntI] = 0 then
            begin
              SKAERO_SetTrackValue(SKAERO_GetMainItem(MainHandle, wp), Volume[IntI]);
              Result := 0;
              Exit;
            end;
          end;

          for IntI := 0 to 15 do
          begin
            Volume[IntI] := Max(Min(Volume[IntI] + Difference, 100), 0);
            SKAERO_SetTrackValue(SKAERO_GetMainItem(MainHandle, ID_VOLUME_FIRST + IntI), Volume[IntI]);
          end;
        end;
gruss

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

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

AW: Kleines rechnen problem

  Alt 5. Mai 2011, 02:06
Nur so am Rande, die letzte Lösung, die ich gepostet habe ist so richtig XXX dirty.
So sollte man das nicht machen!

Ich würde dafür direkt eine Klasse ableiten und das Verhalten dort definieren. Ich würd dafür sorgen, dass die Werte gar nicht erst gesetzt werden können, wenn nicht gesetzt werden darf!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#27

AW: Kleines rechnen problem

  Alt 5. Mai 2011, 02:13
Nur so am Rande, die letzte Lösung, die ich gepostet habe ist so richtig XXX dirty.
So sollte man das nicht machen!

Ich würde dafür direkt eine Klasse ableiten und das Verhalten dort definieren. Ich würd dafür sorgen, dass die Werte gar nicht erst gesetzt werden können, wenn nicht gesetzt werden darf!
Jo das ist immer so eine sache mit Klassen grundsätzlich gebe ich dir da recht.
Das problem ist nur das ich auf eine DLL zugreife um das Controll Trackbar zu bedienen.

Wenn ich einem User nur die DLL ohne Quelltext mitsende
kann er da nicht rumpfuschen und muss in dem Fall alles aus der MainUnit heraus regeln.

Dort jetzt dafür eine Klasse anlegen?
Für ein Controll was sich in einer Externen DLL befindet?

EDIT:
Irgendwie will das immer noch nicht.
Muss deinen Code nochmal anschauen.

Alle Trackbars ausgenommen die erste Volume[0] setzen sich alle auf
die Ausgangsposition zurück sobald ich den masterRegler anklicke.


gruss

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

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

AW: Kleines rechnen problem

  Alt 5. Mai 2011, 02:16
Ähm, warum nicht. Ich hab auch zb. ein paar Komponente für die Bass.dll geschrieben. Die Hauptfunktionalität bietet mir die Dll, die Klasse kapselt dies ab. Klappt wunderbar

Edit: In diesem Falle könntest du ihm die Dll und die Wrapper-Unit mit den angesprochenen Klassen schicken.
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#29

AW: Kleines rechnen problem

  Alt 5. Mai 2011, 02:22
Ähm, warum nicht. Ich hab auch zb. ein paar Komponente für die Bass.dll geschrieben. Die Hauptfunktionalität bietet mir die Dll, die Klasse kapselt dies ab. Klappt wunderbar

Edit: In diesem Falle könntest du ihm die Dll und die Wrapper-Unit mit den angesprochenen Klassen schicken.
Wollte damit sagen das es in diesen Fall besser wäre die Klasse in der DLL
zu erweitern das wäre dann sinnvoller als in der MainUnit rumzupfuschen.
Die frage wäre dann wie oft wird das vom User genutzt bzw.. Überhaupt genutz.

Zitat:
Ich hab auch zb. ein paar Komponente für die Bass.dll geschrieben.
Jo ich nur eine die Bass_vis.dll
Hab den Support aber eingestellt.

Edit:
Jetzt funktioniert soweit alles.

gruss

Geändert von EWeiss ( 5. Mai 2011 um 04:37 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 20:05 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