[Delphi].DsPack,wywołanie funkcji

0

witam,próbuję jakoś zmienić pozycję filmu odtwarzanego za pomocą dspacka bez użycia wbudowanego tam timera.czy ktoś mógłby mi pomóc i powiedzieć jak zlikwidować pojawiający się błąd

//-------------------------------
var
CurrPos,dlug : Int64;
Value,value2, H, M, S : Integer;
MediaSeeking: IMediaSeeking;
begin
FilterGraph1.QueryInterface(IMediaSeeking, MediaSeeking);
MediaSeeking.GetDuration(dlug);
with MediaSeeking do
Begin
GetCurrentPosition(CurrPos);
Value := Trunc(CurrPos / 10000000);
Value2 := Trunc(dlug/ 10000000);
// BmpTrackBar1.MaxValue:=Value2;
SetPositions(Value+5,0,Value2,0);

w miejscu pierwszego zera wyskakuje błąd przy kompilacji
"Types of actual and formal var parameters must be identical"

albo naprowadzić na jakiś inny sposób który mógłby zadziałać

z góry dzięki

0

Hej, sorki nie chce mi sie analizowac twojego kodu, masz tutaj to co kiedys napisalem...
Funkcja do przesuwania filmu o iles do przodu (tyłu)...

procedure TMainForm.Przewin(czas: int64; var FilterGraph: TFilterGraph);
var
   MediaSeeking: IMediaSeeking;
   CurPos, EndPos2, caly: Int64;

begin
   if FilterGraph.Active then
   begin
      with mediaseeking do
      begin
         FilterGraph.QueryInterface(IMediaSeeking, MediaSeeking);
         GetDuration(EndPos2);

         caly := round(endpos2 / 10000000);
         Curpos := (caly - (caly - czas)) * 10000000;

         if boolean(MediaSeeking.IsUsingTimeFormat(TIME_FORMAT_BYTE)) then
         MediaSeeking.SetPositions(CurPos, AM_SEEKING_AbsolutePositioning, EndPos2, AM_SEEKING_NoPositioning)
         else
         begin
            MediaSeeking.SetTimeFormat(TIME_FORMAT_BYTE);
            MediaSeeking.SetPositions(CurPos, AM_SEEKING_AbsolutePositioning, EndPos2, AM_SEEKING_NoPositioning);
         end;
      end;
   end;
end;

Wywołanie:

if FilterGraph.Active then
  begin
     Przewin(SekundDoPrzodu+10,Filtergraph); 
end;

// "SekundDoPrzodu" u mnie zmienna w TrackBarTimer-> SekundDoPrzodu:=CzasWSekundy(strtotime(Format('%2.2d:%2.2d:%2.2d', [H, M, S])));,
  Funkcja CzasWSekundy zmienia TDateTime->Sekundy(Integer), czyli po prostu podajesz jaki jest obecnie czas i odejmujesz ile tam chcesz (teraz 10)

Hmm, to działa ;)
Pozdr, pepe

1 użytkowników online, w tym zalogowanych: 0, gości: 1