Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Invalid pointer operation (https://www.delphipraxis.net/15544-invalid-pointer-operation.html)

Borti 30. Jan 2004 16:19


Invalid pointer operation
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!
Könnt Ihr mir mal wieder aus der Patsche helfen? Ich hab vor einiger Zeit ein paar pas-Dateien von einem Freund erhalten. Diese Dateien sollten einen Treiber für den Zugriff auf den LPT-Port darstellen. Das Projekt zu einer Exe kompilieren klappt, zu einer dll auch, aber wenn ich dann die dll in ein anderes Programm einbinde krieg ich die Meldung „Invalid pointer operation“! ich hab keine Ahnung, was da falsch sein könnte! Ich hab das gesamte Projekt zum Erstellen der dll mal angehängt. Wär’ nett, wenn Ihr es euch mal anschauen könntet.
Danke,
Borti

Borti 2. Feb 2004 13:48

Re: Invalid pointer operation
 
Kann mir denn keiner von euch helfen? Ich bin schon fast am Verzweifeln! :cry:

BluesKid 2. Feb 2004 14:50

Re: Invalid pointer operation
 
Moin moin

Wann genau kommt der Fehler ?


Wenn du versucht das Projekt zu compilieren oder beim Aufruf von "Open_Driver" aus der DLL ??

schönen Gruß :cheers:

Sam

Borti 2. Feb 2004 16:53

Re: Invalid pointer operation
 
Puh, bin ich erleichtert, dass sich endlich mal wer der Sache annimt :firejump:
Die meldung erscheint nur, wenn ich die function Readdata aufrufe. Open_Driver und Close_Driver funktionieren einwandfrei.
Gruß,
Borti

BluesKid 3. Feb 2004 07:21

Re: Invalid pointer operation
 
Moin

Also...bis Readdata komm ich noch gar nich, da er bei open_driver ne Datei names 'WINDRVR6', bzw. das handle auf diese Datei sucht. Die war leider nich in deinem Archiv dabei...

Wäre gut wenn du die mal hochladen könntest :wink:


schönen Gruß

Sam

Borti 3. Feb 2004 14:16

Re: Invalid pointer operation
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ach du meine Güte! davon hör ich zum erten mal, dass man die braucht. hab einfach alles mit dem namen WINDRVR6 hochgeladen

BluesKid 4. Feb 2004 08:03

Re: Invalid pointer operation
 
Moin moin

So, also hab jetzt mal folgendes gemacht:

die Funktion Readdata sieht in der DLL bei mir jetzt so aus:

Delphi-Quellcode:
function Readdata:Integer;stdcall;
begin
 result:=treiber_readdata(hTreiber);
end;
Die Funktion gibt jetzt einen Integer-Wert zurück. Sprich das 'inttostr' musst du dann beim Aufrufen davor setzen..

Analog dazu die Einbindung:

Delphi-Quellcode:

unit Unit1;

interface

uses
  Windows, Messages,..

.
.

procedure Open_Driver;stdcall;
procedure Close_Driver;stdcall;
function Readdata:Integer;stdcall;



var
  Form1: TForm1;


implementation

{$R *.DFM}

procedure Open_Driver;stdcall; external 'treiber2_project.dll';
procedure Close_Driver;stdcall; external 'treiber2_project.dll';
function Readdata:Integer;stdcall; external 'treiber2_project.dll';

.
.
.
Auch hier von String auf Integer gewechselt, so hatte ich keine Fehlermeldung mehr...schau mal ob dir das hilft :zwinker:


schönen Gruß

Sam

Borti 4. Feb 2004 15:41

Re: Invalid pointer operation
 
Danke, es läuft :firejump:
hätt ich eigentlich auch drauf kommen müssen! :wall: :wall: :wall:
aber ich hab doch die formatireung vom integer zum string schon in der dll vorgenommen. wieso lief das nicht?
Danke,
Borti

BluesKid 5. Feb 2004 08:01

Re: Invalid pointer operation
 
Moin

Tja, gute Frage.. :oops:

Also ich hab folgendes gefunden:

Zitat:

Delphi Memory Allocation and Dynamic-Link Libraries

Borland's comments within a wizard-generated DLL project:
{ Important note about DLL memory management: ShareMem must be the first unit in your library's USES clause AND your project's (select Project-View Source) USES clause if your DLL exports any procedures or functions that pass strings as parameters or function results. This applies to all strings passed to and from your DLL--even those that are nested in records and classes. ShareMem is the interface unit to the BORLNDMM.DLL shared memory manager, which must be deployed along with your DLL. To avoid using BORLNDMM.DLL, pass string information using PChar or ShortString parameters. }

Den gesammten text gibts hier.

So, da das aber (keine Ahnung warum) nich funktioniert hat, hab ich dann einfach aus dem String deiner Funktion ein Integer gemacht.... :angle2:

very quick and bloody dirty .. :zwinker:


schönen Gruß

Sam

Borti 9. Feb 2004 12:29

Re: Invalid pointer operation
 
Das erklärt natürlich einiges!
Ich hab grad den Treiber auf einem NT-Netzwerk ausprobiert und bin nicht weit gekommen. Ich weiß nicht, ob es nun am Treiber liegt, oder ich einfach nicht alle rechte auf dem Netzwerk hab. Unter welchem Windows hast du denn den Treiber ausprobiert?
Danke,
Borti


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:06 Uhr.
Seite 1 von 2  1 2      

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