AGB  ·  Datenschutz  ·  Impressum  







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

Trackbar/Zeit

Ein Thema von Nils_13 · begonnen am 10. Dez 2004 · letzter Beitrag vom 28. Dez 2004
 
Wishmaster

Registriert seit: 14. Sep 2002
Ort: Steinbach, MB, Canada
301 Beiträge
 
Delphi XE2 Architect
 
#34

Re: Trackbar/Zeit

  Alt 27. Dez 2004, 23:04
Hi Nils_13

Erstmal was stimmt mit meinem Code nicht?

2. warum Kreierst du den hFileStream 2 mall 1.mit dem Timer dann mit tblMousUp? sobald du tblMousUp betätigst setzt du Automatisch alle auf 0!


Und warum benutzt du einmall Channel und einmall hFileStream? Woher kommt Channel?

Delphi-Quellcode:
  hFileStream := BASS_StreamCreateFile(...........)

  TrackPos := BASS_ChannelGetPosition(hFileStream);
  BASS_ChannelSetPosition(channel, tb1.Position); <= // Woher kommt Channel?
  BASS_StreamPlay(channel, false, 0); <= // Woher kommt Channel?

Versuche es mall mit
Delphi-Quellcode:
  Private
   hFileStream : HSTREAM; // HSTREAM = DWORD;
oder
  hFileStream : DWORD;
oder
 Channel : DWORD
danach rechne alles in MilliSekunden um! Anschließend berechne die Aktuelle PlayPosition! Wen du das geschafft hast dann kannst du auch die Position ändern!

Feileicht bin ich blind oder total verblödet aber wo steht bei deinem Code das Min und Max deiner Trackbar?


Siehe Code unten!

// BASS_ChannelGetPosition = Position in bytes!
// BASS_ChannelBytes2Seconds = MilliSekunden!


Dein hFileStream heißt bei mir Channel!
Delphi-Quellcode:
{---------------------------------  SongPos  ----------------------------------}

procedure TAudioEngine.Set_SongPos(SongPos : Integer); // SongPos = MilliSekunden
begin
    SongPos := BASS_ChannelSeconds2Bytes(Channel, SongPos / 1000);
    BASS_ChannelSetPosition(Channel, trunc(SongPos));
end;

function TAudioEngine.Get_SongPos: Integer; // = MilliSekunden
var SongPos : QWORD;
    MilliSec : Integer;
    FloatPos : FLOAT;
begin
    SongPos := BASS_ChannelGetPosition(Channel);
    FloatPos:= BASS_ChannelBytes2Seconds(Channel, SongPos);
    MilliSec:= Trunc(1000 * FloatPos);
 if MilliSec < 0 then
    MilliSec:= 0;
 if (PlayerState = ENGINE_STOP) or (PlayerState = ENGINE_SONG_END) then
     Result := 0
   else
  Result := MilliSec;
end;

{-------------------------------- Song Length ---------------------------------}

function TAudioEngine.Get_SongLen : Integer ; // = MilliSekunden
var MilliSec : Integer;
    FloatPos : FLOAT;
begin
    FloatPos := BASS_ChannelBytes2Seconds(Channel, SongLength);
    MilliSec := Trunc(1000 * FloatPos);
 if (MilliSec <= 0) then
    MilliSec := 0;
    result := MilliSec;
end;
Delphi-Quellcode:
  private
  Scroling : boolean;
  AudioPlayer : TAudioEngine;


procedure TMain_Form.FormCreate(Sender: TObject);
begin
AudioPlayer:= TAudioEngine.Create(Application.Handle);
end;


// Zeigt die aktuelle PlayPosition an!
procedure TMain_Form.Slider_TimerTimer(Sender: TObject);
var len : integer;
begin
 with AudioPlayer do
  begin
    label1.Caption:= AudioPlayer.Get_CPU;

     Len:= Get_SongLen;
  if Len <= 0 then
   begin
    Slider.Position:= 0;
    exit;
  end;

  if Scroling = false then // Slider
     Slider.Position:= trunc((Slider.MaxValue / Len) * Get_SongPos + 0.1);
   end;
end;

procedure TMain_Form.SliderMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Scroling:= true;
end;

procedure TMain_Form.SliderMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  with AudioPlayer do
    begin
    Set_SongPos(Trunc(Get_SongLen * slider.Position / Slider.MaxValue + 0.1));
    Scroling:= false;
  end
end;
  Mit Zitat antworten Zitat
 


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