AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Seltsamer Fehler bei dynamischem DLL-Laden
Thema durchsuchen
Ansicht
Themen-Optionen

Seltsamer Fehler bei dynamischem DLL-Laden

Ein Thema von HaCkAttaCk2001 · begonnen am 28. Jul 2004 · letzter Beitrag vom 29. Jul 2004
Antwort Antwort
Benutzerbild von HaCkAttaCk2001
HaCkAttaCk2001

Registriert seit: 4. Nov 2003
Ort: Chemnitz
95 Beiträge
 
#1

Seltsamer Fehler bei dynamischem DLL-Laden

  Alt 28. Jul 2004, 21:02
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:
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;
Das steht im "type" der Audio.pas:
Delphi-Quellcode:
TAOpenVoices = function(var nVoices: Integer) : Integer; stdcall;

function AOpenVoices(var nVoices: Integer): Integer;
Und so verwendet es das eigentliche Hauptprogramm (die Audio.pas ist in den uses eingebunden):
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:
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.
Support bacteria! They are the only culture some people have...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Seltsamer Fehler bei dynamischem DLL-Laden

  Alt 29. Jul 2004, 20:20
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...
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz