Hallo Dezipaitor, hallo Muetze1,
vielen Dank für Eure Antwort. Ich werde mich mal mit FastMM auseinandersetzen.
Mir ist noch folgendes aufgefallen: In einer neu in das Programm eingebauten Routinenen zum Auslesen eines USB-Messwertloggers werden die Daten folgendermaßen abgerufen:
Delphi-Quellcode:
...
interface
...
var
...
DataBuffer: ARRAY[0..7] OF LongInt;
...
implementation
{$R *.DFM}
PROCEDURE StartDevice; stdcall; external 'K8047d.dll';
PROCEDURE StopDevice; stdcall; external 'K8047d.dll';
PROCEDURE ReadData(Buffer:Pointer); stdcall; external 'K8047d.dll';
...
procedure TForm1.FormCreate(Sender: TObject);
begin
StartDevice;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
StopDevice;
end;
procedure auslesen(Sender: TObject);
var
p:pointer;
i:integer;
s:string;
begin
p:=@DataBuffer;
ReadData(p);
s:='';
for i:=0 to 5 do s:=s +inttostr(DataBuffer[i])+chr(9);
....
end;
Ich weis nicht, ob in diesem Fall new(p) und dispose (p) irgendwo in der externen
dll versteckt sind. Oder sind diese Prozeduren in diesem Fall nicht notwendig?
Müßte p nicht als ^DataBuffer definiert sein (am besten global)? Und dann hinter StartDevice New(p) und hinter StopDevice Dispose(p) eingefügt werden?
Ich werde mal in der Zwischenzeit diese Procedure ausklammern und gucken, was passiert.
Peter