Einzelnen Beitrag anzeigen

Benutzerbild von Danny92
Danny92

Registriert seit: 18. Aug 2014
55 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#15

AW: Mehrere WAV aus Resource gleichzeitig abspielen

  Alt 10. Aug 2017, 14:11
Ok das hab ich soweit verstanden.

Nun noch das letzte Problem: Die bass.dll wird ja noch verwendet. Die muss ich in die Resource als RCDATA mit einbinden zum kompilieren, was ich schon mal getan habe.
Wie kann ich nun zur Laufzeit auf diese zugreifen?

Ich hab schon einiges mit PBTMemoryModule ausprobiert, wo mir Delphi aber nicht wirklich weiterhilft.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  i: byte;
  ms: TMemoryStream;
  rs: TResourceStream;
  m_DLLDataSize: int64;
  mp_DllData: Pointer;
  btMM: PBTMemoryModule;
begin
  if 0 <> FindResource(hInstance, 'DllDatei', RT_RCDATA) then
  begin
    rs := TResourceStream.Create(hInstance, 'DllDatei', RT_RCDATA);
    ms := TMemoryStream.Create;
    try
      ms.LoadFromStream(rs);

      ms.Position := 0;
      m_DllDataSize := ms.Size;
      mp_DllData := GetMemory(m_DllDataSize);

      ms.Read(mp_DllData^, m_DllDataSize);
    finally
      ms.Free;
      rs.Free;
    end;
  end;
**btMM := BTMemoryLoadLibary(mp_DllData, m_DllDataSize);
**try
****if btMM = nil then Abort;
****@m_TestCallstd := BTMemoryGetProcAddress(btMM, 'TestCallstd');
****if @m_TestCallstd = nil then Abort;
****m_TestCallstd('Das ist ein DLL-Speicher Aufruf!');
**except
****Showmessage(Ein Fehler ist enstanden bei Aufruf der DLL : ' + BTMemoryGetLastError);
end;
if Assigned(btMM) then BTMemoryFreeLibrary(btMM);
end;
Sowas hab ich schon gefunden, Delphi kann mit PBTMemoryModule nix anfangen.

Kann mir da noch jemand helfen bitte?
  Mit Zitat antworten Zitat