Błąd w skrypcie VB

Błąd w skrypcie VB
Piotr Szewczyk
  • Rejestracja:około 7 lat
  • Ostatnio:około 7 lat
  • Postów:4
0

Witam,
otóż próbuj uzyskać efekt echo w Windows Media Player. Poszukałem troche w necie i znalazłem ten kod:
Public Structure TEchoEffect
Public nLeftDelay As Integer
Public nLeftSrcVolume As Integer
Public nLeftEchoVolume As Integer
Public nRightDelay As Integer
Public nRightSrcVolume As Integer
Public nRightEchoVolume As Integer
End Structure

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim effect(2) As TEchoEffect

    effect(0).nLeftDelay = 2000
    effect(0).nLeftSrcVolume = 50
    effect(0).nLeftEchoVolume = 30
    effect(0).nRightDelay = 2000
    effect(0).nRightSrcVolume = 50
    effect(0).nRightEchoVolume = 30

    effect(1).nLeftDelay = 30
    effect(1).nLeftSrcVolume = 50
    effect(1).nLeftEchoVolume = 30
    effect(1).nRightDelay = 30
    effect(1).nRightSrcVolume = 50
    effect(1).nRightEchoVolume = 30

    AxWindowsMediaPlayer1.Ctlcontrols.SetEchoParam(effect, 2)
End Sub

Gdy klikam na przycisk, powinienem uzyskać efekt echo, ale zamiast tego wyskakuje błąd:
System.MissingMemberException: „Nie odnaleziono publicznego członka SetEchoParam dla typu IWMPControls3.”

Pomocy!

Manuel.Artificer
Manuel.Artificer
  • Rejestracja:ponad 7 lat
  • Ostatnio:około rok
  • Postów:177
0

Po prostu musiałeś coś namieszać. Wrzuć link skąd masz ten kod. Co do wyjątku no to masz info, że po prostu dla tego typu nie ma takiej metody jak SetEchoParam. Wystarczy spojrzeć do dokumentacji i widać, że nie ma, wgl. tam składowe są pisane z małej.

edytowany 2x, ostatnio: Manuel.Artificer
Piotr Szewczyk
  • Rejestracja:około 7 lat
  • Ostatnio:około 7 lat
  • Postów:4
0

No właśnie jest, ponieważ nie wywala błedu podczas pisania kodu, tylko dopiero podczas kompilacji. Jeśi napiszesz np. Button1.PlayAudio no to podkreśli ci błąd, nie? Jeśli sie myle to mnie popraw jbc.

Manuel.Artificer
Manuel.Artificer
  • Rejestracja:ponad 7 lat
  • Ostatnio:około rok
  • Postów:177
0

No to w takim razie poprawiam. Wpisz sobie taki kod w tej Twojej metodzie dla buttona

Kopiuj
AxWindowsMediaPlayer1.Ctlcontrols.Piotr_Szewczyk()

i zobacz czy Ci coś podkreśli czy nie i czy się skompiluje. (Kurcze wychodzi na to, że jest taka metoda Piotr_Szewczyk :) )

"nie wywala błedu podczas pisania kodu, tylko dopiero podczas kompilacji". Czy aby na pewno podczas kompilacji? Nie sądzę. No to teraz pytanie czym jest kompilacja, a czym uruchomienie programu.

Marcin.Miga
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 22 godziny
  • Postów:2792
0

Na mój gust to niemożliwe jest, byś do standardowej kontrolki musiał deklarować strukturę, którą później przekażesz jako parametr. Ona powinna być w tej bibliotece. Coś skopałeś. Pewnie coś z sourceforge chciałeś użyć...

Piotr Szewczyk
  • Rejestracja:około 7 lat
  • Ostatnio:około 7 lat
  • Postów:4
0

Właśnie nie. Dodałem Windows Media Plaayer z biblioteki .NET

Piotr Szewczyk
  • Rejestracja:około 7 lat
  • Ostatnio:około 7 lat
  • Postów:4
0

A co do tego @Manuel.Artificer
Miałeś racje :)

Manuel.Artificer
Manuel.Artificer
  • Rejestracja:ponad 7 lat
  • Ostatnio:około rok
  • Postów:177
0

Nieistniejące metody przechodzące kompilację, samo generujące się struktury, bo przecież dodałeś tylko kontrolkę WMP :) Po prostu magia :)
Co do metody SetEchoParam no to tak jak mogłeś zauważyć nie istnieje w tej bibliotece. Pytanie dlaczego nic nie podkreśla i przechodzi kompilację? Ano dlatego, że w tym przypadku mamy do czynienia z typowaniem dynamicznym (wyjątek na to wskazuje). Po prostu kompilator pomija tą linijkę i dopiero w trakcie działania programu do akcji wkracza DLR, które próbuje dopasować odpowiedni typ, a jeżeli się to nie uda to rzuca wyjątek.

Jak już zakładasz wątek i chcesz uzyskać jakąś pomoc no to należałoby odpowiadać na zadawane pytania m.in. skąd masz ten kod, bo przecież napisałem żebyś wrzucił link. Jeżeli sam go zmontowałeś korzystając z różnych źródeł no to należałoby o tym napisać, a nie odpowiadać mi, że ta metoda istnieje, bo przecież nic nie podkreśla. To Tobie powinno zależeć, żeby uzyskać odpowiedź, a wychodzi na to, że to Ciebie trzeba by było ciągać za język żebyś coś więcej powiedział.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.