Pliczek na 4p DSPLAY.ZIP

0

http://4programmers.net/Delphi/Kody_źródłowe/Dsplay.zip
oto jest sobie taki plik, a w nim bardzo fajny plik tDSPlay.pas, ktorego to nie moge skompilowac na Delphi 5 Enterprise; takie cos mi sie pojawia:

[Error] tDSPlay.pas(818): Types of actual and formal var parameters must be identical
[Error] tDSPlay.pas(856): Types of actual and formal var parameters must be identical
[Fatal Error] tMain.pas(6): Could not compile used unit 'tDSPlay.pas'

Dokladnie chodzi o te linijke

while not StopEnum and (pEnum.Next(1, pFilter, pcFetched) = S_OK) do

zmienilem na:

      while not StopEnum do
      if pEnum.Next(1, pFilter, pcFetched) = S_OK then

i tez nie dziala najlepsze jest to, ze S_OK to nic innego jak:
z windows.pas

const
  { Success codes }
  S_OK    = $00000000;

a funkcja pEnum.Next zwraca wartosc HRESULT czyli (z system.pas)

type

  TObject = class;

  TClass = class of TObject;

  {$EXTERNALSYM HRESULT}
  HRESULT = type Longint;  { from WTYPES.H }

dla wyjasnienia czym jest pEnum.Next

 IEnumFilters = class(IUnknown)
    function Next(cFilters: ULONG; var ppFilter: IBaseFilter; var pcFetched: ULONG): HRESULT; virtual; stdcall; abstract;
    function Skip(cFilters: ULONG): HRESULT; virtual; stdcall; abstract;
    function Reset: HRESULT; virtual; stdcall; abstract;
    function Clone(var ppEnum: IEnumFilters): HRESULT; virtual; stdcall; abstract;
  end;

kto wie jak to ominac bo mnie prawa <ort>pienta </ort>swedzi :u

0

Proponuje czytac uwazniej komunikaty.

Nalezy zamienic deklaracje z pcFetched: longint; na pcFetched: ULONG;.

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