Announcement

Collapse
No announcement yet.

Dll-Handle nicht erreichbar , was mache ich falsch?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dll-Handle nicht erreichbar , was mache ich falsch?

    Hallo ihr Tüftler, die Anweisung "LoadLibrary(pChar(CardsDllFn))" im unten angeführten Code ergibt bei mir immer 0 !! Was mache ich falsch? Ich verwende Win98 und Delphi6.

    In der Hoffnung auf Antwort MFG Hans

    var
    Form1: TForm1;

    CardsDll:Cardinal;

    const

    CardsDllFile='CARDS.DLL';

    implementation

    {$R *.dfm}

    Function GetSystemDir:String;

    var SysDir:PChar;

    begin

    GetMem(SysDir,MAX_PATH);

    Try

    GetSystemDirectory(SysDir,MAX_PATH);

    Result:=string(Sysdir);

    Finally

    if Assigned(SysDir) then FreeMem(SysDir,MAX_PATH)

    end

    end;

    procedure TForm1.FormCreate(Sender: TObject);

    var CardsDllFn: TFileName;

    begin

    CardsDllFn:=IncludeTrailingPathDelimiter(GetSystem Dir)+CardsDllFile;

    CardsDll:=LoadLibrary(pChar(CardsDllFn));

    Label1.Caption:=IntToStr(CardsDll)

    end;

  • #2
    ruf mal nach LoadLibrary() die procedure SysUtils.RaiseLastWin32Error auf. Ich nehme an das CARDS.DLL eine 16Bit Dll ist, du solltest mal CARDS32.DLL probieren

    Comment


    • #3
      Besser ist auch "CardsDll: THandle;". Wer die Typen beachtet macht weniger Fehler

      Comment


      • #4
        Hallo Leute, danke für Eure prompten Vorschläge.

        1. Cards32.dll gibt es ( bei mir) nicht, weder in W98 noch in W2K.

        2. Und nun der Hammer: auf W2K funktioniert der gleiche Code problemlos und ich erhalte auch ein richtiges Handle und kann die Bilder anschauen.

        3. Wenn ich wieder auf W98 bin, werde ich SysUtils.RaiseLastWin32Error ausprobieren und mich nochmals melden.

        Vorerst Dank und Grüße Han

        Comment


        • #5
          Moin Johann,<br>
          <br>
          das der Code unter W2K funktioniert ist nicht so verwunderlich.<br>
          Dort gibt es diese Datei, und wenn ich nicht irre, ist es auch eine 32-Bit Version.<br>
          <br>
          Ciao<br>
          Chri

          Comment


          • #6
            Nochmals Dank für Eure Hilfe.
            Bei W98 ist tatsächlich eine 16Bit Version der CARDS.DLL dabei, habs mit Datei/Schnellansicht gesehen.
            Die Procedure SysUtils.RaiseLastWin32Error ergibt mit der 16Bit Version folgende Fehlermeldung:
            Systemfehler. Code 31
            Ein an das System angeschlossenes Gerät funktioniert nicht.

            Nun drängt sich mir die Frage auf, wie kann ich programmgesteuert erfahren, ob ich ein 16Bit- oder 32Bit-Modul anspreche?

            Dank für jeden Tip und frohe Ostern aus dem sonnigen Südtirol von Hans

            Comment

            Working...
            X