![]() |
Seltsamer Fehler bei dynamischem DLL-Laden
Hi @ all.
Manche erinnern sich vielleicht noch über meine letzte Frage über dynamische DLL-Einbindung. Nun, ich habe alle Prozeduren jetzt erfolgreich eingebunden und alles noch mehrmals nach Schreibfehlern etc. abgecheckt, aber ich kann mein Projekt nicht kompilieren, weil Delphi den Fehler: "Die Typen der tatsächlichen und formalen Var-Paramter müssen übereinstimmen" bringt. So sieht der dynamisch Ladende Teil in der Audio.pas aus:
Delphi-Quellcode:
Das steht im "type" der Audio.pas:
function AOpenVoices(var nVoices: Integer): Integer;
var AOpenVoices: TAOpenVoices; Handle: THandle; begin Handle:=LoadLibrary(PChar(ExtractFilePath(ParamStr(0))+'AUDIOW32.DLL')); if Handle <> 0 then begin @AOpenVoices := GetProcAddress(Handle, 'AOpenVoices'); if @AOpenVoices <> nil then begin result:=AOpenVoices(nVoices); end; FreeLibrary(Handle); end; end;
Delphi-Quellcode:
Und so verwendet es das eigentliche Hauptprogramm (die Audio.pas ist in den uses eingebunden):
TAOpenVoices = function(var nVoices: Integer) : Integer; stdcall;
function AOpenVoices(var nVoices: Integer): Integer;
Delphi-Quellcode:
procedure TMainForm.SetState(AState: TPlayerState);
begin if (State = psIdle) and (AState = psPaused) and Assigned(Module) then begin AOpenVoices(Module^.nTracks); APlayModule(Module); APauseModule; State := psPaused; end //...etc. Die ursprüngliche procedur in Audio.pas sah so aus:
Delphi-Quellcode:
function AOpenVoices(nVoices: Integer): Integer; stdcall; external 'AUDIOW32.DLL';
Wo liegt der Fehler?! Ich habe an den Variablen-Deklarationen etc. nichts verändert! C ya. |
Re: Seltsamer Fehler bei dynamischem DLL-Laden
also ich hab mir mal die funktion genommen und versucht zu compilieren, funktioniert auch wunderbar. Den Aufruf kann ich allerdings nicht probieren da ich nicht weiß wie du "Module" definiert hast, also von welchem Typ es ist und wie der Typ declariert ist. In welcher zeile kommt der Fehler?
das einzige was bei mir ist: [Warning] Unit1.pas(40): Return value of function 'AOpenVoices' might be undefined Das solltest du noch beseitigen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 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